INT_PTR CALLBACK OptionsDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEETWMONITOR), PhGetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR) ? BST_CHECKED : BST_UNCHECKED); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR), PhGetIntegerSetting(SETTING_NAME_ENABLE_GPU_MONITOR) ? BST_CHECKED : BST_UNCHECKED); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLESYSINFOGRAPHS), PhGetIntegerSetting(SETTING_NAME_ENABLE_SYSINFO_GRAPHS) ? BST_CHECKED : BST_UNCHECKED); } break; case WM_DESTROY: { PhSetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEETWMONITOR)) == BST_CHECKED); PhSetIntegerSetting(SETTING_NAME_ENABLE_GPU_MONITOR, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR)) == BST_CHECKED); PhSetIntegerSetting(SETTING_NAME_ENABLE_SYSINFO_GRAPHS, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLESYSINFOGRAPHS)) == BST_CHECKED); } break; } return FALSE; }
INT_PTR CALLBACK OptionsDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { SetDlgItemInt(hwndDlg, IDC_PINGPACKETLENGTH, PhGetIntegerSetting(SETTING_NAME_PING_SIZE), FALSE); SetDlgItemInt(hwndDlg, IDC_MAXHOPS, PhGetIntegerSetting(SETTING_NAME_TRACERT_MAX_HOPS), FALSE); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLE_EXTENDED_TCP), PhGetIntegerSetting(SETTING_NAME_EXTENDED_TCP_STATS) ? BST_CHECKED : BST_UNCHECKED); } break; case WM_DESTROY: { PhSetIntegerSetting(SETTING_NAME_PING_SIZE, GetDlgItemInt(hwndDlg, IDC_PINGPACKETLENGTH, NULL, FALSE)); PhSetIntegerSetting(SETTING_NAME_TRACERT_MAX_HOPS, GetDlgItemInt(hwndDlg, IDC_MAXHOPS, NULL, FALSE)); PhSetIntegerSetting(SETTING_NAME_EXTENDED_TCP_STATS, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLE_EXTENDED_TCP)) == BST_CHECKED); } break; } return FALSE; }
static VOID NTAPI LoadCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { // Update settings TaskbarIconType = PhGetIntegerSetting(SETTING_NAME_TASKBAR_ICON_TYPE); // Get the TaskbarButtonCreated Id TaskbarButtonCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated"); // Allow the TaskbarButtonCreated message to pass through UIPI. ChangeWindowMessageFilter(TaskbarButtonCreatedMsgId, MSGFLT_ALLOW); // Allow WM_COMMAND messages to pass through UIPI (Required for ThumbBar buttons if elevated...TODO: Review security.) ChangeWindowMessageFilter(WM_COMMAND, MSGFLT_ALLOW); // Set the process-wide AppUserModelID SetCurrentProcessExplicitAppUserModelID(L"ProcessHacker2"); if (SUCCEEDED(CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList3, &TaskbarListClass))) { if (!SUCCEEDED(ITaskbarList3_HrInit(TaskbarListClass))) { ITaskbarList3_Release(TaskbarListClass); TaskbarListClass = NULL; } } PhRegisterCallback(&PhProcessesUpdatedEvent, ProcessesUpdatedCallback, NULL, &ProcessesUpdatedCallbackRegistration); }
VOID EtEtwStatisticsInitialization( VOID ) { EtEtwMonitorInitialization(); if (EtEtwEnabled) { ULONG sampleCount; sampleCount = PhGetIntegerSetting(L"SampleCount"); PhInitializeCircularBuffer_ULONG(&EtDiskReadHistory, sampleCount); PhInitializeCircularBuffer_ULONG(&EtDiskWriteHistory, sampleCount); PhInitializeCircularBuffer_ULONG(&EtNetworkReceiveHistory, sampleCount); PhInitializeCircularBuffer_ULONG(&EtNetworkSendHistory, sampleCount); PhInitializeCircularBuffer_ULONG(&EtMaxDiskHistory, sampleCount); PhInitializeCircularBuffer_ULONG(&EtMaxNetworkHistory, sampleCount); PhRegisterCallback( &PhProcessesUpdatedEvent, EtEtwProcessesUpdatedCallback, NULL, &EtpProcessesUpdatedCallbackRegistration ); PhRegisterCallback( &PhNetworkItemsUpdatedEvent, EtEtwNetworkItemsUpdatedCallback, NULL, &EtpNetworkItemsUpdatedCallbackRegistration ); } }
VOID NTAPI MainMenuInitializingCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { ULONG insertIndex; PPH_EMENU_ITEM menuItem; PPH_PLUGIN_MENU_INFORMATION menuInfo = Parameter; if (menuInfo->u.MainMenu.SubMenuIndex != PH_MENU_ITEM_LOCATION_VIEW) return; if (menuItem = PhFindEMenuItem(menuInfo->Menu, PH_EMENU_FIND_STARTSWITH, L"System Information", 0)) insertIndex = PhIndexOfEMenuItem(menuInfo->Menu, menuItem) + 1; else insertIndex = 0; PhInsertEMenuItem(menuInfo->Menu, menuItem = PhPluginCreateEMenuItem(PluginInstance, 0, ID_VIEW_WINDOWS, L"Windows", NULL), insertIndex); if (PhGetIntegerSetting(SETTING_NAME_SHOW_DESKTOP_WINDOWS)) { insertIndex = PhIndexOfEMenuItem(menuInfo->Menu, menuItem) + 1; PhInsertEMenuItem(menuInfo->Menu, PhPluginCreateEMenuItem(PluginInstance, 0, ID_VIEW_DESKTOPWINDOWS, L"Desktop Windows...", NULL), insertIndex); } }
INT_PTR CALLBACK PhpJobStatisticsPageProc( __in HWND hwndDlg, __in UINT uMsg, __in WPARAM wParam, __in LPARAM lParam ) { PJOB_PAGE_CONTEXT jobPageContext; jobPageContext = PhpJobPageHeader(hwndDlg, uMsg, wParam, lParam); if (!jobPageContext) return FALSE; switch (uMsg) { case WM_INITDIALOG: { PhpRefreshJobStatisticsInfo(hwndDlg, jobPageContext); SetTimer(hwndDlg, 1, PhGetIntegerSetting(L"UpdateInterval"), NULL); } break; case WM_TIMER: { if (wParam == 1) { PhpRefreshJobStatisticsInfo(hwndDlg, jobPageContext); } } break; } return FALSE; }
static VOID ProcessesUpdatedCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { HICON overlayIcon = NULL; ULONG taskbarIconType = TASKBAR_ICON_NONE; PH_PLUGIN_SYSTEM_STATISTICS statistics; ProcessesUpdatedCount++; if (ProcessesUpdatedCount < 2) return; taskbarIconType = PhGetIntegerSetting(SETTING_NAME_TASKBAR_ICON_TYPE); // Check if we need to clear the icon... if (taskbarIconType != TaskbarIconType && taskbarIconType == TASKBAR_ICON_NONE) { // Clear the icon... if (TaskbarListClass) { ITaskbarList3_SetOverlayIcon(TaskbarListClass, PhMainWndHandle, NULL, NULL); } } TaskbarIconType = taskbarIconType; PhPluginGetSystemStatistics(&statistics); switch (TaskbarIconType) { case TASKBAR_ICON_CPU_HISTORY: overlayIcon = PhUpdateIconCpuHistory(statistics); break; case TASKBAR_ICON_IO_HISTORY: overlayIcon = PhUpdateIconIoHistory(statistics); break; case TASKBAR_ICON_COMMIT_HISTORY: overlayIcon = PhUpdateIconCommitHistory(statistics); break; case TASKBAR_ICON_PHYSICAL_HISTORY: overlayIcon = PhUpdateIconPhysicalHistory(statistics); break; case TASKBAR_ICON_CPU_USAGE: overlayIcon = PhUpdateIconCpuUsage(statistics); break; } if (overlayIcon) { if (TaskbarListClass) { ITaskbarList3_SetOverlayIcon(TaskbarListClass, PhMainWndHandle, overlayIcon, NULL); } DestroyIcon(overlayIcon); } }
INT_PTR CALLBACK OptionsDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { PhCenterWindow(hwndDlg, GetParent(hwndDlg)); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEETWMONITOR), PhGetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR) ? BST_CHECKED : BST_UNCHECKED); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR), PhGetIntegerSetting(SETTING_NAME_ENABLE_GPU_MONITOR) ? BST_CHECKED : BST_UNCHECKED); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLESYSINFOGRAPHS), PhGetIntegerSetting(SETTING_NAME_ENABLE_SYSINFO_GRAPHS) ? BST_CHECKED : BST_UNCHECKED); } break; case WM_COMMAND: { switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; case IDOK: { PhSetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEETWMONITOR)) == BST_CHECKED); PhSetIntegerSetting(SETTING_NAME_ENABLE_GPU_MONITOR, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR)) == BST_CHECKED); PhSetIntegerSetting(SETTING_NAME_ENABLE_SYSINFO_GRAPHS, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLESYSINFOGRAPHS)) == BST_CHECKED); EndDialog(hwndDlg, IDOK); } break; } } break; } return FALSE; }
INT_PTR CALLBACK GrowlDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { SetDlgItemText(hwndDlg, IDC_LICENSE, PH_AUTO_T(PH_STRING, PhConvertUtf8ToUtf16(gntp_send_license_text))->Buffer); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGROWL), PhGetIntegerSetting(SETTING_NAME_ENABLE_GROWL) ? BST_CHECKED : BST_UNCHECKED); } break; case WM_NOTIFY: { LPNMHDR header = (LPNMHDR)lParam; switch (header->code) { case PSN_QUERYINITIALFOCUS: { SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, (LONG_PTR)GetDlgItem(hwndDlg, IDC_ENABLEGROWL)); } return TRUE; case PSN_APPLY: { PhSetIntegerSetting(SETTING_NAME_ENABLE_GROWL, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGROWL)) == BST_CHECKED); if (PhGetIntegerSetting(SETTING_NAME_ENABLE_GROWL)) RegisterGrowl(FALSE); SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR); } return TRUE; } } break; } return FALSE; }
VOID NTAPI MainWindowShowingCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_VIEW, L"System Information", ID_VIEW_WINDOWS, L"Windows", NULL); if (PhGetIntegerSetting(SETTING_NAME_SHOW_DESKTOP_WINDOWS)) PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_VIEW, L"Windows", ID_VIEW_DESKTOPWINDOWS, L"Desktop Windows...", NULL); }
INT_PTR CALLBACK OptionsDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEETWMONITOR), PhGetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR) ? BST_CHECKED : BST_UNCHECKED); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR), PhGetIntegerSetting(SETTING_NAME_ENABLE_GPU_MONITOR) ? BST_CHECKED : BST_UNCHECKED); if (WindowsVersion < WINDOWS_7) EnableWindow(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR), FALSE); } break; case WM_COMMAND: { switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; case IDOK: { PhSetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEETWMONITOR)) == BST_CHECKED); PhSetIntegerSetting(SETTING_NAME_ENABLE_GPU_MONITOR, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGPUMONITOR)) == BST_CHECKED); EndDialog(hwndDlg, IDOK); } break; } } break; } return FALSE; }
VOID PhLogInitialization( VOID ) { ULONG entries; entries = PhGetIntegerSetting(L"LogEntries"); if (entries > 0x1000) entries = 0x1000; PhInitializeCircularBuffer_PVOID(&PhLogBuffer, entries); memset(PhLogBuffer.Data, 0, sizeof(PVOID) * PhLogBuffer.Size); }
VOID NTAPI LoadCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { if (VirusTotalScanningEnabled = !!PhGetIntegerSetting(SETTING_NAME_VIRUSTOTAL_SCAN_ENABLED)) { InitializeProcessDb(); InitializeVirusTotalProcessMonitor(); } }
PDV_NETADAPTER_ENTRY CreateNetAdapterEntry( _In_ PDV_NETADAPTER_ID Id ) { PDV_NETADAPTER_ENTRY entry; entry = PhCreateObject(sizeof(DV_NETADAPTER_ENTRY), NetAdapterEntryType); memset(entry, 0, sizeof(DV_NETADAPTER_ENTRY)); CopyNetAdapterId(&entry->Id, Id); PhInitializeCircularBuffer_ULONG64(&entry->InboundBuffer, PhGetIntegerSetting(L"SampleCount")); PhInitializeCircularBuffer_ULONG64(&entry->OutboundBuffer, PhGetIntegerSetting(L"SampleCount")); PhAcquireQueuedLockExclusive(&NetworkAdaptersListLock); PhAddItemList(NetworkAdaptersList, entry); PhReleaseQueuedLockExclusive(&NetworkAdaptersListLock); return entry; }
static VOID NTAPI MainWindowShowingCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { // Check if the user want's us to auto-check for updates. if (PhGetIntegerSetting(SETTING_NAME_AUTO_CHECK)) { // All good, queue up our update check. StartInitialCheck(); } }
PDV_DISK_ENTRY CreateDiskEntry( _In_ PDV_DISK_ID Id ) { PDV_DISK_ENTRY entry; entry = PhCreateObject(sizeof(DV_DISK_ENTRY), DiskDriveEntryType); memset(entry, 0, sizeof(DV_DISK_ENTRY)); entry->DiskIndex = ULONG_MAX; CopyDiskId(&entry->Id, Id); PhInitializeCircularBuffer_ULONG64(&entry->ReadBuffer, PhGetIntegerSetting(L"SampleCount")); PhInitializeCircularBuffer_ULONG64(&entry->WriteBuffer, PhGetIntegerSetting(L"SampleCount")); PhAcquireQueuedLockExclusive(&DiskDrivesListLock); PhAddItemList(DiskDrivesList, entry); PhReleaseQueuedLockExclusive(&DiskDrivesListLock); return entry; }
VOID EtEtwMonitorInitialization( VOID ) { if (PhGetOwnTokenAttributes().Elevated && PhGetIntegerSetting(SETTING_NAME_ENABLE_ETW_MONITOR)) { EtStartEtwSession(); if (EtEtwEnabled) EtpEtwMonitorThreadHandle = PhCreateThread(0, EtpEtwMonitorThreadStart, NULL); } }
INT_PTR CALLBACK GrowlDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { static PH_LAYOUT_MANAGER LayoutManager; switch (uMsg) { case WM_INITDIALOG: { SetDlgItemText(hwndDlg, IDC_LICENSE, PH_AUTO_T(PH_STRING, PhConvertUtf8ToUtf16(gntp_send_license_text))->Buffer); Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGROWL), PhGetIntegerSetting(SETTING_NAME_ENABLE_GROWL) ? BST_CHECKED : BST_UNCHECKED); PhInitializeLayoutManager(&LayoutManager, hwndDlg); PhAddLayoutItem(&LayoutManager, GetDlgItem(hwndDlg, IDC_LICENSE), NULL, PH_ANCHOR_ALL); } break; case WM_DESTROY: { PhSetIntegerSetting(SETTING_NAME_ENABLE_GROWL, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLEGROWL)) == BST_CHECKED); if (PhGetIntegerSetting(SETTING_NAME_ENABLE_GROWL)) RegisterGrowl(FALSE); PhDeleteLayoutManager(&LayoutManager); } break; case WM_SIZE: { PhLayoutManagerLayout(&LayoutManager); } break; } return FALSE; }
VOID NvGpuInitialize( VOID ) { ULONG sampleCount; sampleCount = PhGetIntegerSetting(L"SampleCount"); PhInitializeCircularBuffer_FLOAT(&GpuUtilizationHistory, sampleCount); PhInitializeCircularBuffer_ULONG(&GpuMemoryHistory, sampleCount); PhInitializeCircularBuffer_FLOAT(&GpuBoardHistory, sampleCount); PhInitializeCircularBuffer_FLOAT(&GpuBusHistory, sampleCount); }
static VOID DbgAddLogEntry( _Inout_ PPH_DBGEVENTS_CONTEXT Context, _In_ PDEBUG_LOG_ENTRY Entry ) { if (Context->LogMessageList->Count > PhGetIntegerSetting(SETTING_NAME_MAX_ENTRIES)) { DbgFreeLogEntry(Context->LogMessageList->Items[0]); PhRemoveItemList(Context->LogMessageList, 0); } PhAddItemList(Context->LogMessageList, Entry); PhInvokeCallback(&DbgLoggedCallback, Entry); }
static VOID NTAPI MainWindowShowingCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ) { // Add our menu item, 4 = Help menu. PhPluginAddMenuItem(PluginInstance, 4, NULL, UPDATE_MENUITEM, L"Check for Updates", NULL); // Check if the user want's us to auto-check for updates. if (PhGetIntegerSetting(SETTING_AUTO_CHECK)) { // All good, queue up our update check. StartInitialCheck(); } }
VOID NTAPI LoadCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { LoadFilterList(ProcessFilterList, PhaGetStringSetting(SETTING_NAME_PROCESS_LIST)); LoadFilterList(ServiceFilterList, PhaGetStringSetting(SETTING_NAME_SERVICE_LIST)); FileLogInitialization(); if (PhGetIntegerSetting(SETTING_NAME_ENABLE_GROWL)) { PhQueueItemWorkQueue(PhGetGlobalWorkQueue(), RegisterGrowlCallback, NULL); } }
VOID LoadCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ) { ULONG myInteger; PPH_STRING myString; myInteger = PhGetIntegerSetting(L"ProcessHacker.SamplePlugin.SomeInteger"); // Do stuff to the integer. Possibly modify the setting. PhSetIntegerSetting(L"ProcessHacker.SamplePlugin.SomeInteger", myInteger + 100); myString = PhGetStringSetting(L"ProcessHacker.SamplePlugin.SomeString"); // Do stuff to the string. // Dereference the string when you're done, or memory will be leaked. PhDereferenceObject(myString); }
VOID PhLoadSymbolProviderOptions( __inout PPH_SYMBOL_PROVIDER SymbolProvider ) { PPH_STRING searchPath; PhSetOptionsSymbolProvider( SYMOPT_UNDNAME, PhGetIntegerSetting(L"DbgHelpUndecorate") ? SYMOPT_UNDNAME : 0 ); searchPath = PhGetStringSetting(L"DbgHelpSearchPath"); if (searchPath->Length != 0) PhSetSearchPathSymbolProvider(SymbolProvider, searchPath->Buffer); PhDereferenceObject(searchPath); }
VOID NTAPI NotifyEventCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { PPH_PLUGIN_NOTIFY_EVENT notifyEvent = Parameter; PPH_PROCESS_ITEM processItem; PPH_SERVICE_ITEM serviceItem; FILTER_TYPE filterType; BOOLEAN found = FALSE; filterType = FilterExclude; switch (notifyEvent->Type) { case PH_NOTIFY_PROCESS_CREATE: case PH_NOTIFY_PROCESS_DELETE: processItem = notifyEvent->Parameter; if (processItem->FileName) found = MatchFilterList(ProcessFilterList, processItem->FileName, &filterType); if (!found) MatchFilterList(ProcessFilterList, processItem->ProcessName, &filterType); break; case PH_NOTIFY_SERVICE_CREATE: case PH_NOTIFY_SERVICE_DELETE: case PH_NOTIFY_SERVICE_START: case PH_NOTIFY_SERVICE_STOP: serviceItem = notifyEvent->Parameter; MatchFilterList(ServiceFilterList, serviceItem->Name, &filterType); break; } if (filterType == FilterExclude) notifyEvent->Handled = TRUE; // pretend we handled the notification to prevent it from displaying if (PhGetIntegerSetting(SETTING_NAME_ENABLE_GROWL)) NotifyGrowl(notifyEvent); }
VOID NvGpuSysInfoInitializing( _In_ PPH_PLUGIN_SYSINFO_POINTERS Pointers ) { PH_SYSINFO_SECTION section; if (!PhGetIntegerSetting(SETTING_NAME_ENABLE_GPU)) return; if (!NvApiInitialized) return; memset(§ion, 0, sizeof(PH_SYSINFO_SECTION)); section.Callback = NvGpuSectionCallback; GpuName = NvGpuQueryName(); PhInitializeStringRef(§ion.Name, GpuName->Buffer); Section = Pointers->CreateSection(§ion); }
BOOLEAN EtUiCancelIoThread( __in HWND hWnd, __in PPH_THREAD_ITEM Thread ) { NTSTATUS status; BOOLEAN cont = FALSE; HANDLE threadHandle; IO_STATUS_BLOCK isb; if (!PhGetIntegerSetting(L"EnableWarnings") || PhShowConfirmMessage( hWnd, L"end", L"I/O for the selected thread", NULL, FALSE )) cont = TRUE; if (!cont) return FALSE; if (NT_SUCCESS(status = PhOpenThread(&threadHandle, THREAD_TERMINATE, Thread->ThreadId))) { status = NtCancelSynchronousIoFile(threadHandle, NULL, &isb); } if (status == STATUS_NOT_FOUND) { PhShowInformation(hWnd, L"There is no synchronous I/O to cancel."); return FALSE; } else if (!NT_SUCCESS(status)) { PhShowStatus(hWnd, L"Unable to cancel synchronous I/O", status, 0); return FALSE; } return TRUE; }
INT_PTR CALLBACK OptionsDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { PhCenterWindow(hwndDlg, GetParent(hwndDlg)); if (PhGetIntegerSetting(SETTING_NAME_AUTO_CHECK)) Button_SetCheck(GetDlgItem(hwndDlg, IDC_AUTOCHECKBOX), BST_CHECKED); } break; case WM_COMMAND: { switch (GET_WM_COMMAND_ID(wParam, lParam)) { case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; case IDOK: { PhSetIntegerSetting(SETTING_NAME_AUTO_CHECK, Button_GetCheck(GetDlgItem(hwndDlg, IDC_AUTOCHECKBOX)) == BST_CHECKED); EndDialog(hwndDlg, IDOK); } break; } } break; } return FALSE; }
VOID NvGpuUpdatePanel( VOID ) { SetDlgItemText(GpuPanel, IDC_CLOCK_CORE, PhaFormatString(L"%lu MHz", GpuCurrentCoreClock)->Buffer); SetDlgItemText(GpuPanel, IDC_CLOCK_MEMORY, PhaFormatString(L"%lu MHz", GpuCurrentMemoryClock)->Buffer); SetDlgItemText(GpuPanel, IDC_CLOCK_SHADER, PhaFormatString(L"%lu MHz", GpuCurrentShaderClock)->Buffer); SetDlgItemText(GpuPanel, IDC_FAN_PERCENT, ((PPH_STRING)PhAutoDereferenceObject(NvGpuQueryFanSpeed()))->Buffer); if (PhGetIntegerSetting(SETTING_NAME_ENABLE_FAHRENHEIT)) { FLOAT fahrenheit = (FLOAT)(GpuCurrentCoreTemp * 1.8 + 32); SetDlgItemText(GpuPanel, IDC_TEMP_VALUE, PhaFormatString(L"%.1f\u00b0F", fahrenheit)->Buffer); } else { SetDlgItemText(GpuPanel, IDC_TEMP_VALUE, PhaFormatString(L"%lu\u00b0C", GpuCurrentCoreTemp)->Buffer); } //SetDlgItemText(GpuPanel, IDC_TEMP_VALUE, PhaFormatString(L"%s\u00b0C", PhaFormatUInt64(GpuCurrentBoardTemp, TRUE)->Buffer)->Buffer); SetDlgItemText(GpuPanel, IDC_VOLTAGE, PhaFormatString(L"%lu mV", GpuCurrentVoltage)->Buffer); }
INT_PTR CALLBACK OptionsDlgProc( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { Button_SetCheck(GetDlgItem(hwndDlg, IDC_ENABLESERVICESMENU), PhGetIntegerSetting(SETTING_NAME_ENABLE_SERVICES_MENU) ? BST_CHECKED : BST_UNCHECKED); } break; case WM_COMMAND: { switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; case IDOK: { PhSetIntegerSetting(SETTING_NAME_ENABLE_SERVICES_MENU, Button_GetCheck(GetDlgItem(hwndDlg, IDC_ENABLESERVICESMENU)) == BST_CHECKED); EndDialog(hwndDlg, IDOK); } break; } } break; } return FALSE; }