Windows2000/private/windbg64/windbg/program.c
2020-09-30 17:12:32 +02:00

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 );
}
}