103 lines
2.7 KiB
C
103 lines
2.7 KiB
C
|
/*++
|
||
|
Copyright (c) 1992 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
Program.c
|
||
|
|
||
|
Abstract:
|
||
|
This module contains the support for Windbg's program menu.
|
||
|
|
||
|
Author:
|
||
|
Ramon J. San Andres (ramonsa) 07-July-1992
|
||
|
|
||
|
Environment:
|
||
|
Win32, User Mode
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
#pragma hdrstop
|
||
|
|
||
|
#include "include\cntxthlp.h"
|
||
|
|
||
|
#define DEFAULT_WORKSPACE "Common Workspace"
|
||
|
#define CURRENT_WORKSPACE "Current Workspace"
|
||
|
|
||
|
// Workspace marked to be deleted.
|
||
|
typedef struct _WORKSPACE_TO_DELETE *PWORKSPACE_TO_DELETE;
|
||
|
typedef struct _WORKSPACE_TO_DELETE {
|
||
|
PWORKSPACE_TO_DELETE Next;
|
||
|
char WorkSpace[ MAX_PATH ];
|
||
|
} WORKSPACE_TO_DELETE;
|
||
|
|
||
|
// Program marked to be deleted.
|
||
|
typedef struct _PROGRAM_TO_DELETE *PPROGRAM_TO_DELETE;
|
||
|
typedef struct _PROGRAM_TO_DELETE {
|
||
|
PPROGRAM_TO_DELETE Next;
|
||
|
PWORKSPACE_TO_DELETE WorkSpaceToDelete;
|
||
|
BOOL DeleteAll;
|
||
|
char ProgramName[ MAX_PATH ];
|
||
|
} PROGRAM_TO_DELETE;
|
||
|
|
||
|
extern BOOL AutoTest;// External variables
|
||
|
|
||
|
// Exported variables
|
||
|
BOOL ExitingDebugger = FALSE;
|
||
|
|
||
|
// Global variables, for communication with dialogs.
|
||
|
BOOL DialogCancelled;
|
||
|
PPROGRAM_TO_DELETE ProgramToDeleteHead = NULL;
|
||
|
|
||
|
// Local prototypes
|
||
|
VOID FreeProgramToDelete ( VOID );
|
||
|
BOOL ProgramHookProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
|
||
|
// DIALOGS
|
||
|
BOOL ProgramHookProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||
|
{
|
||
|
static LPCHOOSEFONT Cf;
|
||
|
|
||
|
switch( message ) {
|
||
|
case WM_COMMAND:
|
||
|
switch( LOWORD( wParam )) {
|
||
|
case IDWINDBGHELP:
|
||
|
case pshHelp:
|
||
|
Dbg(WinHelp(hDlg, szHelpFileName, (DWORD) HELP_CONTEXT,(DWORD)ID_PROGOPEN_NEW_HELP));
|
||
|
return TRUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
|
||
|
// HELPER FUNCTIONS
|
||
|
|
||
|
|
||
|
VOID FreeProgramToDelete (VOID)
|
||
|
/*++
|
||
|
Routine Description:
|
||
|
Frees up memory used by the ProgramToDelete list
|
||
|
--*/
|
||
|
{
|
||
|
PPROGRAM_TO_DELETE ProgramToDelete;
|
||
|
PPROGRAM_TO_DELETE ProgramToDeleteTmp;
|
||
|
PWORKSPACE_TO_DELETE WorkSpaceToDelete;
|
||
|
PWORKSPACE_TO_DELETE WorkSpaceToDeleteTmp;
|
||
|
|
||
|
// Free all memory used by the deletion structures.
|
||
|
ProgramToDelete = ProgramToDeleteHead;
|
||
|
while ( ProgramToDelete ) {
|
||
|
// Free all workspace memory
|
||
|
WorkSpaceToDelete = ProgramToDelete->WorkSpaceToDelete;
|
||
|
while ( WorkSpaceToDelete ) {
|
||
|
WorkSpaceToDeleteTmp = WorkSpaceToDelete;
|
||
|
WorkSpaceToDelete = WorkSpaceToDelete->Next;
|
||
|
free( WorkSpaceToDeleteTmp );
|
||
|
}
|
||
|
|
||
|
ProgramToDeleteTmp = ProgramToDelete;
|
||
|
ProgramToDelete = ProgramToDelete->Next;
|
||
|
free( ProgramToDeleteTmp );
|
||
|
}
|
||
|
}
|