/*++ Copyright (c) 1992 Microsoft Corporation Module Name: callswin.c Abstract: This module contains the main line code for display of calls window. Author: Wesley Witt (wesw) 6-Sep-1993 Environment: Win32, User Mode --*/ #include "precomp.h" #pragma hdrstop #define MAX_TASKS ((1024-sizeof(IOCTLGENERIC))/sizeof(TASK_LIST)) #include "include\cntxthlp.h" // kcarlos // BUGBUG - In a hurry. // BUGBUG - copy/pasted code. Place in a function and cleanup. Remove code duplication. DWORD GetProcessIdGivenName( PCSTR pszProcessName ) { DWORD i; CHAR buf[80]; LPSTR p; PIOCTLGENERIC pig; PTASK_LIST pTask; LPSTR fmt; DWORD dw; BOOL fReconnecting; if (ConnectDebugger(&fReconnecting) && NULL != (pig = (PIOCTLGENERIC) malloc((sizeof(TASK_LIST)*MAX_TASKS) + sizeof(IOCTLGENERIC)))) { //Load exclusion list char szExclusionList[MAX_MSG_TXT]; Dbg(LoadString(g_hInst, IDS_PROCESS_EXCLUSION_LIST, szExclusionList, sizeof(szExclusionList))); ZeroMemory( pig, (sizeof(TASK_LIST)*MAX_TASKS) + sizeof(IOCTLGENERIC) ); pig->ioctlSubType = IG_TASK_LIST; pig->length = sizeof(TASK_LIST)*MAX_TASKS; pTask = (PTASK_LIST)pig->data; pTask->dwProcessId = MAX_TASKS; OSDSystemService( LppdCur->hpid, NULL, (SSVC) ssvcGeneric, (LPV)pig, pig->length + sizeof(IOCTLGENERIC), &dw ); for (i=0; iioctlSubType = IG_TASK_LIST; pig->length = sizeof(TASK_LIST)*MAX_TASKS; pTask = (PTASK_LIST)pig->data; pTask->dwProcessId = MAX_TASKS; OSDSystemService( LppdCur->hpid, NULL, (SSVC) ssvcGeneric, (LPV)pig, pig->length + sizeof(IOCTLGENERIC), &dw ); 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_COMMAND: switch (LOWORD(wParam)) { case IDC_TL_TASK_LIST: if (LBN_DBLCLK != HIWORD(wParam)) { break; } // User Dbl clicked on an item. We fall through, and simulate a button press. case IDOK : lResult = SendDlgItemMessage( hDlg, IDC_TL_TASK_LIST, LB_GETCURSEL, 0, 0 ); SendDlgItemMessage( hDlg, IDC_TL_TASK_LIST, LB_GETTEXT, lResult, (LPARAM)buf ); buf[4] = 0; i = strtoul( buf, NULL, radix ); if (i == (DWORD)-1) { if (MessageBox( hDlg, "Are you sure that you want to attach to CSR?", "WinDbg Process Attach", MB_ICONASTERISK | MB_YESNO ) == IDNO) { EndDialog( hDlg, TRUE ); return TRUE; } } sprintf( buf, ".attach 0x%x", i ); p = (PSTR) malloc( strlen(buf)+16 ); strcpy( p, buf ); PostMessage( Views[cmdView].hwndClient, WU_LOG_REMOTE_CMD, TRUE, (LPARAM)p ); EndDialog( hDlg, TRUE ); return TRUE; case IDCANCEL: if(TmpLppdCur == NULL) { DisconnectDebuggee(); } EndDialog( hDlg, TRUE ); return TRUE; } } return FALSE; }