/*++ Copyright (c) 1992 Microsoft Corporation Module Name: kdopt.c Abstract: Author: Wesley Witt (wesw) 26-July-1993 Environment: Win32, User Mode --*/ #include "precomp.h" #pragma hdrstop #include "include\cntxthlp.h" typedef struct _KDBAUDRATE { DWORD dwBaudMask; DWORD dwBaudRate; } KDBAUDRATE, *LPKDBAUDRATE; typedef struct _COMPORTINFO { CHAR szSymName[16]; DWORD dwNum; DWORD dwSettableBaud; } COMPORT_INFO, *LPCOMPORT_INFO; COMPORT_INFO ComPortInfo[100]; DWORD MaxComPorts; DWORD CurComPort; DWORD KdCacheSizes[] = { 102400, 512000, 1024000, 1024000}; KDBAUDRATE KdBaudRates[] = { BAUD_075, 75, BAUD_110, 110, BAUD_150, 150, BAUD_300, 300, BAUD_600, 600, BAUD_1200, 1200, BAUD_1800, 1800, BAUD_2400, 2400, BAUD_4800, 4800, BAUD_7200, 7200, BAUD_9600, 9600, BAUD_14400, 14400, BAUD_19200, 19200, BAUD_38400, 38400, BAUD_56K, 56000, BAUD_57600, 57600, BAUD_128K, 128000, BAUD_115200, 115200, }; // Processor identification structures and functions typedef struct _KDPLATFORMS { MPT mpt; LPSTR lpszName; } KDPLATFORMS; KDPLATFORMS KdPlatforms[] = { { mptix86, "X86", }, //{ mptmips, "MIPS" }, { mptdaxp, "ALPHA" }, //{ mptntppc, "PPC" } { mptia64, "IA64" }, }; #define KdMaxPlatforms (sizeof(KdPlatforms)/sizeof(KDPLATFORMS)) #define KdMaxBaudRates (sizeof(KdBaudRates)/sizeof(KDBAUDRATE)) #define KdMaxCacheSizes (sizeof(KdCacheSizes)/sizeof(DWORD)) LPCSTR GetPlatformNameFromId( MPT mpt ) /*++ Routine Description Given the enum type it will return a constant pointer to the name of the platform. The text referenced by the pointer must not be changed. Arguments mpt - enum type of processors Return Value Success - Pointer to the text contained in KdPlatforms structure. DO NOT MODIFY. Failure - NULL. --*/ { int i; for (i=0; ihItemHandle, "windbg.hlp", HELP_WM_HELP, (DWORD_PTR)(LPVOID) HelpArray ); return TRUE; case WM_CONTEXTMENU: WinHelp ((HWND) wParam, "windbg.hlp", HELP_CONTEXTMENU, (DWORD_PTR)(LPVOID) HelpArray ); return TRUE; case WM_NOTIFY: switch (((NMHDR FAR *) lParam)->code) { case PSN_APPLY: { BOOL bEnabled = FALSE; int i; char szMisc[MAX_PATH]; PIOCTLGENERIC pig; // Transfer the options to global // Now start looking at the rest and determine what needs to // be updated bEnabled = (IsDlgButtonChecked(hwndDlg,ID_KD_ENABLE) != 0); if (bEnabled != g_contWorkspace_WkSp.m_bKernelDebugger) { g_contWorkspace_WkSp.m_bKernelDebugger = bEnabled; if (bEnabled) { g_Windbg_WkSp.SetCurrentProgramName(NT_KERNEL_NAME); } else { g_Windbg_WkSp.SetCurrentProgramName(g_Windbg_WkSp.m_pszNoProgramLoaded); } } bEnabled = (IsDlgButtonChecked(hwndDlg,ID_KD_GOEXIT) != 0); if (bEnabled != g_contKernelDbgPreferences_WkSp.m_bGoExit) { g_contKernelDbgPreferences_WkSp.m_bGoExit = bEnabled; } bEnabled = (IsDlgButtonChecked(hwndDlg,ID_KD_INITIALBP) != 0); if (bEnabled != g_contKernelDbgPreferences_WkSp.m_bInitialBp) { g_contKernelDbgPreferences_WkSp.m_bInitialBp = bEnabled; } i = (int) SendDlgItemMessage(hwndDlg, ID_KD_PORT, CB_GETCURSEL, 0, 0); g_contKernelDbgPreferences_WkSp.m_dwPort = ComPortInfo[i].dwNum; i = (int) SendDlgItemMessage(hwndDlg, ID_KD_BAUDRATE, CB_GETCURSEL, 0, 0); SendDlgItemMessage(hwndDlg, ID_KD_BAUDRATE, CB_GETLBTEXT, i, (LPARAM)szMisc); g_contKernelDbgPreferences_WkSp.m_dwBaudRate = strtoul(szMisc, NULL, 0); i = (int) SendDlgItemMessage(hwndDlg, ID_KD_CACHE, CB_GETCURSEL, 0, 0); g_contKernelDbgPreferences_WkSp.m_dwCache = KdCacheSizes[i]; GetDlgItemText(hwndDlg, ID_KD_PLATFORM, szMisc, sizeof(szMisc)); Dbg(GetPlatformIdFromName(szMisc, &(g_contKernelDbgPreferences_WkSp.m_mptPlatform) )); if (LptdCur && DebuggeeAlive()) { DWORD dwRet; FormatKdParams( szMisc ); pig = (PIOCTLGENERIC) malloc( strlen(szMisc) + 1 + sizeof(IOCTLGENERIC) ); if (!pig) { return FALSE; } pig->ioctlSubType = IG_DM_PARAMS; pig->length = strlen(szMisc) + 1; strcpy((LPSTR)pig->data,szMisc); OSDSystemService( LppdCur->hpid, LptdCur->htid, (SSVC) ssvcGeneric, (LPV)pig, strlen(szMisc) + 1 + sizeof(IOCTLGENERIC), &dwRet ); free( pig ); } EnableToolbarControls(); } return TRUE; } break; } return FALSE; }