|
|
1.1 ! root 1: ! 2: //==========================================================================// ! 3: // Includes // ! 4: //==========================================================================// ! 5: ! 6: #include "perfmon.h" ! 7: #include "utils.h" ! 8: #include "log.h" ! 9: #include "pmemory.h" // for MemoryXXX (malloc-like) routines ! 10: #include "perfdata.h" ! 11: #include "perfmops.h" ! 12: #include "system.h" // for SystemGet ! 13: #include "playback.h" // for PlayingBackLog & DataFromIndexPosition ! 14: #include "pmhelpid.h" // Help IDs ! 15: ! 16: //==========================================================================// ! 17: // External Data // ! 18: //==========================================================================// ! 19: ! 20: extern HWND hWndLogEntries ; ! 21: ! 22: BOOL ComputerChange ; ! 23: static PPERFDATA pPerfData ; ! 24: ! 25: ! 26: //==========================================================================// ! 27: // Local Functions // ! 28: //==========================================================================// ! 29: ! 30: ! 31: BOOL /* static */ LogComputerChanged (HDLG hDlg) ! 32: { // LogComputerChanged ! 33: PLOG pLog ; ! 34: HWND hWndObjects ; ! 35: PPERFSYSTEM pSysInfo; ! 36: DWORD iObjectType ; ! 37: DWORD iObjectNum ; ! 38: ! 39: pLog = LogData (hDlg) ; ! 40: hWndObjects = DialogControl (hDlg, IDD_ADDLOGOBJECT) ; ! 41: ! 42: if (!pPerfData) ! 43: { ! 44: LBReset (hWndObjects) ; ! 45: return FALSE ; ! 46: } ! 47: ! 48: SetHourglassCursor() ; ! 49: ! 50: pSysInfo = GetComputer (hDlg, ! 51: IDD_ADDLOGCOMPUTER, ! 52: TRUE, ! 53: &pPerfData, ! 54: &pLog->pSystemFirst) ; ! 55: ! 56: if (!pPerfData || !pSysInfo) ! 57: { ! 58: LBReset (hWndObjects) ; ! 59: SetArrowCursor() ; ! 60: return FALSE ; ! 61: } ! 62: else ! 63: { ! 64: LBLoadObjects (hWndObjects, ! 65: pPerfData, ! 66: pSysInfo, ! 67: pLog->dwDetailLevel, ! 68: NULL, ! 69: FALSE) ; ! 70: ! 71: iObjectNum = (DWORD) LBNumItems (hWndObjects) ; ! 72: for (iObjectType = 0 ; ! 73: iObjectType < iObjectNum ; ! 74: iObjectType++) ! 75: { // for ! 76: LBSetSelection (hWndObjects, iObjectType) ; ! 77: } // for ! 78: ! 79: } ! 80: ! 81: ComputerChange = FALSE ; ! 82: DialogEnable (hDlg, IDD_ADDLOGADD, TRUE) ; ! 83: ! 84: SetArrowCursor() ; ! 85: ! 86: return TRUE ; ! 87: } // LogComputerChanged ! 88: ! 89: ! 90: void /*static*/ OnLogDestroy (HDLG hDlg) ! 91: { // OnLogDestroy ! 92: ! 93: dwCurrentDlgID = 0 ; ! 94: ! 95: if (!PlayingBackLog ()) ! 96: MemoryFree (pPerfData) ; ! 97: ! 98: bAddLineInProgress = FALSE ; ! 99: } // OnLogDestroy ! 100: ! 101: ! 102: //==========================================================================// ! 103: // Message Handlers // ! 104: //==========================================================================// ! 105: ! 106: ! 107: void /* static */ OnInitAddLogDialog (HDLG hDlg) ! 108: { // OnInitAddLogDialog ! 109: TCHAR szRemoteComputerName[MAX_COMPUTERNAME_LENGTH + 3] ; ! 110: ! 111: bAddLineInProgress = TRUE ; ! 112: if (PlayingBackLog()) ! 113: { ! 114: pPerfData = DataFromIndexPosition (&(PlaybackLog.StartIndexPos), NULL) ; ! 115: GetPerfComputerName(pPerfData, szRemoteComputerName); ! 116: DialogSetString (hDlg, IDD_ADDLOGCOMPUTER, szRemoteComputerName); ! 117: DialogEnable (hDlg, IDD_ADDLOGELLIPSES, TRUE) ; ! 118: } ! 119: else ! 120: { ! 121: pPerfData = MemoryAllocate (STARTING_SYSINFO_SIZE) ; ! 122: DialogSetString (hDlg, IDD_ADDLOGCOMPUTER, LocalComputerName) ; ! 123: DialogEnable (hDlg, IDD_ADDLOGELLIPSES, FALSE) ; ! 124: } ! 125: ! 126: LogComputerChanged (hDlg) ; ! 127: ! 128: DialogEnable (hDlg, IDD_ADDLOGOBJECTTEXT, TRUE) ; ! 129: DialogEnable (hDlg, IDD_ADDLOGOBJECT, TRUE) ; ! 130: ! 131: WindowCenter (hDlg) ; ! 132: ! 133: dwCurrentDlgID = HC_PM_idDlgEditAddToLog ; ! 134: ! 135: } // OnInitAddLogDialog ! 136: ! 137: ! 138: void /* static */ OnLogComputer (HDLG hDlg) ! 139: /* ! 140: Effect: Put up the select Domain/Computer dialog. Allow the user ! 141: to select the computer. Check for user entering a domain ! 142: instead. Place the selected computer in the readonly ! 143: edit box. ! 144: */ ! 145: { // OnLogComputer ! 146: TCHAR szComputer [MAX_SYSTEM_NAME_LENGTH + 1] ; ! 147: ! 148: if (ChooseComputer (hDlg, szComputer)) ! 149: { ! 150: DialogSetString (hDlg, IDD_ADDLOGCOMPUTER, szComputer) ; ! 151: LogComputerChanged (hDlg) ; ! 152: } // if ! 153: } // OnLogComputer ! 154: ! 155: ! 156: ! 157: void /* static */ OnAddToLog (HDLG hDlg) ! 158: /* ! 159: Effect: Perform all actions needed when the user clicks on ! 160: the add button. In particular, determine if the required ! 161: fields of the dialog have valid values. If so, go ahead ! 162: and add a LOGENTRY record in the log. If the computer ! 163: being logged is not already logged, add a LOGSYSTEMENTRY ! 164: as well. ! 165: ! 166: Assert: We have valid values for computer and object, since we ! 167: always control these fields. ! 168: */ ! 169: { // OnAddToLog ! 170: TCHAR szComputer [MAX_SYSTEM_NAME_LENGTH + 1] ; ! 171: TCHAR szObjectType [PerfObjectLen + 1] ; ! 172: DWORD iObjectType ; ! 173: DWORD iObjectNum ; ! 174: HWND hWndObjectTypes ; ! 175: PPERF_OBJECT_TYPE pObject ; ! 176: PLOG pLog ; ! 177: ! 178: pLog = LogData (hWndLog) ; ! 179: ! 180: DialogText (hDlg, IDD_ADDLOGCOMPUTER, szComputer) ; ! 181: ! 182: if (ComputerChange) ! 183: { ! 184: // if computer has changed, don't want to continue ! 185: // because the perfdata may have changed ! 186: LogComputerChanged (hDlg) ; ! 187: return ; ! 188: } ! 189: ! 190: hWndObjectTypes = DialogControl(hDlg, IDD_ADDLOGOBJECT) ; ! 191: ! 192: iObjectNum = (DWORD) LBNumItems (hWndObjectTypes) ; ! 193: ! 194: LBSetRedraw (hWndLogEntries, FALSE) ; ! 195: ! 196: for (iObjectType = 0 ; ! 197: iObjectType < iObjectNum ; ! 198: iObjectType++) ! 199: { // for ! 200: // NOTE: for now, we don't check for duplicate lines ! 201: if (LBSelected (hWndObjectTypes, iObjectType)) ! 202: { // if ! 203: LBString (hWndObjectTypes, iObjectType, szObjectType) ; ! 204: pObject = (PPERF_OBJECT_TYPE) LBData (hWndObjectTypes, iObjectType) ; ! 205: ! 206: // eliminate duplicates here ! 207: if (LogFindEntry(szComputer, pObject->ObjectNameTitleIndex) == ! 208: LOG_ENTRY_NOT_FOUND) ! 209: { ! 210: LogAddEntry (hWndLogEntries, ! 211: szComputer, ! 212: szObjectType, ! 213: pObject->ObjectNameTitleIndex) ; ! 214: } ! 215: } // if ! 216: } // for ! 217: ! 218: LBSetRedraw (hWndLogEntries, TRUE) ; ! 219: ! 220: DialogSetText (hDlg, IDD_ADDLOGDONE, IDS_DONE) ; ! 221: ! 222: if (pLog->iStatus == iPMStatusCollecting) ! 223: { ! 224: LogWriteSystemCounterNames (hWndLog, pLog) ; ! 225: } ! 226: } // OnAddToLog ! 227: ! 228: ! 229: ! 230: int FAR WINAPI AddLogDlgProc (HWND hDlg, WORD msg, ! 231: WPARAM wParam, LONG lParam) ! 232: { // AddLogDlg ! 233: switch(msg) ! 234: { ! 235: case WM_INITDIALOG: ! 236: OnInitAddLogDialog (hDlg) ; ! 237: return(TRUE); ! 238: ! 239: case WM_COMMAND: ! 240: switch(LOWORD(wParam)) ! 241: { ! 242: // case IDD_OK: ! 243: case IDD_CANCEL: ! 244: EndDialog(hDlg,0); ! 245: return(TRUE); ! 246: ! 247: case IDD_OK: ! 248: case IDD_ADDLOGADD: ! 249: SetHourglassCursor() ; ! 250: OnAddToLog (hDlg) ; ! 251: SetArrowCursor() ; ! 252: break ; ! 253: ! 254: case IDD_ADDLOGDONE: ! 255: EndDialog (hDlg, 0) ; ! 256: break ; ! 257: ! 258: case IDD_ADDLOGELLIPSES: ! 259: SetHourglassCursor() ; ! 260: OnLogComputer (hDlg) ; ! 261: SetArrowCursor() ; ! 262: break ; ! 263: ! 264: ! 265: case IDD_ADDLOGCOMPUTER: ! 266: if (HIWORD (wParam) == EN_UPDATE) ! 267: { ! 268: ComputerChange = TRUE ; ! 269: DialogEnable (hDlg, IDD_ADDLOGADD, FALSE) ; ! 270: } ! 271: else if (HIWORD (wParam) == EN_KILLFOCUS) ! 272: { ! 273: if (ComputerChange) ! 274: { ! 275: TCHAR szComputer [MAX_SYSTEM_NAME_LENGTH + 3] ; ! 276: ! 277: DialogText (hDlg, IDD_ADDLOGCOMPUTER, szComputer) ; ! 278: LogComputerChanged (hDlg) ; ! 279: } ! 280: } ! 281: break ; ! 282: ! 283: case IDD_ADDLOGHELP: ! 284: CallWinHelp (dwCurrentDlgID) ; ! 285: break ; ! 286: ! 287: default: ! 288: break; ! 289: } ! 290: break; ! 291: ! 292: case WM_DESTROY: ! 293: OnLogDestroy (hDlg) ; ! 294: break ; ! 295: ! 296: default: ! 297: break; ! 298: } ! 299: ! 300: return (FALSE); ! 301: } // AddLogDlgProc ! 302: ! 303: ! 304: ! 305: BOOL AddLog (HWND hWndParent) ! 306: { // AddLog ! 307: if (DialogBox (hInstance, idDlgAddLog, ! 308: hWndParent, (DLGPROC) AddLogDlgProc)) ! 309: { // if ! 310: return (TRUE) ; ! 311: } // if ! 312: return (FALSE) ; ! 313: } // AddLog
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.