From 1533dd503deeec00df79bf6d5a859c72fdba8b9a Mon Sep 17 00:00:00 2001 From: wj32 Date: Wed, 17 Jun 2015 11:12:02 +0000 Subject: [PATCH] Add tool to automatically generate plugin API header file git-svn-id: svn://svn.code.sf.net/p/processhacker/code@6092 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- 2.x/trunk/ProcessHacker/actions.c | 81 - 2.x/trunk/ProcessHacker/include/colmgr.h | 6 + 2.x/trunk/ProcessHacker/include/extmgr.h | 2 + 2.x/trunk/ProcessHacker/include/hidnproc.h | 4 - 2.x/trunk/ProcessHacker/include/miniinfo.h | 12 + 2.x/trunk/ProcessHacker/include/notifico.h | 8 + 2.x/trunk/ProcessHacker/include/phapp.h | 455 ++++-- 2.x/trunk/ProcessHacker/include/phplug.h | 22 +- 2.x/trunk/ProcessHacker/include/procgrp.h | 2 + 2.x/trunk/ProcessHacker/include/procprpp.h | 56 +- 2.x/trunk/ProcessHacker/include/providers.h | 166 +- 2.x/trunk/ProcessHacker/include/settings.h | 40 +- 2.x/trunk/ProcessHacker/include/sysinfo.h | 12 +- 2.x/trunk/ProcessHacker/include/uimodels.h | 118 +- 2.x/trunk/ProcessHacker/netprv.c | 1 - 2.x/trunk/ProcessHacker/procprv.c | 1 - 2.x/trunk/ProcessHacker/sdk/phapppub.h | 1447 ----------------- 2.x/trunk/ProcessHacker/sdk/phdk.h | 7 +- 2.x/trunk/ProcessHacker/srvprv.c | 1 - 2.x/trunk/build/sdk/makesdk.cmd | 12 +- 2.x/trunk/build/sdk/phapppub_gen.cmd | 1 + 2.x/trunk/build/sdk/phapppub_options.txt | 6 + 2.x/trunk/plugins/DotNetTools/asmpage.c | 1 - 2.x/trunk/plugins/ExtendedTools/disktab.c | 1 - 2.x/trunk/plugins/ExtendedTools/iconext.c | 1 - 2.x/trunk/plugins/NetworkTools/nettools.h | 2 - 2.x/trunk/plugins/ToolStatus/filter.c | 16 +- 2.x/trunk/plugins/ToolStatus/toolstatus.h | 2 - 2.x/trunk/plugins/WindowExplorer/wndtree.c | 1 - .../tools/GenerateHeader/GenerateHeader.sln | 22 + .../GenerateHeader/GenerateHeader/App.config | 6 + .../GenerateHeader/GenerateHeader.csproj | 59 + .../GenerateHeader/HeaderGen.cs | 213 +++ .../GenerateHeader/GenerateHeader/Program.cs | 27 + .../GenerateHeader/Properties/AssemblyInfo.cs | 36 + .../bin/Release/GenerateHeader.exe | Bin 0 -> 11264 bytes .../GenerateZw/bin/Release/GenerateZw.exe | Bin 0 -> 8192 bytes 37 files changed, 1094 insertions(+), 1753 deletions(-) delete mode 100644 2.x/trunk/ProcessHacker/sdk/phapppub.h create mode 100644 2.x/trunk/build/sdk/phapppub_gen.cmd create mode 100644 2.x/trunk/build/sdk/phapppub_options.txt create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader.sln create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader/App.config create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader/GenerateHeader.csproj create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader/HeaderGen.cs create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader/Program.cs create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader/Properties/AssemblyInfo.cs create mode 100644 2.x/trunk/tools/GenerateHeader/GenerateHeader/bin/Release/GenerateHeader.exe create mode 100644 2.x/trunk/tools/GenerateZw/GenerateZw/bin/Release/GenerateZw.exe diff --git a/2.x/trunk/ProcessHacker/actions.c b/2.x/trunk/ProcessHacker/actions.c index 9612a913a..c7ab20307 100644 --- a/2.x/trunk/ProcessHacker/actions.c +++ b/2.x/trunk/ProcessHacker/actions.c @@ -3378,84 +3378,3 @@ BOOLEAN PhUiSetAttributesHandle( return TRUE; } - -BOOLEAN PhUiDestroyHeap( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PVOID HeapHandle - ) -{ - NTSTATUS status; - BOOLEAN cont = FALSE; - HANDLE processHandle; - HANDLE threadHandle; - - if (PhGetIntegerSetting(L"EnableWarnings")) - { - cont = PhShowConfirmMessage( - hWnd, - L"destroy", - L"the selected heap", - L"Destroying heaps may cause the process to crash.", - FALSE - ); - } - else - { - cont = TRUE; - } - - if (!cont) - return FALSE; - - if (NT_SUCCESS(status = PhOpenProcess( - &processHandle, - PROCESS_CREATE_THREAD, - ProcessId - ))) - { - if (WindowsVersion >= WINDOWS_VISTA) - { - status = RtlCreateUserThread( - processHandle, - NULL, - FALSE, - 0, - 0, - 0, - (PUSER_THREAD_START_ROUTINE)PhGetModuleProcAddress(L"ntdll.dll", "RtlDestroyHeap"), - HeapHandle, - &threadHandle, - NULL - ); - } - else - { - if (!(threadHandle = CreateRemoteThread( - processHandle, - NULL, - 0, - (PTHREAD_START_ROUTINE)PhGetModuleProcAddress(L"ntdll.dll", "RtlDestroyHeap"), - HeapHandle, - 0, - NULL - ))) - { - status = PhGetLastWin32ErrorAsNtStatus(); - } - } - - if (NT_SUCCESS(status)) - NtClose(threadHandle); - - NtClose(processHandle); - } - - if (!NT_SUCCESS(status)) - { - PhShowStatus(hWnd, L"Unable to destroy the heap", status, 0); - return FALSE; - } - - return TRUE; -} diff --git a/2.x/trunk/ProcessHacker/include/colmgr.h b/2.x/trunk/ProcessHacker/include/colmgr.h index 3c66e5bdf..92ae8658f 100644 --- a/2.x/trunk/ProcessHacker/include/colmgr.h +++ b/2.x/trunk/ProcessHacker/include/colmgr.h @@ -3,12 +3,14 @@ #define PH_CM_ORDER_LIMIT 160 +// begin_phapppub typedef LONG (NTAPI *PPH_CM_POST_SORT_FUNCTION)( _In_ LONG Result, _In_ PVOID Node1, _In_ PVOID Node2, _In_ PH_SORT_ORDER SortOrder ); +// end_phapppub typedef struct _PH_CM_MANAGER { @@ -77,6 +79,7 @@ BOOLEAN PhCmForwardSort( _In_ PPH_CM_MANAGER Manager ); +// begin_phapppub PHAPPAPI BOOLEAN NTAPI @@ -84,6 +87,7 @@ PhCmLoadSettings( _In_ HWND TreeNewHandle, _In_ PPH_STRINGREF Settings ); +// end_phapppub #define PH_CM_COLUMN_WIDTHS_ONLY 0x1 @@ -95,12 +99,14 @@ BOOLEAN PhCmLoadSettingsEx( _In_opt_ PPH_STRINGREF SortSettings ); +// begin_phapppub PHAPPAPI PPH_STRING NTAPI PhCmSaveSettings( _In_ HWND TreeNewHandle ); +// end_phapppub PPH_STRING PhCmSaveSettingsEx( _In_ HWND TreeNewHandle, diff --git a/2.x/trunk/ProcessHacker/include/extmgr.h b/2.x/trunk/ProcessHacker/include/extmgr.h index 971c21b26..9e45dc00c 100644 --- a/2.x/trunk/ProcessHacker/include/extmgr.h +++ b/2.x/trunk/ProcessHacker/include/extmgr.h @@ -1,6 +1,7 @@ #ifndef PH_EXTMGR_H #define PH_EXTMGR_H +// begin_phapppub typedef enum _PH_EM_OBJECT_TYPE { EmProcessItemType, @@ -38,6 +39,7 @@ typedef VOID (NTAPI *PPH_EM_OBJECT_CALLBACK)( _In_ PH_EM_OBJECT_TYPE ObjectType, _In_ PVOID Extension ); +// end_phapppub typedef struct _PH_EM_APP_CONTEXT { diff --git a/2.x/trunk/ProcessHacker/include/hidnproc.h b/2.x/trunk/ProcessHacker/include/hidnproc.h index 9fd4129cb..916efc0b9 100644 --- a/2.x/trunk/ProcessHacker/include/hidnproc.h +++ b/2.x/trunk/ProcessHacker/include/hidnproc.h @@ -36,7 +36,6 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_HIDDEN_PROCESSES_CALLBACK)( _In_opt_ PVOID Context ); -PHAPPAPI NTSTATUS NTAPI PhEnumHiddenProcesses( @@ -50,7 +49,6 @@ typedef BOOLEAN (NTAPI *PPH_ENUM_CSR_PROCESS_HANDLES_CALLBACK)( _In_opt_ PVOID Context ); -PHAPPAPI NTSTATUS NTAPI PhEnumCsrProcessHandles( @@ -58,7 +56,6 @@ PhEnumCsrProcessHandles( _In_opt_ PVOID Context ); -PHAPPAPI NTSTATUS NTAPI PhOpenProcessByCsrHandle( @@ -67,7 +64,6 @@ PhOpenProcessByCsrHandle( _In_ PPH_CSR_HANDLE_INFO Handle ); -PHAPPAPI NTSTATUS NTAPI PhOpenProcessByCsrHandles( diff --git a/2.x/trunk/ProcessHacker/include/miniinfo.h b/2.x/trunk/ProcessHacker/include/miniinfo.h index 0502ee2c7..41e09a0ad 100644 --- a/2.x/trunk/ProcessHacker/include/miniinfo.h +++ b/2.x/trunk/ProcessHacker/include/miniinfo.h @@ -3,6 +3,7 @@ #include +// begin_phapppub // Section typedef VOID (NTAPI *PPH_MINIINFO_SET_SECTION_TEXT)( @@ -55,7 +56,9 @@ typedef struct _PH_MINIINFO_CREATE_DIALOG } PH_MINIINFO_CREATE_DIALOG, *PPH_MINIINFO_CREATE_DIALOG; #define PH_MINIINFO_SECTION_NO_UPPER_MARGINS 0x1 +// end_phapppub +// begin_phapppub typedef struct _PH_MINIINFO_SECTION { // Public @@ -69,6 +72,7 @@ typedef struct _PH_MINIINFO_SECTION PPH_MINIINFO_PARAMETERS Parameters; PVOID Reserved2[3]; +// end_phapppub // Private @@ -78,7 +82,9 @@ typedef struct _PH_MINIINFO_SECTION }; HWND DialogHandle; PPH_STRING Text; +// begin_phapppub } PH_MINIINFO_SECTION, *PPH_MINIINFO_SECTION; +// end_phapppub typedef enum _PH_MINIINFO_PIN_TYPE { @@ -103,6 +109,7 @@ VOID PhPinMiniInformation( _In_opt_ PPOINT SourcePoint ); +// begin_phapppub // List section typedef enum _PH_MINIINFO_LIST_SECTION_MESSAGE @@ -185,7 +192,9 @@ typedef struct _PH_MINIINFO_LIST_SECTION_MENU_INFORMATION PPH_TREENEW_CONTEXT_MENU ContextMenu; struct _PH_EMENU_ITEM *SelectedItem; } PH_MINIINFO_LIST_SECTION_MENU_INFORMATION, *PPH_MINIINFO_LIST_SECTION_MENU_INFORMATION; +// end_phapppub +// begin_phapppub typedef struct _PH_MINIINFO_LIST_SECTION { // Public @@ -195,6 +204,7 @@ typedef struct _PH_MINIINFO_LIST_SECTION HWND TreeNewHandle; // State PVOID Context; // Initialization PPH_MINIINFO_LIST_SECTION_CALLBACK Callback; // Initialization +// end_phapppub // Private @@ -205,6 +215,8 @@ typedef struct _PH_MINIINFO_LIST_SECTION PPH_LIST NodeList; HANDLE SelectedRepresentativeProcessId; LARGE_INTEGER SelectedRepresentativeCreateTime; +// begin_phapppub } PH_MINIINFO_LIST_SECTION, *PPH_MINIINFO_LIST_SECTION; +// end_phapppub #endif \ No newline at end of file diff --git a/2.x/trunk/ProcessHacker/include/notifico.h b/2.x/trunk/ProcessHacker/include/notifico.h index 1bcf526b6..fe0c17781 100644 --- a/2.x/trunk/ProcessHacker/include/notifico.h +++ b/2.x/trunk/ProcessHacker/include/notifico.h @@ -13,6 +13,7 @@ #define PH_ICON_LIMIT 0x80000000 #define PH_ICON_ALL 0xffffffff +// begin_phapppub typedef VOID (NTAPI *PPH_NF_UPDATE_REGISTERED_ICON)( _In_ struct _PH_NF_ICON *Icon ); @@ -64,7 +65,9 @@ typedef struct _PH_NF_MSG_SHOWMINIINFOSECTION_DATA #define PH_NF_ICON_UNAVAILABLE 0x1 #define PH_NF_ICON_SHOW_MINIINFO 0x2 +// end_phapppub +// begin_phapppub typedef struct _PH_NF_ICON { // Public @@ -73,6 +76,7 @@ typedef struct _PH_NF_ICON ULONG SubId; PVOID Context; PPH_NF_POINTERS Pointers; +// end_phapppub // Private @@ -81,7 +85,9 @@ typedef struct _PH_NF_ICON ULONG IconId; PPH_NF_ICON_UPDATE_CALLBACK UpdateCallback; PPH_NF_ICON_MESSAGE_CALLBACK MessageCallback; +// begin_phapppub } PH_NF_ICON, *PPH_NF_ICON; +// end_phapppub VOID PhNfLoadStage1( VOID @@ -152,6 +158,7 @@ VOID PhNfNotifyMiniInfoPinned( _In_ BOOLEAN Pinned ); +// begin_phapppub // Public registration data typedef struct _PH_NF_ICON_REGISTRATION_DATA @@ -159,5 +166,6 @@ typedef struct _PH_NF_ICON_REGISTRATION_DATA PPH_NF_ICON_UPDATE_CALLBACK UpdateCallback; PPH_NF_ICON_MESSAGE_CALLBACK MessageCallback; } PH_NF_ICON_REGISTRATION_DATA, *PPH_NF_ICON_REGISTRATION_DATA; +// end_phapppub #endif diff --git a/2.x/trunk/ProcessHacker/include/phapp.h b/2.x/trunk/ProcessHacker/include/phapp.h index 688bd30d0..fcc10fe4e 100644 --- a/2.x/trunk/ProcessHacker/include/phapp.h +++ b/2.x/trunk/ProcessHacker/include/phapp.h @@ -22,7 +22,7 @@ L"or could not be loaded. Make sure Process Hacker is running " \ L"with administrative privileges.") -typedef struct _PH_SYMBOL_PROVIDER *PPH_SYMBOL_PROVIDER; +typedef struct _PH_SYMBOL_PROVIDER *PPH_SYMBOL_PROVIDER; // phapppub // main @@ -73,7 +73,7 @@ typedef struct _PH_STARTUP_PARAMETERS extern PPH_STRING PhApplicationDirectory; extern PPH_STRING PhApplicationFileName; -PHAPPAPI extern HFONT PhApplicationFont; +PHAPPAPI extern HFONT PhApplicationFont; // phapppub extern PPH_STRING PhCurrentUserName; extern HINSTANCE PhInstanceHandle; extern PPH_STRING PhLocalSystemName; @@ -86,13 +86,18 @@ extern PH_STARTUP_PARAMETERS PhStartupParameters; extern PH_PROVIDER_THREAD PhPrimaryProviderThread; extern PH_PROVIDER_THREAD PhSecondaryProviderThread; +// begin_phapppub PHAPPAPI -VOID PhRegisterDialog( +VOID +NTAPI +PhRegisterDialog( _In_ HWND DialogWindowHandle ); PHAPPAPI -VOID PhUnregisterDialog( +VOID +NTAPI +PhUnregisterDialog( _In_ HWND DialogWindowHandle ); @@ -108,15 +113,20 @@ typedef struct _PH_MESSAGE_LOOP_FILTER_ENTRY } PH_MESSAGE_LOOP_FILTER_ENTRY, *PPH_MESSAGE_LOOP_FILTER_ENTRY; PHAPPAPI -struct _PH_MESSAGE_LOOP_FILTER_ENTRY *PhRegisterMessageLoopFilter( +struct _PH_MESSAGE_LOOP_FILTER_ENTRY * +NTAPI +PhRegisterMessageLoopFilter( _In_ PPH_MESSAGE_LOOP_FILTER Filter, _In_opt_ PVOID Context ); PHAPPAPI -VOID PhUnregisterMessageLoopFilter( +VOID +NTAPI +PhUnregisterMessageLoopFilter( _In_ struct _PH_MESSAGE_LOOP_FILTER_ENTRY *FilterEntry ); +// end_phapppub VOID PhInitializeFont( _In_ HWND hWnd @@ -132,10 +142,14 @@ extern GUID WINBLUE_CONTEXT_GUID; typedef struct PACKAGE_ID PACKAGE_ID; +// begin_phapppub PHAPPAPI -BOOLEAN PhGetProcessIsSuspended( +BOOLEAN +NTAPI +PhGetProcessIsSuspended( _In_ PSYSTEM_PROCESS_INFORMATION Process ); +// end_phapppub NTSTATUS PhGetProcessSwitchContext( _In_ HANDLE ProcessHandle, @@ -154,6 +168,7 @@ PPH_STRING PhGetPackagePath( _In_ PACKAGE_ID *PackageId ); +// begin_phapppub typedef enum _PH_KNOWN_PROCESS_TYPE { UnknownProcessType, @@ -178,7 +193,9 @@ typedef enum _PH_KNOWN_PROCESS_TYPE } PH_KNOWN_PROCESS_TYPE; PHAPPAPI -NTSTATUS PhGetProcessKnownType( +NTSTATUS +NTAPI +PhGetProcessKnownType( _In_ HANDLE ProcessHandle, _Out_ PH_KNOWN_PROCESS_TYPE *KnownProcessType ); @@ -203,11 +220,14 @@ typedef union _PH_KNOWN_PROCESS_COMMAND_LINE } PH_KNOWN_PROCESS_COMMAND_LINE, *PPH_KNOWN_PROCESS_COMMAND_LINE; PHAPPAPI -BOOLEAN PhaGetProcessKnownCommandLine( +BOOLEAN +NTAPI +PhaGetProcessKnownCommandLine( _In_ PPH_STRING CommandLine, _In_ PH_KNOWN_PROCESS_TYPE KnownProcessType, _Out_ PPH_KNOWN_PROCESS_COMMAND_LINE KnownCommandLine ); +// end_phapppub VOID PhEnumChildWindows( _In_opt_ HWND hWnd, @@ -242,14 +262,19 @@ PPH_STRING PhGetOpaqueXmlNodeText( _In_ mxml_node_t *node ); +// begin_phapppub PHAPPAPI -VOID PhSearchOnlineString( +VOID +NTAPI +PhSearchOnlineString( _In_ HWND hWnd, _In_ PWSTR String ); PHAPPAPI -VOID PhShellExecuteUserString( +VOID +NTAPI +PhShellExecuteUserString( _In_ HWND hWnd, _In_ PWSTR Setting, _In_ PWSTR String, @@ -258,22 +283,30 @@ VOID PhShellExecuteUserString( ); PHAPPAPI -VOID PhLoadSymbolProviderOptions( +VOID +NTAPI +PhLoadSymbolProviderOptions( _Inout_ PPH_SYMBOL_PROVIDER SymbolProvider ); +// end_phapppub PWSTR PhMakeContextAtom( VOID ); +// begin_phapppub PHAPPAPI -VOID PhCopyListViewInfoTip( +VOID +NTAPI +PhCopyListViewInfoTip( _Inout_ LPNMLVGETINFOTIP GetInfoTip, _In_ PPH_STRINGREF Tip ); PHAPPAPI -VOID PhCopyListView( +VOID +NTAPI +PhCopyListView( _In_ HWND ListViewHandle ); @@ -282,6 +315,7 @@ VOID PhHandleListViewNotifyForCopy( _In_ LPARAM lParam, _In_ HWND ListViewHandle ); +// end_phapppub #define PH_LIST_VIEW_CTRL_C_BEHAVIOR 0x1 #define PH_LIST_VIEW_CTRL_A_BEHAVIOR 0x2 @@ -293,11 +327,15 @@ VOID PhHandleListViewNotifyBehaviors( _In_ ULONG Behaviors ); +// begin_phapppub PHAPPAPI -BOOLEAN PhGetListViewContextMenuPoint( +BOOLEAN +NTAPI +PhGetListViewContextMenuPoint( _In_ HWND ListViewHandle, _Out_ PPOINT Point ); +// end_phapppub HFONT PhDuplicateFontWithNewWeight( _In_ HFONT Font, @@ -312,39 +350,52 @@ VOID PhSetWindowOpacity( #define PH_OPACITY_TO_ID(Opacity) (ID_OPACITY_10 + (10 - (Opacity) / 10) - 1) #define PH_ID_TO_OPACITY(Id) (100 - (((Id) - ID_OPACITY_10) + 1) * 10) +// begin_phapppub PHAPPAPI -VOID PhLoadWindowPlacementFromSetting( +VOID +NTAPI +PhLoadWindowPlacementFromSetting( _In_opt_ PWSTR PositionSettingName, _In_opt_ PWSTR SizeSettingName, _In_ HWND WindowHandle ); PHAPPAPI -VOID PhSaveWindowPlacementToSetting( +VOID +NTAPI +PhSaveWindowPlacementToSetting( _In_opt_ PWSTR PositionSettingName, _In_opt_ PWSTR SizeSettingName, _In_ HWND WindowHandle ); PHAPPAPI -VOID PhLoadListViewColumnsFromSetting( +VOID +NTAPI +PhLoadListViewColumnsFromSetting( _In_ PWSTR Name, _In_ HWND ListViewHandle ); PHAPPAPI -VOID PhSaveListViewColumnsToSetting( +VOID +NTAPI +PhSaveListViewColumnsToSetting( _In_ PWSTR Name, _In_ HWND ListViewHandle ); PHAPPAPI -PPH_STRING PhGetPhVersion( +PPH_STRING +NTAPI +PhGetPhVersion( VOID ); PHAPPAPI -VOID PhGetPhVersionNumbers( +VOID +NTAPI +PhGetPhVersionNumbers( _Out_opt_ PULONG MajorVersion, _Out_opt_ PULONG MinorVersion, _Reserved_ PULONG Reserved, @@ -352,7 +403,9 @@ VOID PhGetPhVersionNumbers( ); PHAPPAPI -VOID PhWritePhTextHeader( +VOID +NTAPI +PhWritePhTextHeader( _Inout_ PPH_FILE_STREAM FileStream ); @@ -361,7 +414,9 @@ VOID PhWritePhTextHeader( #define PH_SHELL_APP_PROPAGATE_PARAMETERS_FORCE_SETTINGS 0x4 PHAPPAPI -BOOLEAN PhShellProcessHacker( +BOOLEAN +NTAPI +PhShellProcessHacker( _In_opt_ HWND hWnd, _In_opt_ PWSTR Parameters, _In_ ULONG ShowWindowType, @@ -370,6 +425,7 @@ BOOLEAN PhShellProcessHacker( _In_opt_ ULONG Timeout, _Out_opt_ PHANDLE ProcessHandle ); +// end_phapppub BOOLEAN PhShellProcessHackerEx( _In_opt_ HWND hWnd, @@ -386,6 +442,7 @@ BOOLEAN PhCreateProcessIgnoreIfeoDebugger( _In_ PWSTR FileName ); +// begin_phapppub typedef struct _PH_TN_COLUMN_MENU_DATA { HWND TreeNewHandle; @@ -404,9 +461,12 @@ typedef struct _PH_TN_COLUMN_MENU_DATA #define PH_TN_COLUMN_MENU_SIZE_ALL_COLUMNS_TO_FIT_ID ((ULONG)-4) PHAPPAPI -VOID PhInitializeTreeNewColumnMenu( +VOID +NTAPI +PhInitializeTreeNewColumnMenu( _Inout_ PPH_TN_COLUMN_MENU_DATA Data ); +// end_phapppub #define PH_TN_COLUMN_MENU_NO_VISIBILITY 0x1 @@ -415,13 +475,18 @@ VOID PhInitializeTreeNewColumnMenuEx( _In_ ULONG Flags ); +// begin_phapppub PHAPPAPI -BOOLEAN PhHandleTreeNewColumnMenu( +BOOLEAN +NTAPI +PhHandleTreeNewColumnMenu( _Inout_ PPH_TN_COLUMN_MENU_DATA Data ); PHAPPAPI -VOID PhDeleteTreeNewColumnMenu( +VOID +NTAPI +PhDeleteTreeNewColumnMenu( _In_ PPH_TN_COLUMN_MENU_DATA Data ); @@ -444,40 +509,53 @@ typedef struct _PH_TN_FILTER_ENTRY } PH_TN_FILTER_ENTRY, *PPH_TN_FILTER_ENTRY; PHAPPAPI -VOID PhInitializeTreeNewFilterSupport( +VOID +NTAPI +PhInitializeTreeNewFilterSupport( _Out_ PPH_TN_FILTER_SUPPORT Support, _In_ HWND TreeNewHandle, _In_ PPH_LIST NodeList ); PHAPPAPI -VOID PhDeleteTreeNewFilterSupport( +VOID +NTAPI +PhDeleteTreeNewFilterSupport( _In_ PPH_TN_FILTER_SUPPORT Support ); PHAPPAPI -PPH_TN_FILTER_ENTRY PhAddTreeNewFilter( +PPH_TN_FILTER_ENTRY +NTAPI +PhAddTreeNewFilter( _In_ PPH_TN_FILTER_SUPPORT Support, _In_ PPH_TN_FILTER_FUNCTION Filter, _In_opt_ PVOID Context ); PHAPPAPI -VOID PhRemoveTreeNewFilter( +VOID +NTAPI +PhRemoveTreeNewFilter( _In_ PPH_TN_FILTER_SUPPORT Support, _In_ PPH_TN_FILTER_ENTRY Entry ); PHAPPAPI -BOOLEAN PhApplyTreeNewFiltersToNode( +BOOLEAN +NTAPI +PhApplyTreeNewFiltersToNode( _In_ PPH_TN_FILTER_SUPPORT Support, _In_ PPH_TREENEW_NODE Node ); PHAPPAPI -VOID PhApplyTreeNewFilters( +VOID +NTAPI +PhApplyTreeNewFilters( _In_ PPH_TN_FILTER_SUPPORT Support ); +// end_phapppub typedef struct _PH_COPY_CELL_CONTEXT { @@ -542,10 +620,10 @@ FORCEINLINE PVOID PhpGenericPropertyPageHeader( // mainwnd -#define PH_MAINWND_CLASSNAME L"ProcessHacker" +#define PH_MAINWND_CLASSNAME L"ProcessHacker" // phapppub #ifndef PH_MAINWND_PRIVATE -extern HWND PhMainWndHandle; +PHAPPAPI extern HWND PhMainWndHandle; // phapppub extern BOOLEAN PhMainWndExiting; #endif @@ -568,13 +646,16 @@ extern BOOLEAN PhMainWndExiting; #define WM_PH_NETWORK_ITEM_REMOVED (WM_APP + 111) #define WM_PH_NETWORK_ITEMS_UPDATED (WM_APP + 112) +// begin_phapppub #define WM_PH_SHOW_PROCESS_PROPERTIES (WM_APP + 120) #define WM_PH_DESTROY (WM_APP + 121) #define WM_PH_SAVE_ALL_SETTINGS (WM_APP + 122) #define WM_PH_PREPARE_FOR_EARLY_SHUTDOWN (WM_APP + 123) #define WM_PH_CANCEL_EARLY_SHUTDOWN (WM_APP + 124) +// end_phapppub #define WM_PH_DELAYED_LOAD_COMPLETED (WM_APP + 125) #define WM_PH_NOTIFY_ICON_MESSAGE (WM_APP + 126) +// begin_phapppub #define WM_PH_TOGGLE_VISIBLE (WM_APP + 127) #define WM_PH_SHOW_MEMORY_EDITOR (WM_APP + 128) #define WM_PH_SHOW_MEMORY_RESULTS (WM_APP + 129) @@ -584,17 +665,21 @@ extern BOOLEAN PhMainWndExiting; #define WM_PH_SELECT_PROCESS_NODE (WM_APP + 133) #define WM_PH_SELECT_SERVICE_ITEM (WM_APP + 134) #define WM_PH_SELECT_NETWORK_ITEM (WM_APP + 135) +// end_phapppub #define WM_PH_UPDATE_FONT (WM_APP + 136) #define WM_PH_GET_FONT (WM_APP + 137) +// begin_phapppub #define WM_PH_INVOKE (WM_APP + 138) #define WM_PH_ADD_MENU_ITEM (WM_APP + 139) #define WM_PH_ADD_TAB_PAGE (WM_APP + 140) #define WM_PH_REFRESH (WM_APP + 141) #define WM_PH_GET_UPDATE_AUTOMATICALLY (WM_APP + 142) #define WM_PH_SET_UPDATE_AUTOMATICALLY (WM_APP + 143) +// end_phapppub #define WM_PH_ICON_CLICK (WM_APP + 144) #define WM_PH_LAST (WM_APP + 144) +// begin_phapppub #define ProcessHacker_ShowProcessProperties(hWnd, ProcessItem) \ SendMessage(hWnd, WM_PH_SHOW_PROCESS_PROPERTIES, 0, (LPARAM)(ProcessItem)) #define ProcessHacker_Destroy(hWnd) \ @@ -635,6 +720,7 @@ extern BOOLEAN PhMainWndExiting; ((BOOLEAN)SendMessage(hWnd, WM_PH_GET_UPDATE_AUTOMATICALLY, 0, 0)) #define ProcessHacker_SetUpdateAutomatically(hWnd, Value) \ SendMessage(hWnd, WM_PH_SET_UPDATE_AUTOMATICALLY, (WPARAM)(Value), 0) +// end_phapppub #define ProcessHacker_IconClick(hWnd) \ SendMessage(hWnd, WM_PH_ICON_CLICK, 0, 0) @@ -655,6 +741,7 @@ typedef struct _PH_SHOWMEMORYRESULTS PPH_LIST Results; } PH_SHOWMEMORYRESULTS, *PPH_SHOWMEMORYRESULTS; +// begin_phapppub typedef struct _PH_LAYOUT_PADDING_DATA { RECT Padding; @@ -695,7 +782,9 @@ typedef struct _PH_ADDITIONAL_TAB_PAGE PPH_TAB_PAGE_CALLBACK_FUNCTION InitializeSectionMenuItemsCallback; PVOID Reserved[3]; } PH_ADDITIONAL_TAB_PAGE, *PPH_ADDITIONAL_TAB_PAGE; +// end_phapppub +// begin_phapppub #define PH_NOTIFY_MINIMUM 0x1 #define PH_NOTIFY_PROCESS_CREATE 0x1 #define PH_NOTIFY_PROCESS_DELETE 0x2 @@ -705,6 +794,7 @@ typedef struct _PH_ADDITIONAL_TAB_PAGE #define PH_NOTIFY_SERVICE_STOP 0x20 #define PH_NOTIFY_MAXIMUM 0x40 #define PH_NOTIFY_VALID_MASK 0x3f +// end_phapppub BOOLEAN PhMainWndInitialization( _In_ INT ShowCommand @@ -727,12 +817,16 @@ VOID PhShowIconContextMenu( _In_ POINT Location ); +// begin_phapppub PHAPPAPI -VOID PhShowIconNotification( +VOID +NTAPI +PhShowIconNotification( _In_ PWSTR Title, _In_ PWSTR Text, _In_ ULONG Flags ); +// end_phapppub VOID PhShowDetailsForIconNotification( VOID @@ -783,6 +877,8 @@ struct _PH_PLUGIN *PhFindPlugin2( #define PH_PROCESS_PROPCONTEXT_MAXPAGES 20 +typedef struct _PH_PROCESS_PROPCONTEXT *PPH_PROCESS_PROPCONTEXT; // phapppub + typedef struct _PH_PROCESS_PROPCONTEXT { PPH_PROCESS_ITEM ProcessItem; @@ -795,6 +891,7 @@ typedef struct _PH_PROCESS_PROPCONTEXT HANDLE SelectThreadId; } PH_PROCESS_PROPCONTEXT, *PPH_PROCESS_PROPCONTEXT; +// begin_phapppub typedef struct _PH_PROCESS_PROPPAGECONTEXT { PPH_PROCESS_PROPCONTEXT PropContext; @@ -803,48 +900,64 @@ typedef struct _PH_PROCESS_PROPPAGECONTEXT BOOLEAN LayoutInitialized; } PH_PROCESS_PROPPAGECONTEXT, *PPH_PROCESS_PROPPAGECONTEXT; +// end_phapppub BOOLEAN PhProcessPropInitialization( VOID ); +// begin_phapppub PHAPPAPI -PPH_PROCESS_PROPCONTEXT PhCreateProcessPropContext( +PPH_PROCESS_PROPCONTEXT +NTAPI +PhCreateProcessPropContext( _In_ HWND ParentWindowHandle, _In_ PPH_PROCESS_ITEM ProcessItem ); +// end_phapppub VOID PhRefreshProcessPropContext( _Inout_ PPH_PROCESS_PROPCONTEXT PropContext ); +// begin_phapppub PHAPPAPI -VOID PhSetSelectThreadIdProcessPropContext( +VOID +NTAPI +PhSetSelectThreadIdProcessPropContext( _Inout_ PPH_PROCESS_PROPCONTEXT PropContext, _In_ HANDLE ThreadId ); PHAPPAPI -BOOLEAN PhAddProcessPropPage( +BOOLEAN +NTAPI +PhAddProcessPropPage( _Inout_ PPH_PROCESS_PROPCONTEXT PropContext, _In_ _Assume_refs_(1) PPH_PROCESS_PROPPAGECONTEXT PropPageContext ); PHAPPAPI -BOOLEAN PhAddProcessPropPage2( +BOOLEAN +NTAPI +PhAddProcessPropPage2( _Inout_ PPH_PROCESS_PROPCONTEXT PropContext, _In_ HPROPSHEETPAGE PropSheetPageHandle ); PHAPPAPI -PPH_PROCESS_PROPPAGECONTEXT PhCreateProcessPropPageContext( +PPH_PROCESS_PROPPAGECONTEXT +NTAPI +PhCreateProcessPropPageContext( _In_ LPCWSTR Template, _In_ DLGPROC DlgProc, _In_opt_ PVOID Context ); PHAPPAPI -PPH_PROCESS_PROPPAGECONTEXT PhCreateProcessPropPageContextEx( +PPH_PROCESS_PROPPAGECONTEXT +NTAPI +PhCreateProcessPropPageContextEx( _In_opt_ PVOID InstanceHandle, _In_ LPCWSTR Template, _In_ DLGPROC DlgProc, @@ -852,7 +965,9 @@ PPH_PROCESS_PROPPAGECONTEXT PhCreateProcessPropPageContextEx( ); PHAPPAPI -BOOLEAN PhPropPageDlgProcHeader( +BOOLEAN +NTAPI +PhPropPageDlgProcHeader( _In_ HWND hwndDlg, _In_ UINT uMsg, _In_ LPARAM lParam, @@ -862,14 +977,18 @@ BOOLEAN PhPropPageDlgProcHeader( ); PHAPPAPI -VOID PhPropPageDlgProcDestroy( +VOID +NTAPI +PhPropPageDlgProcDestroy( _In_ HWND hwndDlg ); #define PH_PROP_PAGE_TAB_CONTROL_PARENT ((PPH_LAYOUT_ITEM)0x1) PHAPPAPI -PPH_LAYOUT_ITEM PhAddPropPageLayoutItem( +PPH_LAYOUT_ITEM +NTAPI +PhAddPropPageLayoutItem( _In_ HWND hwnd, _In_ HWND Handle, _In_ PPH_LAYOUT_ITEM ParentItem, @@ -877,11 +996,15 @@ PPH_LAYOUT_ITEM PhAddPropPageLayoutItem( ); PHAPPAPI -VOID PhDoPropPageLayout( +VOID +NTAPI +PhDoPropPageLayout( _In_ HWND hwnd ); -FORCEINLINE PPH_LAYOUT_ITEM PhBeginPropPageLayout( +FORCEINLINE +PPH_LAYOUT_ITEM +PhBeginPropPageLayout( _In_ HWND hwndDlg, _In_ PPH_PROCESS_PROPPAGECONTEXT PropPageContext ) @@ -897,7 +1020,9 @@ FORCEINLINE PPH_LAYOUT_ITEM PhBeginPropPageLayout( } } -FORCEINLINE VOID PhEndPropPageLayout( +FORCEINLINE +VOID +PhEndPropPageLayout( _In_ HWND hwndDlg, _In_ PPH_PROCESS_PROPPAGECONTEXT PropPageContext ) @@ -907,9 +1032,12 @@ FORCEINLINE VOID PhEndPropPageLayout( } PHAPPAPI -BOOLEAN PhShowProcessProperties( +BOOLEAN +NTAPI +PhShowProcessProperties( _In_ PPH_PROCESS_PROPCONTEXT Context ); +// end_phapppub // log @@ -927,7 +1055,9 @@ BOOLEAN PhShowProcessProperties( #define PH_LOG_ENTRY_SERVICE_PAUSE 8 #define PH_LOG_ENTRY_SERVICE_LAST 8 -#define PH_LOG_ENTRY_MESSAGE 9 +#define PH_LOG_ENTRY_MESSAGE 9 // phapppub + +typedef struct _PH_LOG_ENTRY *PPH_LOG_ENTRY; // phapppub typedef struct _PH_LOG_ENTRY { @@ -955,8 +1085,8 @@ typedef struct _PH_LOG_ENTRY } PH_LOG_ENTRY, *PPH_LOG_ENTRY; #ifndef PH_LOG_PRIVATE -PH_CIRCULAR_BUFFER_PVOID PhLogBuffer; -PH_CALLBACK PhLoggedCallback; +extern PH_CIRCULAR_BUFFER_PVOID PhLogBuffer; +PHAPPAPI extern PH_CALLBACK PhLoggedCallback; // phapppub #endif VOID PhLogInitialization( @@ -981,16 +1111,22 @@ VOID PhLogServiceEntry( _In_ PPH_STRING DisplayName ); +// begin_phapppub PHAPPAPI -VOID PhLogMessageEntry( +VOID +NTAPI +PhLogMessageEntry( _In_ UCHAR Type, _In_ PPH_STRING Message ); PHAPPAPI -PPH_STRING PhFormatLogEntry( +PPH_STRING +NTAPI +PhFormatLogEntry( _In_ PPH_LOG_ENTRY Entry ); +// end_phapppub // dbgcon @@ -1007,147 +1143,194 @@ typedef enum _PH_ACTION_ELEVATION_LEVEL AlwaysElevateAction = 2 } PH_ACTION_ELEVATION_LEVEL; +// begin_phapppub typedef enum _PH_PHSVC_MODE { ElevatedPhSvcMode, Wow64PhSvcMode } PH_PHSVC_MODE; - + PHAPPAPI -BOOLEAN PhUiConnectToPhSvc( +BOOLEAN +NTAPI +PhUiConnectToPhSvc( _In_opt_ HWND hWnd, _In_ BOOLEAN ConnectOnly ); PHAPPAPI -BOOLEAN PhUiConnectToPhSvcEx( +BOOLEAN +NTAPI +PhUiConnectToPhSvcEx( _In_opt_ HWND hWnd, _In_ PH_PHSVC_MODE Mode, _In_ BOOLEAN ConnectOnly ); PHAPPAPI -VOID PhUiDisconnectFromPhSvc( +VOID +NTAPI +PhUiDisconnectFromPhSvc( VOID ); PHAPPAPI -BOOLEAN PhUiLockComputer( +BOOLEAN +NTAPI +PhUiLockComputer( _In_ HWND hWnd ); PHAPPAPI -BOOLEAN PhUiLogoffComputer( +BOOLEAN +NTAPI +PhUiLogoffComputer( _In_ HWND hWnd ); PHAPPAPI -BOOLEAN PhUiSleepComputer( +BOOLEAN +NTAPI +PhUiSleepComputer( _In_ HWND hWnd ); PHAPPAPI -BOOLEAN PhUiHibernateComputer( +BOOLEAN +NTAPI +PhUiHibernateComputer( _In_ HWND hWnd ); PHAPPAPI -BOOLEAN PhUiRestartComputer( +BOOLEAN +NTAPI +PhUiRestartComputer( _In_ HWND hWnd, _In_ ULONG Flags ); PHAPPAPI -BOOLEAN PhUiShutdownComputer( +BOOLEAN +NTAPI +PhUiShutdownComputer( _In_ HWND hWnd, _In_ ULONG Flags ); PHAPPAPI -BOOLEAN PhUiConnectSession( +BOOLEAN +NTAPI +PhUiConnectSession( _In_ HWND hWnd, _In_ ULONG SessionId ); PHAPPAPI -BOOLEAN PhUiDisconnectSession( +BOOLEAN +NTAPI +PhUiDisconnectSession( _In_ HWND hWnd, _In_ ULONG SessionId ); PHAPPAPI -BOOLEAN PhUiLogoffSession( +BOOLEAN +NTAPI +PhUiLogoffSession( _In_ HWND hWnd, _In_ ULONG SessionId ); PHAPPAPI -BOOLEAN PhUiTerminateProcesses( +BOOLEAN +NTAPI +PhUiTerminateProcesses( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM *Processes, _In_ ULONG NumberOfProcesses ); PHAPPAPI -BOOLEAN PhUiTerminateTreeProcess( +BOOLEAN +NTAPI +PhUiTerminateTreeProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process ); PHAPPAPI -BOOLEAN PhUiSuspendProcesses( +BOOLEAN +NTAPI +PhUiSuspendProcesses( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM *Processes, _In_ ULONG NumberOfProcesses ); PHAPPAPI -BOOLEAN PhUiResumeProcesses( +BOOLEAN +NTAPI +PhUiResumeProcesses( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM *Processes, _In_ ULONG NumberOfProcesses ); PHAPPAPI -BOOLEAN PhUiRestartProcess( +BOOLEAN +NTAPI +PhUiRestartProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process ); PHAPPAPI -BOOLEAN PhUiDebugProcess( +BOOLEAN +NTAPI +PhUiDebugProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process ); PHAPPAPI -BOOLEAN PhUiReduceWorkingSetProcesses( +BOOLEAN +NTAPI +PhUiReduceWorkingSetProcesses( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM *Processes, _In_ ULONG NumberOfProcesses ); PHAPPAPI -BOOLEAN PhUiSetVirtualizationProcess( +BOOLEAN +NTAPI +PhUiSetVirtualizationProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process, _In_ BOOLEAN Enable ); PHAPPAPI -BOOLEAN PhUiDetachFromDebuggerProcess( +BOOLEAN +NTAPI +PhUiDetachFromDebuggerProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process ); PHAPPAPI -BOOLEAN PhUiInjectDllProcess( +BOOLEAN +NTAPI +PhUiInjectDllProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process ); PHAPPAPI -BOOLEAN PhUiSetIoPriorityProcesses( +BOOLEAN +NTAPI +PhUiSetIoPriorityProcesses( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM *Processes, _In_ ULONG NumberOfProcesses, @@ -1155,14 +1338,18 @@ BOOLEAN PhUiSetIoPriorityProcesses( ); PHAPPAPI -BOOLEAN PhUiSetPagePriorityProcess( +BOOLEAN +NTAPI +PhUiSetPagePriorityProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process, _In_ ULONG PagePriority ); PHAPPAPI -BOOLEAN PhUiSetPriorityProcesses( +BOOLEAN +NTAPI +PhUiSetPriorityProcesses( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM *Processes, _In_ ULONG NumberOfProcesses, @@ -1170,57 +1357,75 @@ BOOLEAN PhUiSetPriorityProcesses( ); PHAPPAPI -BOOLEAN PhUiSetDepStatusProcess( +BOOLEAN +NTAPI +PhUiSetDepStatusProcess( _In_ HWND hWnd, _In_ PPH_PROCESS_ITEM Process ); PHAPPAPI -BOOLEAN PhUiStartService( +BOOLEAN +NTAPI +PhUiStartService( _In_ HWND hWnd, _In_ PPH_SERVICE_ITEM Service ); PHAPPAPI -BOOLEAN PhUiContinueService( +BOOLEAN +NTAPI +PhUiContinueService( _In_ HWND hWnd, _In_ PPH_SERVICE_ITEM Service ); PHAPPAPI -BOOLEAN PhUiPauseService( +BOOLEAN +NTAPI +PhUiPauseService( _In_ HWND hWnd, _In_ PPH_SERVICE_ITEM Service ); PHAPPAPI -BOOLEAN PhUiStopService( +BOOLEAN +NTAPI +PhUiStopService( _In_ HWND hWnd, _In_ PPH_SERVICE_ITEM Service ); PHAPPAPI -BOOLEAN PhUiDeleteService( +BOOLEAN +NTAPI +PhUiDeleteService( _In_ HWND hWnd, _In_ PPH_SERVICE_ITEM Service ); PHAPPAPI -BOOLEAN PhUiCloseConnections( +BOOLEAN +NTAPI +PhUiCloseConnections( _In_ HWND hWnd, _In_ PPH_NETWORK_ITEM *Connections, _In_ ULONG NumberOfConnections ); PHAPPAPI -BOOLEAN PhUiTerminateThreads( +BOOLEAN +NTAPI +PhUiTerminateThreads( _In_ HWND hWnd, _In_ PPH_THREAD_ITEM *Threads, _In_ ULONG NumberOfThreads ); PHAPPAPI -BOOLEAN PhUiForceTerminateThreads( +BOOLEAN +NTAPI +PhUiForceTerminateThreads( _In_ HWND hWnd, _In_ HANDLE ProcessId, _In_ PPH_THREAD_ITEM *Threads, @@ -1228,49 +1433,63 @@ BOOLEAN PhUiForceTerminateThreads( ); PHAPPAPI -BOOLEAN PhUiSuspendThreads( +BOOLEAN +NTAPI +PhUiSuspendThreads( _In_ HWND hWnd, _In_ PPH_THREAD_ITEM *Threads, _In_ ULONG NumberOfThreads ); PHAPPAPI -BOOLEAN PhUiResumeThreads( +BOOLEAN +NTAPI +PhUiResumeThreads( _In_ HWND hWnd, _In_ PPH_THREAD_ITEM *Threads, _In_ ULONG NumberOfThreads ); PHAPPAPI -BOOLEAN PhUiSetPriorityThread( +BOOLEAN +NTAPI +PhUiSetPriorityThread( _In_ HWND hWnd, _In_ PPH_THREAD_ITEM Thread, _In_ ULONG ThreadPriorityWin32 ); PHAPPAPI -BOOLEAN PhUiSetIoPriorityThread( +BOOLEAN +NTAPI +PhUiSetIoPriorityThread( _In_ HWND hWnd, _In_ PPH_THREAD_ITEM Thread, _In_ ULONG IoPriority ); PHAPPAPI -BOOLEAN PhUiSetPagePriorityThread( +BOOLEAN +NTAPI +PhUiSetPagePriorityThread( _In_ HWND hWnd, _In_ PPH_THREAD_ITEM Thread, _In_ ULONG PagePriority ); PHAPPAPI -BOOLEAN PhUiUnloadModule( +BOOLEAN +NTAPI +PhUiUnloadModule( _In_ HWND hWnd, _In_ HANDLE ProcessId, _In_ PPH_MODULE_ITEM Module ); PHAPPAPI -BOOLEAN PhUiFreeMemory( +BOOLEAN +NTAPI +PhUiFreeMemory( _In_ HWND hWnd, _In_ HANDLE ProcessId, _In_ PPH_MEMORY_ITEM MemoryItem, @@ -1278,7 +1497,9 @@ BOOLEAN PhUiFreeMemory( ); PHAPPAPI -BOOLEAN PhUiCloseHandles( +BOOLEAN +NTAPI +PhUiCloseHandles( _In_ HWND hWnd, _In_ HANDLE ProcessId, _In_ PPH_HANDLE_ITEM *Handles, @@ -1287,19 +1508,15 @@ BOOLEAN PhUiCloseHandles( ); PHAPPAPI -BOOLEAN PhUiSetAttributesHandle( +BOOLEAN +NTAPI +PhUiSetAttributesHandle( _In_ HWND hWnd, _In_ HANDLE ProcessId, _In_ PPH_HANDLE_ITEM Handle, _In_ ULONG Attributes ); - -PHAPPAPI -BOOLEAN PhUiDestroyHeap( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PVOID HeapHandle - ); +// end_phapppub // itemtips @@ -1352,12 +1569,16 @@ VOID PhShowProcessAffinityDialog( _In_opt_ PPH_THREAD_ITEM ThreadItem ); +// begin_phapppub PHAPPAPI -BOOLEAN PhShowProcessAffinityDialog2( +BOOLEAN +NTAPI +PhShowProcessAffinityDialog2( _In_ HWND ParentWindowHandle, _In_ ULONG_PTR AffinityMask, _Out_ PULONG_PTR NewAffinityMask ); +// end_phapppub // chcol @@ -1371,6 +1592,7 @@ VOID PhShowChooseColumnsDialog( // chdlg +// begin_phapppub #define PH_CHOICE_DIALOG_SAVED_CHOICES 10 #define PH_CHOICE_DIALOG_CHOICE 0x0 @@ -1379,7 +1601,9 @@ VOID PhShowChooseColumnsDialog( #define PH_CHOICE_DIALOG_TYPE_MASK 0x3 PHAPPAPI -BOOLEAN PhaChoiceDialog( +BOOLEAN +NTAPI +PhaChoiceDialog( _In_ HWND ParentWindowHandle, _In_ PWSTR Title, _In_ PWSTR Message, @@ -1391,15 +1615,20 @@ BOOLEAN PhaChoiceDialog( _Inout_opt_ PBOOLEAN SelectedOption, _In_opt_ PWSTR SavedChoicesSettingName ); +// end_phapppub // chproc +// begin_phapppub PHAPPAPI -BOOLEAN PhShowChooseProcessDialog( +BOOLEAN +NTAPI +PhShowChooseProcessDialog( _In_ HWND ParentWindowHandle, _In_ PWSTR Message, _Out_ PHANDLE ProcessId ); +// end_phapppub // findobj @@ -1566,11 +1795,15 @@ VOID PhShowPluginsDialog( // procrec +// begin_phapppub PHAPPAPI -VOID PhShowProcessRecordDialog( +VOID +NTAPI +PhShowProcessRecordDialog( _In_ HWND ParentWindowHandle, _In_ PPH_PROCESS_RECORD Record ); +// end_phapppub // runas @@ -1647,14 +1880,18 @@ VOID PhShowCreateServiceDialog( // srvctl +// begin_phapppub #define WM_PH_SET_LIST_VIEW_SETTINGS (WM_APP + 701) PHAPPAPI -HWND PhCreateServiceListControl( +HWND +NTAPI +PhCreateServiceListControl( _In_ HWND ParentWindowHandle, _In_ PPH_SERVICE_ITEM *Services, _In_ ULONG NumberOfServices ); +// end_phapppub // srvprp diff --git a/2.x/trunk/ProcessHacker/include/phplug.h b/2.x/trunk/ProcessHacker/include/phplug.h index 866c8ecd7..59a0eb679 100644 --- a/2.x/trunk/ProcessHacker/include/phplug.h +++ b/2.x/trunk/ProcessHacker/include/phplug.h @@ -5,10 +5,7 @@ #include #include -#ifdef __cplusplus -extern "C" { -#endif - +// begin_phapppub // Callbacks typedef enum _PH_GENERAL_CALLBACK @@ -408,15 +405,20 @@ typedef struct _PH_PLUGIN_INFORMATION } PH_PLUGIN_INFORMATION, *PPH_PLUGIN_INFORMATION; #define PH_PLUGIN_FLAG_RESERVED 0x1 +// end_phapppub +// begin_phapppub typedef struct _PH_PLUGIN { + // Public + PH_AVL_LINKS Links; PVOID Reserved; PVOID DllBase; +// end_phapppub - // Everything below is private and should not be accessed by plugins. + // Private PPH_STRING FileName; ULONG Flags; @@ -425,8 +427,11 @@ typedef struct _PH_PLUGIN PH_CALLBACK Callbacks[PluginCallbackMaximum]; PH_EM_APP_CONTEXT AppContext; +// begin_phapppub } PH_PLUGIN, *PPH_PLUGIN; +// end_phapppub +// begin_phapppub // Plugin API PHAPPAPI @@ -575,6 +580,7 @@ PhPluginAddMenuHook( _In_ PPH_PLUGIN Plugin, _In_opt_ PVOID Context ); +// end_phapppub VOID NTAPI @@ -592,6 +598,7 @@ PhPluginTriggerEMenuItem( _In_ PPH_EMENU_ITEM Item ); +// begin_phapppub PHAPPAPI BOOLEAN NTAPI @@ -662,9 +669,6 @@ PhPluginCallPhSvc( _Out_writes_bytes_opt_(OutLength) PVOID OutBuffer, _In_ ULONG OutLength ); - -#ifdef __cplusplus -} -#endif +// end_phapppub #endif diff --git a/2.x/trunk/ProcessHacker/include/procgrp.h b/2.x/trunk/ProcessHacker/include/procgrp.h index 24427f9b8..6ac61b530 100644 --- a/2.x/trunk/ProcessHacker/include/procgrp.h +++ b/2.x/trunk/ProcessHacker/include/procgrp.h @@ -1,11 +1,13 @@ #ifndef PH_PROCGRP_H #define PH_PROCGRP_H +// begin_phapppub typedef struct _PH_PROCESS_GROUP { PPH_PROCESS_ITEM Representative; // An element of Processes (no extra reference added) PPH_LIST Processes; // List of PPH_PROCESS_ITEM } PH_PROCESS_GROUP, *PPH_PROCESS_GROUP; +// end_phapppub typedef VOID (NTAPI *PPH_SORT_LIST_FUNCTION)( _In_ PPH_LIST List, diff --git a/2.x/trunk/ProcessHacker/include/procprpp.h b/2.x/trunk/ProcessHacker/include/procprpp.h index 3b178fb66..e3d09cb1e 100644 --- a/2.x/trunk/ProcessHacker/include/procprpp.h +++ b/2.x/trunk/ProcessHacker/include/procprpp.h @@ -147,6 +147,7 @@ INT_PTR CALLBACK PhpProcessServicesDlgProc( #define WM_PH_THREADS_UPDATED (WM_APP + 204) #define WM_PH_THREAD_SELECTION_CHANGED (WM_APP + 205) +// begin_phapppub typedef struct _PH_THREADS_CONTEXT { PPH_THREAD_PROVIDER Provider; @@ -158,16 +159,28 @@ typedef struct _PH_THREADS_CONTEXT PH_CALLBACK_REGISTRATION LoadingStateChangedEventRegistration; HWND WindowHandle; +// end_phapppub - PH_THREAD_LIST_CONTEXT ListContext; + union + { + PH_THREAD_LIST_CONTEXT ListContext; + struct + { + HWND Private; // phapppub + HWND TreeNewHandle; // phapppub + } PublicUse; + }; BOOLEAN NeedsRedraw; +// begin_phapppub } PH_THREADS_CONTEXT, *PPH_THREADS_CONTEXT; +// end_phapppub #define WM_PH_MODULE_ADDED (WM_APP + 211) #define WM_PH_MODULE_MODIFIED (WM_APP + 212) #define WM_PH_MODULE_REMOVED (WM_APP + 213) #define WM_PH_MODULES_UPDATED (WM_APP + 214) +// begin_phapppub typedef struct _PH_MODULES_CONTEXT { PPH_MODULE_PROVIDER Provider; @@ -178,18 +191,30 @@ typedef struct _PH_MODULES_CONTEXT PH_CALLBACK_REGISTRATION UpdatedEventRegistration; HWND WindowHandle; +// end_phapppub - PH_MODULE_LIST_CONTEXT ListContext; + union + { + PH_MODULE_LIST_CONTEXT ListContext; + struct + { + HWND Private; // phapppub + HWND TreeNewHandle; // phapppub + } PublicUse; + }; BOOLEAN NeedsRedraw; NTSTATUS LastRunStatus; PPH_STRING ErrorMessage; +// begin_phapppub } PH_MODULES_CONTEXT, *PPH_MODULES_CONTEXT; +// end_phapppub #define WM_PH_HANDLE_ADDED (WM_APP + 221) #define WM_PH_HANDLE_MODIFIED (WM_APP + 222) #define WM_PH_HANDLE_REMOVED (WM_APP + 223) #define WM_PH_HANDLES_UPDATED (WM_APP + 224) +// begin_phapppub typedef struct _PH_HANDLES_CONTEXT { PPH_HANDLE_PROVIDER Provider; @@ -200,26 +225,49 @@ typedef struct _PH_HANDLES_CONTEXT PH_CALLBACK_REGISTRATION UpdatedEventRegistration; HWND WindowHandle; +// end_phapppub - PH_HANDLE_LIST_CONTEXT ListContext; + union + { + PH_HANDLE_LIST_CONTEXT ListContext; + struct + { + HWND Private; // phapppub + HWND TreeNewHandle; // phapppub + } PublicUse; + }; BOOLEAN NeedsRedraw; BOOLEAN SelectedHandleProtected; BOOLEAN SelectedHandleInherit; NTSTATUS LastRunStatus; PPH_STRING ErrorMessage; +// begin_phapppub } PH_HANDLES_CONTEXT, *PPH_HANDLES_CONTEXT; +// end_phapppub +// begin_phapppub typedef struct _PH_MEMORY_CONTEXT { HANDLE ProcessId; HWND WindowHandle; +// end_phapppub - PH_MEMORY_LIST_CONTEXT ListContext; + union + { + PH_MEMORY_LIST_CONTEXT ListContext; + struct + { + HWND Private; // phapppub + HWND TreeNewHandle; // phapppub + } PublicUse; + }; PH_MEMORY_ITEM_LIST MemoryItemList; BOOLEAN MemoryItemListValid; NTSTATUS LastRunStatus; PPH_STRING ErrorMessage; +// begin_phapppub } PH_MEMORY_CONTEXT, *PPH_MEMORY_CONTEXT; +// end_phapppub #define WM_PH_STATISTICS_UPDATE (WM_APP + 231) diff --git a/2.x/trunk/ProcessHacker/include/providers.h b/2.x/trunk/ProcessHacker/include/providers.h index ea98485d8..4101bbce0 100644 --- a/2.x/trunk/ProcessHacker/include/providers.h +++ b/2.x/trunk/ProcessHacker/include/providers.h @@ -6,13 +6,12 @@ #define PH_RECORD_MAX_USAGE #define PH_ENABLE_VERIFY_CACHE -#ifndef PH_PROCPRV_PRIVATE extern PPH_OBJECT_TYPE PhProcessItemType; -PHAPPAPI extern PH_CALLBACK PhProcessAddedEvent; -PHAPPAPI extern PH_CALLBACK PhProcessModifiedEvent; -PHAPPAPI extern PH_CALLBACK PhProcessRemovedEvent; -PHAPPAPI extern PH_CALLBACK PhProcessesUpdatedEvent; +PHAPPAPI extern PH_CALLBACK PhProcessAddedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhProcessModifiedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhProcessRemovedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhProcessesUpdatedEvent; // phapppub extern PPH_LIST PhProcessRecordList; extern PH_QUEUED_LOCK PhProcessRecordListLock; @@ -76,8 +75,8 @@ extern PH_CIRCULAR_BUFFER_FLOAT PhMaxCpuUsageHistory; extern PH_CIRCULAR_BUFFER_ULONG64 PhMaxIoReadOtherHistory; extern PH_CIRCULAR_BUFFER_ULONG64 PhMaxIoWriteHistory; #endif -#endif +// begin_phapppub #define DPCS_PROCESS_ID ((HANDLE)(LONG_PTR)-2) #define INTERRUPTS_PROCESS_ID ((HANDLE)(LONG_PTR)-3) @@ -90,10 +89,12 @@ extern PH_CIRCULAR_BUFFER_ULONG64 PhMaxIoWriteHistory; // The process item has been removed. #define PH_PROCESS_ITEM_REMOVED 0x1 +// end_phapppub #define PH_INTEGRITY_STR_LEN 10 #define PH_INTEGRITY_STR_LEN_1 (PH_INTEGRITY_STR_LEN + 1) +// begin_phapppub typedef enum _VERIFY_RESULT VERIFY_RESULT; typedef struct _PH_PROCESS_RECORD *PPH_PROCESS_RECORD; @@ -227,7 +228,9 @@ typedef struct _PH_PROCESS_ITEM PH_UINTPTR_DELTA PrivateBytesDelta; PPH_STRING PackageFullName; } PH_PROCESS_ITEM, *PPH_PROCESS_ITEM; +// end_phapppub +// begin_phapppub // The process itself is dead. #define PH_PROCESS_RECORD_DEAD 0x1 // An extra reference has been added to the process record for the statistics system. @@ -250,41 +253,56 @@ typedef struct _PH_PROCESS_RECORD PPH_STRING CommandLine; /*PPH_STRING UserName;*/ } PH_PROCESS_RECORD, *PPH_PROCESS_RECORD; +// end_phapppub BOOLEAN PhProcessProviderInitialization( VOID ); +// begin_phapppub PHAPPAPI -PPH_STRING PhGetClientIdName( +PPH_STRING +NTAPI +PhGetClientIdName( _In_ PCLIENT_ID ClientId ); PHAPPAPI -PPH_STRING PhGetClientIdNameEx( +PPH_STRING +NTAPI +PhGetClientIdNameEx( _In_ PCLIENT_ID ClientId, _In_opt_ PPH_STRING ProcessName ); PHAPPAPI -PWSTR PhGetProcessPriorityClassString( +PWSTR +NTAPI +PhGetProcessPriorityClassString( _In_ ULONG PriorityClass ); +// end_phapppub PPH_PROCESS_ITEM PhCreateProcessItem( _In_ HANDLE ProcessId ); +// begin_phapppub PHAPPAPI -PPH_PROCESS_ITEM PhReferenceProcessItem( +PPH_PROCESS_ITEM +NTAPI +PhReferenceProcessItem( _In_ HANDLE ProcessId ); PHAPPAPI -VOID PhEnumProcessItems( +VOID +NTAPI +PhEnumProcessItems( _Out_opt_ PPH_PROCESS_ITEM **ProcessItems, _Out_ PULONG NumberOfProcessItems ); +// end_phapppub typedef struct _PH_VERIFY_FILE_INFO *PPH_VERIFY_FILE_INFO; @@ -301,18 +319,24 @@ VERIFY_RESULT PhVerifyFileCached( _In_ BOOLEAN CachedOnly ); +// begin_phapppub PHAPPAPI -BOOLEAN PhGetStatisticsTime( +BOOLEAN +NTAPI +PhGetStatisticsTime( _In_opt_ PPH_PROCESS_ITEM ProcessItem, _In_ ULONG Index, _Out_ PLARGE_INTEGER Time ); PHAPPAPI -PPH_STRING PhGetStatisticsTimeString( +PPH_STRING +NTAPI +PhGetStatisticsTimeString( _In_opt_ PPH_PROCESS_ITEM ProcessItem, _In_ ULONG Index ); +// end_phapppub VOID PhFlushProcessQueryData( _In_ BOOLEAN SendModifiedEvent @@ -322,61 +346,78 @@ VOID PhProcessProviderUpdate( _In_ PVOID Object ); +// begin_phapppub PHAPPAPI -VOID PhReferenceProcessRecord( +VOID +NTAPI +PhReferenceProcessRecord( _In_ PPH_PROCESS_RECORD ProcessRecord ); PHAPPAPI -BOOLEAN PhReferenceProcessRecordSafe( +BOOLEAN +NTAPI +PhReferenceProcessRecordSafe( _In_ PPH_PROCESS_RECORD ProcessRecord ); PHAPPAPI -VOID PhReferenceProcessRecordForStatistics( +VOID +NTAPI +PhReferenceProcessRecordForStatistics( _In_ PPH_PROCESS_RECORD ProcessRecord ); PHAPPAPI -VOID PhDereferenceProcessRecord( +VOID +NTAPI +PhDereferenceProcessRecord( _In_ PPH_PROCESS_RECORD ProcessRecord ); PHAPPAPI -PPH_PROCESS_RECORD PhFindProcessRecord( +PPH_PROCESS_RECORD +NTAPI +PhFindProcessRecord( _In_opt_ HANDLE ProcessId, _In_ PLARGE_INTEGER Time ); +// end_phapppub VOID PhPurgeProcessRecords( VOID ); +// begin_phapppub PHAPPAPI -PPH_PROCESS_ITEM PhReferenceProcessItemForParent( +PPH_PROCESS_ITEM +NTAPI +PhReferenceProcessItemForParent( _In_ HANDLE ParentProcessId, _In_ HANDLE ProcessId, _In_ PLARGE_INTEGER CreateTime ); PHAPPAPI -PPH_PROCESS_ITEM PhReferenceProcessItemForRecord( +PPH_PROCESS_ITEM +NTAPI +PhReferenceProcessItemForRecord( _In_ PPH_PROCESS_RECORD Record ); +// end_phapppub // srvprv -#ifndef PH_SRVPRV_PRIVATE extern PPH_OBJECT_TYPE PhServiceItemType; -PHAPPAPI extern PH_CALLBACK PhServiceAddedEvent; -PHAPPAPI extern PH_CALLBACK PhServiceModifiedEvent; -PHAPPAPI extern PH_CALLBACK PhServiceRemovedEvent; -PHAPPAPI extern PH_CALLBACK PhServicesUpdatedEvent; +PHAPPAPI extern PH_CALLBACK PhServiceAddedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhServiceModifiedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhServiceRemovedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhServicesUpdatedEvent; // phapppub extern BOOLEAN PhEnableServiceNonPoll; -#endif +// begin_phapppub typedef struct _PH_SERVICE_ITEM { PH_STRINGREF Key; // points to Name @@ -393,6 +434,7 @@ typedef struct _PH_SERVICE_ITEM // Config ULONG StartType; ULONG ErrorControl; +// end_phapppub BOOLEAN DelayedStart; BOOLEAN HasTriggers; @@ -400,8 +442,11 @@ typedef struct _PH_SERVICE_ITEM BOOLEAN NeedsConfigUpdate; WCHAR ProcessIdString[PH_INT32_STR_LEN_1]; +// begin_phapppub } PH_SERVICE_ITEM, *PPH_SERVICE_ITEM; +// end_phapppub +// begin_phapppub typedef struct _PH_SERVICE_MODIFIED_DATA { PPH_SERVICE_ITEM Service; @@ -415,6 +460,7 @@ typedef enum _PH_SERVICE_CHANGE ServicePaused, ServiceStopped } PH_SERVICE_CHANGE, *PPH_SERVICE_CHANGE; +// end_phapppub BOOLEAN PhServiceProviderInitialization( VOID @@ -424,19 +470,27 @@ PPH_SERVICE_ITEM PhCreateServiceItem( _In_opt_ LPENUM_SERVICE_STATUS_PROCESS Information ); +// begin_phapppub PHAPPAPI -PPH_SERVICE_ITEM PhReferenceServiceItem( +PPH_SERVICE_ITEM +NTAPI +PhReferenceServiceItem( _In_ PWSTR Name ); +// end_phapppub VOID PhMarkNeedsConfigUpdateServiceItem( _In_ PPH_SERVICE_ITEM ServiceItem ); +// begin_phapppub PHAPPAPI -PH_SERVICE_CHANGE PhGetServiceChange( +PH_SERVICE_CHANGE +NTAPI +PhGetServiceChange( _In_ PPH_SERVICE_MODIFIED_DATA Data ); +// end_phapppub VOID PhUpdateProcessItemServices( _In_ PPH_PROCESS_ITEM ProcessItem @@ -448,16 +502,15 @@ VOID PhServiceProviderUpdate( // netprv -#ifndef PH_NETPRV_PRIVATE extern PPH_OBJECT_TYPE PhNetworkItemType; -PHAPPAPI extern PH_CALLBACK PhNetworkItemAddedEvent; -PHAPPAPI extern PH_CALLBACK PhNetworkItemModifiedEvent; -PHAPPAPI extern PH_CALLBACK PhNetworkItemRemovedEvent; -PHAPPAPI extern PH_CALLBACK PhNetworkItemsUpdatedEvent; +PHAPPAPI extern PH_CALLBACK PhNetworkItemAddedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhNetworkItemModifiedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhNetworkItemRemovedEvent; // phapppub +PHAPPAPI extern PH_CALLBACK PhNetworkItemsUpdatedEvent; // phapppub extern BOOLEAN PhEnableNetworkProviderResolve; -#endif +// begin_phapppub #define PH_NETWORK_OWNER_INFO_SIZE 16 typedef struct _PH_NETWORK_ITEM @@ -485,6 +538,7 @@ typedef struct _PH_NETWORK_ITEM LARGE_INTEGER CreateTime; ULONGLONG OwnerInfo[PH_NETWORK_OWNER_INFO_SIZE]; } PH_NETWORK_ITEM, *PPH_NETWORK_ITEM; +// end_phapppub BOOLEAN PhNetworkProviderInitialization( VOID @@ -494,13 +548,17 @@ PPH_NETWORK_ITEM PhCreateNetworkItem( VOID ); +// begin_phapppub PHAPPAPI -PPH_NETWORK_ITEM PhReferenceNetworkItem( +PPH_NETWORK_ITEM +NTAPI +PhReferenceNetworkItem( _In_ ULONG ProtocolType, _In_ PPH_IP_ENDPOINT LocalEndpoint, _In_ PPH_IP_ENDPOINT RemoteEndpoint, _In_ HANDLE ProcessId ); +// end_phapppub PPH_STRING PhGetHostNameFromAddress( _In_ PPH_IP_ADDRESS Address @@ -510,21 +568,28 @@ VOID PhNetworkProviderUpdate( _In_ PVOID Object ); +// begin_phapppub PHAPPAPI -PWSTR PhGetProtocolTypeName( +PWSTR +NTAPI +PhGetProtocolTypeName( _In_ ULONG ProtocolType ); PHAPPAPI -PWSTR PhGetTcpStateName( +PWSTR +NTAPI +PhGetTcpStateName( _In_ ULONG State ); +// end_phapppub // modprv extern PPH_OBJECT_TYPE PhModuleProviderType; extern PPH_OBJECT_TYPE PhModuleItemType; +// begin_phapppub typedef struct _PH_MODULE_ITEM { PVOID BaseAddress; @@ -567,6 +632,7 @@ typedef struct _PH_MODULE_PROVIDER SLIST_HEADER QueryListHead; NTSTATUS RunStatus; } PH_MODULE_PROVIDER, *PPH_MODULE_PROVIDER; +// end_phapppub BOOLEAN PhModuleProviderInitialization( VOID @@ -598,6 +664,7 @@ VOID PhModuleProviderUpdate( extern PPH_OBJECT_TYPE PhThreadProviderType; extern PPH_OBJECT_TYPE PhThreadItemType; +// begin_phapppub typedef struct _PH_THREAD_ITEM { HANDLE ThreadId; @@ -652,6 +719,7 @@ typedef struct _PH_THREAD_PROVIDER SLIST_HEADER QueryListHead; ULONG RunId; } PH_THREAD_PROVIDER, *PPH_THREAD_PROVIDER; +// end_phapppub BOOLEAN PhThreadProviderInitialization( VOID @@ -684,10 +752,14 @@ VOID PhDereferenceAllThreadItems( _In_ PPH_THREAD_PROVIDER ThreadProvider ); +// begin_phapppub PHAPPAPI -PPH_STRING PhGetThreadPriorityWin32String( +PPH_STRING +NTAPI +PhGetThreadPriorityWin32String( _In_ LONG PriorityWin32 ); +// end_phapppub VOID PhThreadProviderInitialUpdate( _In_ PPH_THREAD_PROVIDER ThreadProvider @@ -698,6 +770,7 @@ VOID PhThreadProviderInitialUpdate( extern PPH_OBJECT_TYPE PhHandleProviderType; extern PPH_OBJECT_TYPE PhHandleItemType; +// begin_phapppub #define PH_HANDLE_FILE_SHARED_READ 0x1 #define PH_HANDLE_FILE_SHARED_WRITE 0x2 #define PH_HANDLE_FILE_SHARED_DELETE 0x4 @@ -740,6 +813,7 @@ typedef struct _PH_HANDLE_PROVIDER PPH_HASHTABLE TempListHashtable; NTSTATUS RunStatus; } PH_HANDLE_PROVIDER, *PPH_HANDLE_PROVIDER; +// end_phapppub BOOLEAN PhHandleProviderInitialization( VOID @@ -777,6 +851,7 @@ VOID PhHandleProviderUpdate( extern PPH_OBJECT_TYPE PhMemoryItemType; +// begin_phapppub typedef enum _PH_MEMORY_REGION_TYPE { UnknownRegion, @@ -865,6 +940,7 @@ typedef struct _PH_MEMORY_ITEM_LIST PH_AVL_TREE Set; LIST_ENTRY ListHead; } PH_MEMORY_ITEM_LIST, *PPH_MEMORY_ITEM_LIST; +// end_phapppub BOOLEAN PhMemoryProviderInitialization( VOID @@ -887,13 +963,18 @@ PPH_MEMORY_ITEM PhCreateMemoryItem( VOID ); +// begin_phapppub PHAPPAPI -VOID PhDeleteMemoryItemList( +VOID +NTAPI +PhDeleteMemoryItemList( _In_ PPH_MEMORY_ITEM_LIST List ); PHAPPAPI -PPH_MEMORY_ITEM PhLookupMemoryItemList( +PPH_MEMORY_ITEM +NTAPI +PhLookupMemoryItemList( _In_ PPH_MEMORY_ITEM_LIST List, _In_ PVOID Address ); @@ -903,10 +984,13 @@ PPH_MEMORY_ITEM PhLookupMemoryItemList( #define PH_QUERY_MEMORY_WS_COUNTERS 0x4 PHAPPAPI -NTSTATUS PhQueryMemoryItemList( +NTSTATUS +NTAPI +PhQueryMemoryItemList( _In_ HANDLE ProcessId, _In_ ULONG Flags, _Out_ PPH_MEMORY_ITEM_LIST List ); +// end_phapppub #endif diff --git a/2.x/trunk/ProcessHacker/include/settings.h b/2.x/trunk/ProcessHacker/include/settings.h index 719f853c5..d335907f4 100644 --- a/2.x/trunk/ProcessHacker/include/settings.h +++ b/2.x/trunk/ProcessHacker/include/settings.h @@ -1,12 +1,14 @@ #ifndef PH_SETTINGS_H #define PH_SETTINGS_H +// begin_phapppub typedef enum _PH_SETTING_TYPE { StringSettingType, IntegerSettingType, IntegerPairSettingType } PH_SETTING_TYPE, PPH_SETTING_TYPE; +// end_phapppub typedef struct _PH_SETTING { @@ -30,44 +32,60 @@ VOID PhUpdateCachedSettings( VOID ); +// begin_phapppub PHAPPAPI -_May_raise_ ULONG PhGetIntegerSetting( +_May_raise_ ULONG +NTAPI +PhGetIntegerSetting( _In_ PWSTR Name ); PHAPPAPI -_May_raise_ PH_INTEGER_PAIR PhGetIntegerPairSetting( +_May_raise_ PH_INTEGER_PAIR +NTAPI +PhGetIntegerPairSetting( _In_ PWSTR Name ); PHAPPAPI -_May_raise_ PPH_STRING PhGetStringSetting( +_May_raise_ PPH_STRING +NTAPI +PhGetStringSetting( _In_ PWSTR Name ); PHAPPAPI -_May_raise_ VOID PhSetIntegerSetting( +_May_raise_ VOID +NTAPI +PhSetIntegerSetting( _In_ PWSTR Name, _In_ ULONG Value ); PHAPPAPI -_May_raise_ VOID PhSetIntegerPairSetting( +_May_raise_ VOID +NTAPI +PhSetIntegerPairSetting( _In_ PWSTR Name, _In_ PH_INTEGER_PAIR Value ); PHAPPAPI -_May_raise_ VOID PhSetStringSetting( +_May_raise_ VOID +NTAPI +PhSetStringSetting( _In_ PWSTR Name, _In_ PWSTR Value ); PHAPPAPI -_May_raise_ VOID PhSetStringSetting2( +_May_raise_ VOID +NTAPI +PhSetStringSetting2( _In_ PWSTR Name, _In_ PPH_STRINGREF Value ); +// end_phapppub VOID PhClearIgnoredSettings( VOID @@ -89,8 +107,9 @@ VOID PhResetSettings( VOID ); -#define PhaGetStringSetting(Name) ((PPH_STRING)PhAutoDereferenceObject(PhGetStringSetting(Name))) +#define PhaGetStringSetting(Name) ((PPH_STRING)PhAutoDereferenceObject(PhGetStringSetting(Name))) // phapppub +// begin_phapppub // High-level settings creation typedef struct _PH_SETTING_CREATE @@ -101,10 +120,13 @@ typedef struct _PH_SETTING_CREATE } PH_SETTING_CREATE, *PPH_SETTING_CREATE; PHAPPAPI -VOID PhAddSettings( +VOID +NTAPI +PhAddSettings( _In_ PPH_SETTING_CREATE Settings, _In_ ULONG NumberOfSettings ); +// end_phapppub // Cached settings diff --git a/2.x/trunk/ProcessHacker/include/sysinfo.h b/2.x/trunk/ProcessHacker/include/sysinfo.h index 8fcfd4b66..ad45f7bbb 100644 --- a/2.x/trunk/ProcessHacker/include/sysinfo.h +++ b/2.x/trunk/ProcessHacker/include/sysinfo.h @@ -1,6 +1,7 @@ #ifndef PH_SYSINFO_H #define PH_SYSINFO_H +// begin_phapppub typedef enum _PH_SYSINFO_VIEW_TYPE { SysInfoSummaryView, @@ -82,7 +83,9 @@ typedef struct _PH_SYSINFO_DRAW_PANEL PPH_STRING SubTitle; PPH_STRING SubTitleOverflow; } PH_SYSINFO_DRAW_PANEL, *PPH_SYSINFO_DRAW_PANEL; +// end_phapppub +// begin_phapppub typedef struct _PH_SYSINFO_SECTION { // Public @@ -99,6 +102,7 @@ typedef struct _PH_SYSINFO_SECTION PH_GRAPH_STATE GraphState; PPH_SYSINFO_PARAMETERS Parameters; PVOID Reserved2[3]; +// end_phapppub // Private @@ -115,18 +119,24 @@ typedef struct _PH_SYSINFO_SECTION ULONG PanelId; WNDPROC GraphOldWndProc; WNDPROC PanelOldWndProc; +// begin_phapppub } PH_SYSINFO_SECTION, *PPH_SYSINFO_SECTION; +// end_phapppub VOID PhSiNotifyChangeSettings( VOID ); +// begin_phapppub PHAPPAPI -VOID PhSiSetColorsGraphDrawInfo( +VOID +NTAPI +PhSiSetColorsGraphDrawInfo( _Out_ PPH_GRAPH_DRAW_INFO DrawInfo, _In_ COLORREF Color1, _In_ COLORREF Color2 ); +// end_phapppub VOID PhShowSystemInformationDialog( _In_opt_ PWSTR SectionName diff --git a/2.x/trunk/ProcessHacker/include/uimodels.h b/2.x/trunk/ProcessHacker/include/uimodels.h index 69486e3a8..d7f4ee448 100644 --- a/2.x/trunk/ProcessHacker/include/uimodels.h +++ b/2.x/trunk/ProcessHacker/include/uimodels.h @@ -1,6 +1,7 @@ #ifndef PH_UIMODELS_H #define PH_UIMODELS_H +// begin_phapppub // Common state highlighting support typedef struct _PH_SH_STATE @@ -9,6 +10,7 @@ typedef struct _PH_SH_STATE HANDLE StateListHandle; ULONG TickCount; } PH_SH_STATE, *PPH_SH_STATE; +// end_phapppub FORCEINLINE VOID PhChangeShStateTn( _Inout_ PPH_TREENEW_NODE Node, @@ -206,6 +208,7 @@ FORCEINLINE VOID PhChangeShStateTn( #define PHPN_APPID 0x200 #define PHPN_DPIAWARENESS 0x400 +// begin_phapppub typedef struct _PH_PROCESS_NODE { PH_TREENEW_NODE Node; @@ -219,6 +222,7 @@ typedef struct _PH_PROCESS_NODE struct _PH_PROCESS_NODE *Parent; PPH_LIST Children; +// end_phapppub PH_STRINGREF TextCache[PHPRTLC_MAXIMUM]; @@ -311,7 +315,9 @@ typedef struct _PH_PROCESS_NODE PH_GRAPH_BUFFERS CpuGraphBuffers; PH_GRAPH_BUFFERS PrivateGraphBuffers; PH_GRAPH_BUFFERS IoGraphBuffers; +// begin_phapppub } PH_PROCESS_NODE, *PPH_PROCESS_NODE; +// end_phapppub VOID PhProcessTreeListInitialization( VOID @@ -333,64 +339,90 @@ VOID PhReloadSettingsProcessTreeList( VOID ); +// begin_phapppub PHAPPAPI -struct _PH_TN_FILTER_SUPPORT *PhGetFilterSupportProcessTreeList( +struct _PH_TN_FILTER_SUPPORT * +NTAPI +PhGetFilterSupportProcessTreeList( VOID ); +// end_phapppub PPH_PROCESS_NODE PhAddProcessNode( _In_ PPH_PROCESS_ITEM ProcessItem, _In_ ULONG RunId ); +// begin_phapppub PHAPPAPI -PPH_PROCESS_NODE PhFindProcessNode( +PPH_PROCESS_NODE +NTAPI +PhFindProcessNode( _In_ HANDLE ProcessId ); +// end_phapppub VOID PhRemoveProcessNode( _In_ PPH_PROCESS_NODE ProcessNode ); +// begin_phapppub PHAPPAPI -VOID PhUpdateProcessNode( +VOID +NTAPI +PhUpdateProcessNode( _In_ PPH_PROCESS_NODE ProcessNode ); +// end_phapppub VOID PhTickProcessNodes( VOID ); +// begin_phapppub PHAPPAPI -PPH_PROCESS_ITEM PhGetSelectedProcessItem( +PPH_PROCESS_ITEM +NTAPI +PhGetSelectedProcessItem( VOID ); PHAPPAPI -VOID PhGetSelectedProcessItems( +VOID +NTAPI +PhGetSelectedProcessItems( _Out_ PPH_PROCESS_ITEM **Processes, _Out_ PULONG NumberOfProcesses ); PHAPPAPI -VOID PhDeselectAllProcessNodes( +VOID +NTAPI +PhDeselectAllProcessNodes( VOID ); PHAPPAPI -VOID PhExpandAllProcessNodes( +VOID +NTAPI +PhExpandAllProcessNodes( _In_ BOOLEAN Expand ); PHAPPAPI -VOID PhInvalidateAllProcessNodes( +VOID +NTAPI +PhInvalidateAllProcessNodes( VOID ); PHAPPAPI -VOID PhSelectAndEnsureVisibleProcessNode( +VOID +NTAPI +PhSelectAndEnsureVisibleProcessNode( _In_ PPH_PROCESS_NODE ProcessNode ); +// end_phapppub VOID PhSelectAndEnsureVisibleProcessNodes( _In_ PPH_PROCESS_NODE *ProcessNodes, @@ -438,6 +470,7 @@ PPH_LIST PhDuplicateProcessNodeList( #define PHSN_CONFIG 0x1 #define PHSN_DESCRIPTION 0x2 +// begin_phapppub typedef struct _PH_SERVICE_NODE { PH_TREENEW_NODE Node; @@ -445,6 +478,7 @@ typedef struct _PH_SERVICE_NODE PH_SH_STATE ShState; PPH_SERVICE_ITEM ServiceItem; +// end_phapppub PH_STRINGREF TextCache[PHSVTLC_MAXIMUM]; @@ -458,7 +492,9 @@ typedef struct _PH_SERVICE_NODE PPH_STRING Description; PPH_STRING TooltipText; +// begin_phapppub } PH_SERVICE_NODE, *PPH_SERVICE_NODE; +// end_phapppub VOID PhServiceTreeListInitialization( VOID @@ -476,54 +512,76 @@ VOID PhSaveSettingsServiceTreeList( VOID ); +// begin_phapppub PHAPPAPI -struct _PH_TN_FILTER_SUPPORT *PhGetFilterSupportServiceTreeList( +struct _PH_TN_FILTER_SUPPORT * +NTAPI +PhGetFilterSupportServiceTreeList( VOID ); +// end_phapppub PPH_SERVICE_NODE PhAddServiceNode( _In_ PPH_SERVICE_ITEM ServiceItem, _In_ ULONG RunId ); +// begin_phapppub PHAPPAPI -PPH_SERVICE_NODE PhFindServiceNode( +PPH_SERVICE_NODE +NTAPI +PhFindServiceNode( _In_ PPH_SERVICE_ITEM ServiceItem ); +// end_phapppub VOID PhRemoveServiceNode( _In_ PPH_SERVICE_NODE ServiceNode ); +// begin_phapppub PHAPPAPI -VOID PhUpdateServiceNode( +VOID +NTAPI +PhUpdateServiceNode( _In_ PPH_SERVICE_NODE ServiceNode ); +// end_phapppub VOID PhTickServiceNodes( VOID ); +// begin_phapppub PHAPPAPI -PPH_SERVICE_ITEM PhGetSelectedServiceItem( +PPH_SERVICE_ITEM +NTAPI +PhGetSelectedServiceItem( VOID ); PHAPPAPI -VOID PhGetSelectedServiceItems( +VOID +NTAPI +PhGetSelectedServiceItems( _Out_ PPH_SERVICE_ITEM **Services, _Out_ PULONG NumberOfServices ); PHAPPAPI -VOID PhDeselectAllServiceNodes( +VOID +NTAPI +PhDeselectAllServiceNodes( VOID ); PHAPPAPI -VOID PhSelectAndEnsureVisibleServiceNode( +VOID +NTAPI +PhSelectAndEnsureVisibleServiceNode( _In_ PPH_SERVICE_NODE ServiceNode ); +// end_phapppub VOID PhCopyServiceList( VOID @@ -549,6 +607,7 @@ VOID PhWriteServiceList( #define PHNETLC_TIMESTAMP 8 #define PHNETLC_MAXIMUM 9 +// begin_phapppub typedef struct _PH_NETWORK_NODE { PH_TREENEW_NODE Node; @@ -556,6 +615,7 @@ typedef struct _PH_NETWORK_NODE PH_SH_STATE ShState; PPH_NETWORK_ITEM NetworkItem; +// end_phapppub PH_STRINGREF TextCache[PHNETLC_MAXIMUM]; @@ -566,7 +626,9 @@ typedef struct _PH_NETWORK_NODE PPH_STRING TimeStampText; PPH_STRING TooltipText; +// begin_phapppub } PH_NETWORK_NODE, *PPH_NETWORK_NODE; +// end_phapppub VOID PhNetworkTreeListInitialization( VOID @@ -584,22 +646,28 @@ VOID PhSaveSettingsNetworkTreeList( VOID ); +// begin_phapppub PHAPPAPI -struct _PH_TN_FILTER_SUPPORT *PhGetFilterSupportNetworkTreeList( +struct _PH_TN_FILTER_SUPPORT * +NTAPI +PhGetFilterSupportNetworkTreeList( VOID ); +// end_phapppub PPH_NETWORK_NODE PhAddNetworkNode( _In_ PPH_NETWORK_ITEM NetworkItem, _In_ ULONG RunId ); +// begin_phapppub PHAPPAPI PPH_NETWORK_NODE NTAPI PhFindNetworkNode( _In_ PPH_NETWORK_ITEM NetworkItem ); +// end_phapppub VOID PhRemoveNetworkNode( _In_ PPH_NETWORK_NODE NetworkNode @@ -652,6 +720,7 @@ VOID PhWriteNetworkList( #define PHTHTLC_MAXIMUM 6 +// begin_phapppub typedef struct _PH_THREAD_NODE { PH_TREENEW_NODE Node; @@ -660,6 +729,7 @@ typedef struct _PH_THREAD_NODE HANDLE ThreadId; PPH_THREAD_ITEM ThreadItem; +// end_phapppub PH_STRINGREF TextCache[PHTHTLC_MAXIMUM]; @@ -669,7 +739,9 @@ typedef struct _PH_THREAD_NODE PPH_STRING CyclesDeltaText; // used for Context Switches Delta as well PPH_STRING StartAddressText; PPH_STRING PriorityText; +// begin_phapppub } PH_THREAD_NODE, *PPH_THREAD_NODE; +// end_phapppub typedef struct _PH_THREAD_LIST_CONTEXT { @@ -770,6 +842,7 @@ VOID PhDeselectAllThreadNodes( #define PHMOTLC_MAXIMUM 16 +// begin_phapppub typedef struct _PH_MODULE_NODE { PH_TREENEW_NODE Node; @@ -777,6 +850,7 @@ typedef struct _PH_MODULE_NODE PH_SH_STATE ShState; PPH_MODULE_ITEM ModuleItem; +// end_phapppub PH_STRINGREF TextCache[PHMOTLC_MAXIMUM]; @@ -788,7 +862,9 @@ typedef struct _PH_MODULE_NODE WCHAR LoadCountText[PH_INT32_STR_LEN_1]; PPH_STRING TimeStampText; PPH_STRING LoadTimeText; +// begin_phapppub } PH_MODULE_NODE, *PPH_MODULE_NODE; +// end_phapppub typedef struct _PH_MODULE_LIST_CONTEXT { @@ -881,6 +957,7 @@ VOID PhDeselectAllModuleNodes( #define PHHNTLC_MAXIMUM 9 +// begin_phapppub typedef struct _PH_HANDLE_NODE { PH_TREENEW_NODE Node; @@ -889,12 +966,15 @@ typedef struct _PH_HANDLE_NODE HANDLE Handle; PPH_HANDLE_ITEM HandleItem; +// end_phapppub PH_STRINGREF TextCache[PHHNTLC_MAXIMUM]; PPH_STRING GrantedAccessSymbolicText; WCHAR FileShareAccessText[4]; +// begin_phapppub } PH_HANDLE_NODE, *PPH_HANDLE_NODE; +// end_phapppub typedef struct _PH_HANDLE_LIST_CONTEXT { @@ -993,6 +1073,7 @@ VOID PhDeselectAllHandleNodes( #define PHMMTLC_MAXIMUM 12 +// begin_phapppub typedef struct _PH_MEMORY_NODE { PH_TREENEW_NODE Node; @@ -1004,6 +1085,7 @@ typedef struct _PH_MEMORY_NODE struct _PH_MEMORY_NODE *Parent; PPH_LIST Children; +// end_phapppub PH_STRINGREF TextCache[PHMMTLC_MAXIMUM]; @@ -1019,7 +1101,9 @@ typedef struct _PH_MEMORY_NODE PPH_STRING LockedWsText; PPH_STRING CommittedText; PPH_STRING PrivateText; +// begin_phapppub } PH_MEMORY_NODE, *PPH_MEMORY_NODE; +// end_phapppub typedef struct _PH_MEMORY_LIST_CONTEXT { diff --git a/2.x/trunk/ProcessHacker/netprv.c b/2.x/trunk/ProcessHacker/netprv.c index bbdd4914e..87e66b310 100644 --- a/2.x/trunk/ProcessHacker/netprv.c +++ b/2.x/trunk/ProcessHacker/netprv.c @@ -21,7 +21,6 @@ * along with Process Hacker. If not, see . */ -#define PH_NETPRV_PRIVATE #include #include #include diff --git a/2.x/trunk/ProcessHacker/procprv.c b/2.x/trunk/ProcessHacker/procprv.c index 731b4810c..7bb616bc2 100644 --- a/2.x/trunk/ProcessHacker/procprv.c +++ b/2.x/trunk/ProcessHacker/procprv.c @@ -55,7 +55,6 @@ * available for DPCs and Interrupts separately (only a "system" cycle time). */ -#define PH_PROCPRV_PRIVATE #include #include #include diff --git a/2.x/trunk/ProcessHacker/sdk/phapppub.h b/2.x/trunk/ProcessHacker/sdk/phapppub.h deleted file mode 100644 index a96e3d375..000000000 --- a/2.x/trunk/ProcessHacker/sdk/phapppub.h +++ /dev/null @@ -1,1447 +0,0 @@ -#ifndef PH_PHAPPPUB_H -#define PH_PHAPPPUB_H - -// Process Hacker application functions exposed to plugins - -#ifdef __cplusplus -extern "C" { -#endif - -// main - -PHAPPAPI extern HFONT PhApplicationFont; - -PHAPPAPI -VOID -NTAPI -PhRegisterDialog( - _In_ HWND DialogWindowHandle - ); - -PHAPPAPI -VOID -NTAPI -PhUnregisterDialog( - _In_ HWND DialogWindowHandle - ); - -typedef BOOLEAN (NTAPI *PPH_MESSAGE_LOOP_FILTER)( - _In_ PMSG Message, - _In_ PVOID Context - ); - -PHAPPAPI -struct _PH_MESSAGE_LOOP_FILTER_ENTRY *PhRegisterMessageLoopFilter( - _In_ PPH_MESSAGE_LOOP_FILTER Filter, - _In_opt_ PVOID Context - ); - -PHAPPAPI -VOID PhUnregisterMessageLoopFilter( - _In_ struct _PH_MESSAGE_LOOP_FILTER_ENTRY *FilterEntry - ); - -// Common state highlighting support - -typedef struct _PH_SH_STATE -{ - PH_ITEM_STATE State; - ULONG_PTR Private1; - ULONG Private2; -} PH_SH_STATE, *PPH_SH_STATE; - -// uimodels - -typedef struct _PH_PROCESS_NODE -{ - PH_TREENEW_NODE Node; - - PH_HASH_ENTRY HashEntry; - - PH_SH_STATE ShState; - - HANDLE ProcessId; - PPH_PROCESS_ITEM ProcessItem; - - struct _PH_PROCESS_NODE *Parent; - PPH_LIST Children; - - // ... -} PH_PROCESS_NODE, *PPH_PROCESS_NODE; - -typedef struct _PH_SERVICE_NODE -{ - PH_TREENEW_NODE Node; - - PH_SH_STATE ShState; - - PPH_SERVICE_ITEM ServiceItem; - - // ... -} PH_SERVICE_NODE, *PPH_SERVICE_NODE; - -typedef struct _PH_NETWORK_NODE -{ - PH_TREENEW_NODE Node; - - PH_SH_STATE ShState; - - PPH_NETWORK_ITEM NetworkItem; - - // ... -} PH_NETWORK_NODE, *PPH_NETWORK_NODE; - -typedef struct _PH_THREAD_NODE -{ - PH_TREENEW_NODE Node; - - PH_SH_STATE ShState; - - HANDLE ThreadId; - PPH_THREAD_ITEM ThreadItem; - - // ... -} PH_THREAD_NODE, *PPH_THREAD_NODE; - -typedef struct _PH_MODULE_NODE -{ - PH_TREENEW_NODE Node; - - PH_SH_STATE ShState; - - PPH_MODULE_ITEM ModuleItem; - - // ... -} PH_MODULE_NODE, *PPH_MODULE_NODE; - -typedef struct _PH_HANDLE_NODE -{ - PH_TREENEW_NODE Node; - - PH_SH_STATE ShState; - - HANDLE Handle; - PPH_HANDLE_ITEM HandleItem; - - // ... -} PH_HANDLE_NODE, *PPH_HANDLE_NODE; - -typedef struct _PH_MEMORY_NODE -{ - PH_TREENEW_NODE Node; - - BOOLEAN IsAllocationBase; - BOOLEAN Reserved1; - USHORT Reserved2; - PPH_MEMORY_ITEM MemoryItem; - - // ... -} PH_MEMORY_NODE, *PPH_MEMORY_NODE; - -// procprpp - -typedef struct _PH_THREADS_CONTEXT -{ - PPH_THREAD_PROVIDER Provider; - PH_CALLBACK_REGISTRATION Private1; - PH_CALLBACK_REGISTRATION Private2; - PH_CALLBACK_REGISTRATION Private3; - PH_CALLBACK_REGISTRATION Private4; - PH_CALLBACK_REGISTRATION Private5; - PH_CALLBACK_REGISTRATION Private6; - - HWND WindowHandle; - - HWND Private7; - HWND TreeNewHandle; - - // ... -} PH_THREADS_CONTEXT, *PPH_THREADS_CONTEXT; - -typedef struct _PH_MODULES_CONTEXT -{ - PPH_MODULE_PROVIDER Provider; - PH_PROVIDER_REGISTRATION Private1; - PH_CALLBACK_REGISTRATION Private2; - PH_CALLBACK_REGISTRATION Private3; - PH_CALLBACK_REGISTRATION Private4; - PH_CALLBACK_REGISTRATION Private5; - - HWND WindowHandle; - - HWND Private6; - HWND TreeNewHandle; - - // ... -} PH_MODULES_CONTEXT, *PPH_MODULES_CONTEXT; - -typedef struct _PH_HANDLES_CONTEXT -{ - PPH_HANDLE_PROVIDER Provider; - PH_PROVIDER_REGISTRATION Private1; - PH_CALLBACK_REGISTRATION Private2; - PH_CALLBACK_REGISTRATION Private3; - PH_CALLBACK_REGISTRATION Private4; - PH_CALLBACK_REGISTRATION Private5; - - HWND WindowHandle; - - HWND Private6; - HWND TreeNewHandle; - - // ... -} PH_HANDLES_CONTEXT, *PPH_HANDLES_CONTEXT; - -typedef struct _PH_MEMORY_CONTEXT -{ - HANDLE ProcessId; - HWND WindowHandle; - - HWND Private1; - HWND TreeNewHandle; - - // ... -} PH_MEMORY_CONTEXT, *PPH_MEMORY_CONTEXT; - -// proctree - -PHAPPAPI -struct _PH_TN_FILTER_SUPPORT * -NTAPI -PhGetFilterSupportProcessTreeList( - VOID - ); - -PHAPPAPI -PPH_PROCESS_NODE -NTAPI -PhFindProcessNode( - _In_ HANDLE ProcessId - ); - -PHAPPAPI -VOID -NTAPI -PhUpdateProcessNode( - _In_ PPH_PROCESS_NODE ProcessNode - ); - -PHAPPAPI -PPH_PROCESS_ITEM -NTAPI -PhGetSelectedProcessItem( - VOID - ); - -PHAPPAPI -VOID -NTAPI -PhGetSelectedProcessItems( - _Out_ PPH_PROCESS_ITEM **Processes, - _Out_ PULONG NumberOfProcesses - ); - -PHAPPAPI -VOID -NTAPI -PhDeselectAllProcessNodes( - VOID - ); - -PHAPPAPI -VOID -NTAPI -PhExpandAllProcessNodes( - _In_ BOOLEAN Expand - ); - -PHAPPAPI -VOID -NTAPI -PhInvalidateAllProcessNodes( - VOID - ); - -PHAPPAPI -VOID -NTAPI -PhSelectAndEnsureVisibleProcessNode( - _In_ PPH_PROCESS_NODE ProcessNode - ); - -// srvlist - -PHAPPAPI -struct _PH_TN_FILTER_SUPPORT * -NTAPI -PhGetFilterSupportServiceTreeList( - VOID - ); - -PHAPPAPI -PPH_SERVICE_NODE -NTAPI -PhFindServiceNode( - _In_ PPH_SERVICE_ITEM ServiceItem - ); - -PHAPPAPI -VOID -NTAPI -PhUpdateServiceNode( - _In_ PPH_SERVICE_NODE ServiceNode - ); - -PHAPPAPI -PPH_SERVICE_ITEM -NTAPI -PhGetSelectedServiceItem( - VOID - ); - -PHAPPAPI -VOID -NTAPI -PhGetSelectedServiceItems( - _Out_ PPH_SERVICE_ITEM **Services, - _Out_ PULONG NumberOfServices - ); - -PHAPPAPI -VOID -NTAPI -PhDeselectAllServiceNodes( - VOID - ); - -PHAPPAPI -VOID -NTAPI -PhSelectAndEnsureVisibleServiceNode( - _In_ PPH_SERVICE_NODE ServiceNode - ); - -// netlist - -PHAPPAPI -struct _PH_TN_FILTER_SUPPORT * -NTAPI -PhGetFilterSupportNetworkTreeList( - VOID - ); - -PHAPPAPI -PPH_NETWORK_NODE -NTAPI -PhFindNetworkNode( - _In_ PPH_NETWORK_ITEM NetworkItem - ); - -// appsup - -PHAPPAPI -BOOLEAN -NTAPI -PhGetProcessIsSuspended( - _In_ PSYSTEM_PROCESS_INFORMATION Process - ); - -typedef enum _PH_KNOWN_PROCESS_TYPE -{ - UnknownProcessType, - SystemProcessType, // ntoskrnl/ntkrnlpa/... - SessionManagerProcessType, // smss - WindowsSubsystemProcessType, // csrss - WindowsStartupProcessType, // wininit - ServiceControlManagerProcessType, // services - LocalSecurityAuthorityProcessType, // lsass - LocalSessionManagerProcessType, // lsm - WindowsLogonProcessType, // winlogon - ServiceHostProcessType, // svchost - RunDllAsAppProcessType, // rundll32 - ComSurrogateProcessType, // dllhost - TaskHostProcessType, // taskeng, taskhost, taskhostex - ExplorerProcessType, // explorer - UmdfHostProcessType, // wudfhost - MaximumProcessType, - KnownProcessTypeMask = 0xffff, - - KnownProcessWow64 = 0x20000 -} PH_KNOWN_PROCESS_TYPE, *PPH_KNOWN_PROCESS_TYPE; - -PHAPPAPI -NTSTATUS -NTAPI -PhGetProcessKnownType( - _In_ HANDLE ProcessHandle, - _Out_ PH_KNOWN_PROCESS_TYPE *KnownProcessType - ); - -typedef union _PH_KNOWN_PROCESS_COMMAND_LINE -{ - struct - { - PPH_STRING GroupName; - } ServiceHost; - struct - { - PPH_STRING FileName; - PPH_STRING ProcedureName; - } RunDllAsApp; - struct - { - GUID Guid; - PPH_STRING Name; // optional - PPH_STRING FileName; // optional - } ComSurrogate; -} PH_KNOWN_PROCESS_COMMAND_LINE, *PPH_KNOWN_PROCESS_COMMAND_LINE; - -PHAPPAPI -BOOLEAN -NTAPI -PhaGetProcessKnownCommandLine( - _In_ PPH_STRING CommandLine, - _In_ PH_KNOWN_PROCESS_TYPE KnownProcessType, - _Out_ PPH_KNOWN_PROCESS_COMMAND_LINE KnownCommandLine - ); - -PHAPPAPI -VOID -NTAPI -PhSearchOnlineString( - _In_ HWND hWnd, - _In_ PWSTR String - ); - -PHAPPAPI -VOID -NTAPI -PhShellExecuteUserString( - _In_ HWND hWnd, - _In_ PWSTR Setting, - _In_ PWSTR String, - _In_ BOOLEAN UseShellExecute, - _In_opt_ PWSTR ErrorMessage - ); - -PHAPPAPI -VOID -NTAPI -PhLoadSymbolProviderOptions( - _Inout_ struct _PH_SYMBOL_PROVIDER *SymbolProvider - ); - -PHAPPAPI -VOID -NTAPI -PhCopyListViewInfoTip( - _Inout_ LPNMLVGETINFOTIP GetInfoTip, - _In_ PPH_STRINGREF Tip - ); - -PHAPPAPI -VOID -NTAPI -PhCopyListView( - _In_ HWND ListViewHandle - ); - -PHAPPAPI -VOID -NTAPI -PhHandleListViewNotifyForCopy( - _In_ LPARAM lParam, - _In_ HWND ListViewHandle - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhGetListViewContextMenuPoint( - _In_ HWND ListViewHandle, - _Out_ PPOINT Point - ); - -PHAPPAPI -VOID -NTAPI -PhLoadWindowPlacementFromSetting( - _In_opt_ PWSTR PositionSettingName, - _In_opt_ PWSTR SizeSettingName, - _In_ HWND WindowHandle - ); - -PHAPPAPI -VOID -NTAPI -PhSaveWindowPlacementToSetting( - _In_opt_ PWSTR PositionSettingName, - _In_opt_ PWSTR SizeSettingName, - _In_ HWND WindowHandle - ); - -PHAPPAPI -VOID -NTAPI -PhLoadListViewColumnsFromSetting( - _In_ PWSTR Name, - _In_ HWND ListViewHandle - ); - -PHAPPAPI -VOID -NTAPI -PhSaveListViewColumnsToSetting( - _In_ PWSTR Name, - _In_ HWND ListViewHandle - ); - -PHAPPAPI -PPH_STRING -NTAPI -PhGetPhVersion( - VOID - ); - -PHAPPAPI -VOID -NTAPI -PhGetPhVersionNumbers( - _Out_opt_ PULONG MajorVersion, - _Out_opt_ PULONG MinorVersion, - _Reserved_ PULONG Reserved, - _Out_opt_ PULONG RevisionNumber - ); - -PHAPPAPI -VOID -NTAPI -PhWritePhTextHeader( - _Inout_ PPH_FILE_STREAM FileStream - ); - -#define PH_SHELL_APP_PROPAGATE_PARAMETERS 0x1 -#define PH_SHELL_APP_PROPAGATE_PARAMETERS_IGNORE_VISIBILITY 0x2 -#define PH_SHELL_APP_PROPAGATE_PARAMETERS_FORCE_SETTINGS 0x4 - -PHAPPAPI -BOOLEAN PhShellProcessHacker( - _In_opt_ HWND hWnd, - _In_opt_ PWSTR Parameters, - _In_ ULONG ShowWindowType, - _In_ ULONG Flags, - _In_ ULONG AppFlags, - _In_opt_ ULONG Timeout, - _Out_opt_ PHANDLE ProcessHandle - ); - -typedef struct _PH_TN_COLUMN_MENU_DATA -{ - HWND TreeNewHandle; - PPH_TREENEW_HEADER_MOUSE_EVENT MouseEvent; - ULONG DefaultSortColumn; - PH_SORT_ORDER DefaultSortOrder; - - struct _PH_EMENU_ITEM *Menu; - struct _PH_EMENU_ITEM *Selection; - ULONG ProcessedId; -} PH_TN_COLUMN_MENU_DATA, *PPH_TN_COLUMN_MENU_DATA; - -#define PH_TN_COLUMN_MENU_HIDE_COLUMN_ID ((ULONG)-1) -#define PH_TN_COLUMN_MENU_CHOOSE_COLUMNS_ID ((ULONG)-2) -#define PH_TN_COLUMN_MENU_SIZE_COLUMN_TO_FIT_ID ((ULONG)-3) -#define PH_TN_COLUMN_MENU_SIZE_ALL_COLUMNS_TO_FIT_ID ((ULONG)-4) - -PHAPPAPI -VOID -NTAPI -PhInitializeTreeNewColumnMenu( - _Inout_ PPH_TN_COLUMN_MENU_DATA Data - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhHandleTreeNewColumnMenu( - _Inout_ PPH_TN_COLUMN_MENU_DATA Data - ); - -PHAPPAPI -VOID -NTAPI -PhDeleteTreeNewColumnMenu( - _In_ PPH_TN_COLUMN_MENU_DATA Data - ); - -typedef struct _PH_TN_FILTER_SUPPORT -{ - PPH_LIST FilterList; - HWND TreeNewHandle; - PPH_LIST NodeList; -} PH_TN_FILTER_SUPPORT, *PPH_TN_FILTER_SUPPORT; - -typedef BOOLEAN (NTAPI *PPH_TN_FILTER_FUNCTION)( - _In_ PPH_TREENEW_NODE Node, - _In_opt_ PVOID Context - ); - -typedef struct _PH_TN_FILTER_ENTRY -{ - PPH_TN_FILTER_FUNCTION Filter; - PVOID Context; -} PH_TN_FILTER_ENTRY, *PPH_TN_FILTER_ENTRY; - -PHAPPAPI -VOID -NTAPI -PhInitializeTreeNewFilterSupport( - _Out_ PPH_TN_FILTER_SUPPORT Support, - _In_ HWND TreeNewHandle, - _In_ PPH_LIST NodeList - ); - -PHAPPAPI -VOID -NTAPI -PhDeleteTreeNewFilterSupport( - _In_ PPH_TN_FILTER_SUPPORT Support - ); - -PHAPPAPI -PPH_TN_FILTER_ENTRY -NTAPI -PhAddTreeNewFilter( - _In_ PPH_TN_FILTER_SUPPORT Support, - _In_ PPH_TN_FILTER_FUNCTION Filter, - _In_opt_ PVOID Context - ); - -PHAPPAPI -VOID -NTAPI -PhRemoveTreeNewFilter( - _In_ PPH_TN_FILTER_SUPPORT Support, - _In_ PPH_TN_FILTER_ENTRY Entry - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhApplyTreeNewFiltersToNode( - _In_ PPH_TN_FILTER_SUPPORT Support, - _In_ PPH_TREENEW_NODE Node - ); - -PHAPPAPI -VOID -NTAPI -PhApplyTreeNewFilters( - _In_ PPH_TN_FILTER_SUPPORT Support - ); - -// mainwnd - -#define PH_MAINWND_CLASS_NAME L"ProcessHacker" - -PHAPPAPI extern HWND PhMainWndHandle; - -#define WM_PH_SHOW_PROCESS_PROPERTIES (WM_APP + 120) -#define WM_PH_DESTROY (WM_APP + 121) -#define WM_PH_SAVE_ALL_SETTINGS (WM_APP + 122) -#define WM_PH_PREPARE_FOR_EARLY_SHUTDOWN (WM_APP + 123) -#define WM_PH_CANCEL_EARLY_SHUTDOWN (WM_APP + 124) -#define WM_PH_TOGGLE_VISIBLE (WM_APP + 127) -#define WM_PH_SELECT_TAB_PAGE (WM_APP + 130) -#define WM_PH_GET_CALLBACK_LAYOUT_PADDING (WM_APP + 131) -#define WM_PH_INVALIDATE_LAYOUT_PADDING (WM_APP + 132) -#define WM_PH_SELECT_PROCESS_NODE (WM_APP + 133) -#define WM_PH_SELECT_SERVICE_ITEM (WM_APP + 134) -#define WM_PH_SELECT_NETWORK_ITEM (WM_APP + 135) -#define WM_PH_INVOKE (WM_APP + 138) -#define WM_PH_ADD_MENU_ITEM (WM_APP + 139) -#define WM_PH_ADD_TAB_PAGE (WM_APP + 140) -#define WM_PH_REFRESH (WM_APP + 141) -#define WM_PH_GET_UPDATE_AUTOMATICALLY (WM_APP + 142) -#define WM_PH_SET_UPDATE_AUTOMATICALLY (WM_APP + 143) - -#define ProcessHacker_ShowProcessProperties(hWnd, ProcessItem) \ - SendMessage(hWnd, WM_PH_SHOW_PROCESS_PROPERTIES, 0, (LPARAM)(ProcessItem)) -#define ProcessHacker_Destroy(hWnd) \ - SendMessage(hWnd, WM_PH_DESTROY, 0, 0) -#define ProcessHacker_SaveAllSettings(hWnd) \ - SendMessage(hWnd, WM_PH_SAVE_ALL_SETTINGS, 0, 0) -#define ProcessHacker_PrepareForEarlyShutdown(hWnd) \ - SendMessage(hWnd, WM_PH_PREPARE_FOR_EARLY_SHUTDOWN, 0, 0) -#define ProcessHacker_CancelEarlyShutdown(hWnd) \ - SendMessage(hWnd, WM_PH_CANCEL_EARLY_SHUTDOWN, 0, 0) -#define ProcessHacker_ToggleVisible(hWnd, AlwaysShow) \ - SendMessage(hWnd, WM_PH_TOGGLE_VISIBLE, (WPARAM)(AlwaysShow), 0) -#define ProcessHacker_SelectTabPage(hWnd, Index) \ - SendMessage(hWnd, WM_PH_SELECT_TAB_PAGE, (WPARAM)(Index), 0) -#define ProcessHacker_GetCallbackLayoutPadding(hWnd) \ - ((PPH_CALLBACK)SendMessage(hWnd, WM_PH_GET_CALLBACK_LAYOUT_PADDING, 0, 0)) -#define ProcessHacker_InvalidateLayoutPadding(hWnd) \ - SendMessage(hWnd, WM_PH_INVALIDATE_LAYOUT_PADDING, 0, 0) -#define ProcessHacker_SelectProcessNode(hWnd, ProcessNode) \ - SendMessage(hWnd, WM_PH_SELECT_PROCESS_NODE, 0, (LPARAM)(ProcessNode)) -#define ProcessHacker_SelectServiceItem(hWnd, ServiceItem) \ - SendMessage(hWnd, WM_PH_SELECT_SERVICE_ITEM, 0, (LPARAM)(ServiceItem)) -#define ProcessHacker_SelectNetworkItem(hWnd, NetworkItem) \ - SendMessage(hWnd, WM_PH_SELECT_NETWORK_ITEM, 0, (LPARAM)(NetworkItem)) -#define ProcessHacker_Invoke(hWnd, Function, Parameter) \ - PostMessage(hWnd, WM_PH_INVOKE, (WPARAM)(Parameter), (LPARAM)(Function)) -#define ProcessHacker_AddMenuItem(hWnd, AddMenuItem) \ - ((BOOLEAN)SendMessage(hWnd, WM_PH_ADD_MENU_ITEM, 0, (LPARAM)(AddMenuItem))) -#define ProcessHacker_AddTabPage(hWnd, TabPage) \ - ((PPH_ADDITIONAL_TAB_PAGE)SendMessage(hWnd, WM_PH_ADD_TAB_PAGE, 0, (LPARAM)(TabPage))) -#define ProcessHacker_Refresh(hWnd) \ - SendMessage(hWnd, WM_PH_REFRESH, 0, 0) -#define ProcessHacker_GetUpdateAutomatically(hWnd) \ - ((BOOLEAN)SendMessage(hWnd, WM_PH_GET_UPDATE_AUTOMATICALLY, 0, 0)) -#define ProcessHacker_SetUpdateAutomatically(hWnd, Value) \ - SendMessage(hWnd, WM_PH_SET_UPDATE_AUTOMATICALLY, (WPARAM)(Value), 0) - -typedef struct _PH_LAYOUT_PADDING_DATA -{ - RECT Padding; -} PH_LAYOUT_PADDING_DATA, *PPH_LAYOUT_PADDING_DATA; - -typedef struct _PH_ADDMENUITEM -{ - _In_ PVOID Plugin; - _In_ ULONG Location; - _In_opt_ PWSTR InsertAfter; - _In_ ULONG Flags; - _In_ ULONG Id; - _In_ PWSTR Text; - _In_opt_ PVOID Context; -} PH_ADDMENUITEM, *PPH_ADDMENUITEM; - -typedef HWND (NTAPI *PPH_TAB_PAGE_CREATE_FUNCTION)( - _In_ PVOID Context - ); - -typedef VOID (NTAPI *PPH_TAB_PAGE_CALLBACK_FUNCTION)( - _In_ PVOID Parameter1, - _In_ PVOID Parameter2, - _In_ PVOID Parameter3, - _In_ PVOID Context - ); - -typedef struct _PH_ADDITIONAL_TAB_PAGE -{ - PWSTR Text; - PVOID Context; - PPH_TAB_PAGE_CREATE_FUNCTION CreateFunction; - HWND WindowHandle; - INT Index; - PPH_TAB_PAGE_CALLBACK_FUNCTION SelectionChangedCallback; - PPH_TAB_PAGE_CALLBACK_FUNCTION SaveContentCallback; - PPH_TAB_PAGE_CALLBACK_FUNCTION FontChangedCallback; - PPH_TAB_PAGE_CALLBACK_FUNCTION InitializeSectionMenuItemsCallback; - PVOID Reserved[3]; -} PH_ADDITIONAL_TAB_PAGE, *PPH_ADDITIONAL_TAB_PAGE; - -#define PH_NOTIFY_MINIMUM 0x1 -#define PH_NOTIFY_PROCESS_CREATE 0x1 -#define PH_NOTIFY_PROCESS_DELETE 0x2 -#define PH_NOTIFY_SERVICE_CREATE 0x4 -#define PH_NOTIFY_SERVICE_DELETE 0x8 -#define PH_NOTIFY_SERVICE_START 0x10 -#define PH_NOTIFY_SERVICE_STOP 0x20 -#define PH_NOTIFY_MAXIMUM 0x40 -#define PH_NOTIFY_VALID_MASK 0x3f - -PHAPPAPI -VOID -NTAPI -PhShowIconNotification( - _In_ PWSTR Title, - _In_ PWSTR Text, - _In_ ULONG Flags - ); - -// procprp - -typedef struct _PH_PROCESS_PROPCONTEXT PH_PROCESS_PROPCONTEXT, *PPH_PROCESS_PROPCONTEXT; - -typedef struct _PH_PROCESS_PROPPAGECONTEXT -{ - PPH_PROCESS_PROPCONTEXT PropContext; - PVOID Context; - PROPSHEETPAGE PropSheetPage; - - BOOLEAN LayoutInitialized; -} PH_PROCESS_PROPPAGECONTEXT, *PPH_PROCESS_PROPPAGECONTEXT; - -PHAPPAPI -PPH_PROCESS_PROPCONTEXT -NTAPI -PhCreateProcessPropContext( - _In_ HWND ParentWindowHandle, - _In_ PPH_PROCESS_ITEM ProcessItem - ); - -PHAPPAPI -VOID -NTAPI -PhSetSelectThreadIdProcessPropContext( - _Inout_ PPH_PROCESS_PROPCONTEXT PropContext, - _In_ HANDLE ThreadId - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhAddProcessPropPage( - _Inout_ PPH_PROCESS_PROPCONTEXT PropContext, - _In_ _Assume_refs_(1) PPH_PROCESS_PROPPAGECONTEXT PropPageContext - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhAddProcessPropPage2( - _Inout_ PPH_PROCESS_PROPCONTEXT PropContext, - _In_ HPROPSHEETPAGE PropSheetPageHandle - ); - -PHAPPAPI -PPH_PROCESS_PROPPAGECONTEXT -NTAPI -PhCreateProcessPropPageContextEx( - _In_opt_ PVOID InstanceHandle, - _In_ LPCWSTR Template, - _In_ DLGPROC DlgProc, - _In_opt_ PVOID Context - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhPropPageDlgProcHeader( - _In_ HWND hwndDlg, - _In_ UINT uMsg, - _In_ LPARAM lParam, - _Out_ LPPROPSHEETPAGE *PropSheetPage, - _Out_ PPH_PROCESS_PROPPAGECONTEXT *PropPageContext, - _Out_ PPH_PROCESS_ITEM *ProcessItem - ); - -PHAPPAPI -VOID -NTAPI -PhPropPageDlgProcDestroy( - _In_ HWND hwndDlg - ); - -#define PH_PROP_PAGE_TAB_CONTROL_PARENT ((PPH_LAYOUT_ITEM)0x1) - -PHAPPAPI -PPH_LAYOUT_ITEM -NTAPI -PhAddPropPageLayoutItem( - _In_ HWND hwnd, - _In_ HWND Handle, - _In_ PPH_LAYOUT_ITEM ParentItem, - _In_ ULONG Anchor - ); - -PHAPPAPI -VOID -NTAPI -PhDoPropPageLayout( - _In_ HWND hwnd - ); - -FORCEINLINE PPH_LAYOUT_ITEM PhBeginPropPageLayout( - _In_ HWND hwndDlg, - _In_ PPH_PROCESS_PROPPAGECONTEXT PropPageContext - ) -{ - if (!PropPageContext->LayoutInitialized) - { - return PhAddPropPageLayoutItem(hwndDlg, hwndDlg, - PH_PROP_PAGE_TAB_CONTROL_PARENT, PH_ANCHOR_ALL); - } - else - { - return NULL; - } -} - -FORCEINLINE VOID PhEndPropPageLayout( - _In_ HWND hwndDlg, - _In_ PPH_PROCESS_PROPPAGECONTEXT PropPageContext - ) -{ - PhDoPropPageLayout(hwndDlg); - PropPageContext->LayoutInitialized = TRUE; -} - -PHAPPAPI -BOOLEAN -NTAPI -PhShowProcessProperties( - _In_ PPH_PROCESS_PROPCONTEXT Context - ); - -// log - -#define PH_LOG_ENTRY_MESSAGE 9 - -typedef struct _PH_LOG_ENTRY *PPH_LOG_ENTRY; - -PHAPPAPI extern PH_CALLBACK PhLoggedCallback; - -PHAPPAPI -VOID -NTAPI -PhLogMessageEntry( - _In_ UCHAR Type, - _In_ PPH_STRING Message - ); - -PHAPPAPI -PPH_STRING -NTAPI -PhFormatLogEntry( - _In_ PPH_LOG_ENTRY Entry - ); - -// actions - -typedef enum _PH_PHSVC_MODE -{ - ElevatedPhSvcMode, - Wow64PhSvcMode -} PH_PHSVC_MODE; - -PHAPPAPI -BOOLEAN -NTAPI -PhUiConnectToPhSvc( - _In_opt_ HWND hWnd, - _In_ BOOLEAN ConnectOnly - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiConnectToPhSvcEx( - _In_opt_ HWND hWnd, - _In_ PH_PHSVC_MODE Mode, - _In_ BOOLEAN ConnectOnly - ); - -PHAPPAPI -VOID -NTAPI -PhUiDisconnectFromPhSvc( - VOID - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiLockComputer( - _In_ HWND hWnd - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiLogoffComputer( - _In_ HWND hWnd - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSleepComputer( - _In_ HWND hWnd - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiHibernateComputer( - _In_ HWND hWnd - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiRestartComputer( - _In_ HWND hWnd, - _In_ ULONG Flags - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiShutdownComputer( - _In_ HWND hWnd, - _In_ ULONG Flags - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiConnectSession( - _In_ HWND hWnd, - _In_ ULONG SessionId - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiDisconnectSession( - _In_ HWND hWnd, - _In_ ULONG SessionId - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiLogoffSession( - _In_ HWND hWnd, - _In_ ULONG SessionId - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiTerminateProcesses( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM *Processes, - _In_ ULONG NumberOfProcesses - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiTerminateTreeProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSuspendProcesses( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM *Processes, - _In_ ULONG NumberOfProcesses - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiResumeProcesses( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM *Processes, - _In_ ULONG NumberOfProcesses - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiRestartProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiDebugProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiReduceWorkingSetProcesses( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM *Processes, - _In_ ULONG NumberOfProcesses - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetVirtualizationProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process, - _In_ BOOLEAN Enable - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiDetachFromDebuggerProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiInjectDllProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetIoPriorityProcesses( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM *Processes, - _In_ ULONG NumberOfProcesses, - _In_ ULONG IoPriority - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetPagePriorityProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process, - _In_ ULONG PagePriority - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetPriorityProcesses( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM *Processes, - _In_ ULONG NumberOfProcesses, - _In_ ULONG PriorityClass - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetDepStatusProcess( - _In_ HWND hWnd, - _In_ PPH_PROCESS_ITEM Process - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiStartService( - _In_ HWND hWnd, - _In_ PPH_SERVICE_ITEM Service - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiContinueService( - _In_ HWND hWnd, - _In_ PPH_SERVICE_ITEM Service - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiPauseService( - _In_ HWND hWnd, - _In_ PPH_SERVICE_ITEM Service - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiStopService( - _In_ HWND hWnd, - _In_ PPH_SERVICE_ITEM Service - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiDeleteService( - _In_ HWND hWnd, - _In_ PPH_SERVICE_ITEM Service - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiCloseConnections( - _In_ HWND hWnd, - _In_ PPH_NETWORK_ITEM *Connections, - _In_ ULONG NumberOfConnections - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiTerminateThreads( - _In_ HWND hWnd, - _In_ PPH_THREAD_ITEM *Threads, - _In_ ULONG NumberOfThreads - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiForceTerminateThreads( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PPH_THREAD_ITEM *Threads, - _In_ ULONG NumberOfThreads - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSuspendThreads( - _In_ HWND hWnd, - _In_ PPH_THREAD_ITEM *Threads, - _In_ ULONG NumberOfThreads - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiResumeThreads( - _In_ HWND hWnd, - _In_ PPH_THREAD_ITEM *Threads, - _In_ ULONG NumberOfThreads - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetPriorityThread( - _In_ HWND hWnd, - _In_ PPH_THREAD_ITEM Thread, - _In_ ULONG ThreadPriorityWin32 - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetIoPriorityThread( - _In_ HWND hWnd, - _In_ PPH_THREAD_ITEM Thread, - _In_ ULONG IoPriority - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetPagePriorityThread( - _In_ HWND hWnd, - _In_ PPH_THREAD_ITEM Thread, - _In_ ULONG PagePriority - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiUnloadModule( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PPH_MODULE_ITEM Module - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiFreeMemory( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PPH_MEMORY_ITEM MemoryItem, - _In_ BOOLEAN Free - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiCloseHandles( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PPH_HANDLE_ITEM *Handles, - _In_ ULONG NumberOfHandles, - _In_ BOOLEAN Warn - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiSetAttributesHandle( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PPH_HANDLE_ITEM Handle, - _In_ ULONG Attributes - ); - -PHAPPAPI -BOOLEAN -NTAPI -PhUiDestroyHeap( - _In_ HWND hWnd, - _In_ HANDLE ProcessId, - _In_ PVOID HeapHandle - ); - -// affinity - -PHAPPAPI -BOOLEAN -NTAPI -PhShowProcessAffinityDialog2( - _In_ HWND ParentWindowHandle, - _In_ ULONG_PTR AffinityMask, - _Out_ PULONG_PTR NewAffinityMask - ); - -// chdlg - -#define PH_CHOICE_DIALOG_SAVED_CHOICES 10 - -#define PH_CHOICE_DIALOG_CHOICE 0x0 -#define PH_CHOICE_DIALOG_USER_CHOICE 0x1 -#define PH_CHOICE_DIALOG_PASSWORD 0x2 -#define PH_CHOICE_DIALOG_TYPE_MASK 0x3 - -PHAPPAPI -BOOLEAN PhaChoiceDialog( - _In_ HWND ParentWindowHandle, - _In_ PWSTR Title, - _In_ PWSTR Message, - _In_opt_ PWSTR *Choices, - _In_opt_ ULONG NumberOfChoices, - _In_opt_ PWSTR Option, - _In_ ULONG Flags, - _Inout_ PPH_STRING *SelectedChoice, - _Inout_opt_ PBOOLEAN SelectedOption, - _In_opt_ PWSTR SavedChoicesSettingName - ); - -// chproc - -PHAPPAPI -BOOLEAN -NTAPI -PhShowChooseProcessDialog( - _In_ HWND ParentWindowHandle, - _In_ PWSTR Message, - _Out_ PHANDLE ProcessId - ); - -// procrec - -PHAPPAPI -VOID -NTAPI -PhShowProcessRecordDialog( - _In_ HWND ParentWindowHandle, - _In_ PPH_PROCESS_RECORD Record - ); - -// srvctl - -#define WM_PH_SET_LIST_VIEW_SETTINGS (WM_APP + 701) - -PHAPPAPI -HWND -NTAPI -PhCreateServiceListControl( - _In_ HWND ParentWindowHandle, - _In_ PPH_SERVICE_ITEM *Services, - _In_ ULONG NumberOfServices - ); - -// settings - -typedef enum _PH_SETTING_TYPE -{ - StringSettingType, - IntegerSettingType, - IntegerPairSettingType -} PH_SETTING_TYPE, PPH_SETTING_TYPE; - -PHAPPAPI -_May_raise_ ULONG -NTAPI -PhGetIntegerSetting( - _In_ PWSTR Name - ); - -PHAPPAPI -_May_raise_ PH_INTEGER_PAIR -NTAPI -PhGetIntegerPairSetting( - _In_ PWSTR Name - ); - -PHAPPAPI -_May_raise_ PPH_STRING -NTAPI -PhGetStringSetting( - _In_ PWSTR Name - ); - -PHAPPAPI -_May_raise_ VOID -NTAPI -PhSetIntegerSetting( - _In_ PWSTR Name, - _In_ ULONG Value - ); - -PHAPPAPI -_May_raise_ VOID -NTAPI -PhSetIntegerPairSetting( - _In_ PWSTR Name, - _In_ PH_INTEGER_PAIR Value - ); - -PHAPPAPI -_May_raise_ VOID -NTAPI -PhSetStringSetting( - _In_ PWSTR Name, - _In_ PWSTR Value - ); - -PHAPPAPI -_May_raise_ VOID -NTAPI -PhSetStringSetting2( - _In_ PWSTR Name, - _In_ PPH_STRINGREF Value - ); - -// High-level settings creation - -typedef struct _PH_SETTING_CREATE -{ - PH_SETTING_TYPE Type; - PWSTR Name; - PWSTR DefaultValue; -} PH_SETTING_CREATE, *PPH_SETTING_CREATE; - -PHAPPAPI -VOID -NTAPI -PhAddSettings( - _In_ PPH_SETTING_CREATE Settings, - _In_ ULONG NumberOfSettings - ); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/2.x/trunk/ProcessHacker/sdk/phdk.h b/2.x/trunk/ProcessHacker/sdk/phdk.h index e0e3d3a55..59ab37a9e 100644 --- a/2.x/trunk/ProcessHacker/sdk/phdk.h +++ b/2.x/trunk/ProcessHacker/sdk/phdk.h @@ -7,17 +7,14 @@ #define PHAPPAPI __declspec(dllimport) #include "phgui.h" - +#include "phnet.h" #include "circbuf.h" #include "dltmgr.h" -#include "phnet.h" -#include "providers.h" - #include "treenew.h" #include "graph.h" #include "emenu.h" #include "cpysave.h" + #include "phapppub.h" -#include "phplug.h" #endif diff --git a/2.x/trunk/ProcessHacker/srvprv.c b/2.x/trunk/ProcessHacker/srvprv.c index 186c764da..a5c44157d 100644 --- a/2.x/trunk/ProcessHacker/srvprv.c +++ b/2.x/trunk/ProcessHacker/srvprv.c @@ -20,7 +20,6 @@ * along with Process Hacker. If not, see . */ -#define PH_SRVPRV_PRIVATE #include #include #include diff --git a/2.x/trunk/build/sdk/makesdk.cmd b/2.x/trunk/build/sdk/makesdk.cmd index 2a301077e..177a403c3 100644 --- a/2.x/trunk/build/sdk/makesdk.cmd +++ b/2.x/trunk/build/sdk/makesdk.cmd @@ -77,17 +77,7 @@ for %%a in ( winsta.h ) do copy ..\..\phlib\include\%%a ..\..\sdk\include\%%a -for %%a in ( - colmgr.h - extmgr.h - hidnproc.h - miniinfo.h - notifico.h - phplug.h - procgrp.h - providers.h - sysinfo.h - ) do copy ..\..\ProcessHacker\include\%%a ..\..\sdk\include\%%a +call phapppub_gen.cmd for %%a in ( phapppub.h diff --git a/2.x/trunk/build/sdk/phapppub_gen.cmd b/2.x/trunk/build/sdk/phapppub_gen.cmd new file mode 100644 index 000000000..cc692ee95 --- /dev/null +++ b/2.x/trunk/build/sdk/phapppub_gen.cmd @@ -0,0 +1 @@ +..\..\tools\GenerateHeader\GenerateHeader\bin\Release\GenerateHeader.exe phapppub_options.txt \ No newline at end of file diff --git a/2.x/trunk/build/sdk/phapppub_options.txt b/2.x/trunk/build/sdk/phapppub_options.txt new file mode 100644 index 000000000..0f68f9619 --- /dev/null +++ b/2.x/trunk/build/sdk/phapppub_options.txt @@ -0,0 +1,6 @@ +base=..\..\ProcessHacker\include +modes=phapppub +in=phapp.h;providers.h;uimodels.h;colmgr.h;extmgr.h;notifico.h;settings.h;phplug.h;procprpp.h;sysinfo.h;procgrp.h;miniinfo.h +out=..\sdk\phapppub.h +header=#ifndef _PH_PHAPPPUB_H\r\n#define _PH_PHAPPPUB_H\r\n\r\n// This file was automatically generated. Do not edit.\r\n\r\n#ifdef __cplusplus\r\nextern "C" {\r\n#endif\r\n +footer=\r\n#ifdef __cplusplus\r\n}\r\n#endif\r\n\r\n#endif\r\n \ No newline at end of file diff --git a/2.x/trunk/plugins/DotNetTools/asmpage.c b/2.x/trunk/plugins/DotNetTools/asmpage.c index badaf7c4c..554d9cfa0 100644 --- a/2.x/trunk/plugins/DotNetTools/asmpage.c +++ b/2.x/trunk/plugins/DotNetTools/asmpage.c @@ -25,7 +25,6 @@ #include #include #include "clretw.h" -#include #define DNATNC_STRUCTURE 0 #define DNATNC_ID 1 diff --git a/2.x/trunk/plugins/ExtendedTools/disktab.c b/2.x/trunk/plugins/ExtendedTools/disktab.c index 1e559b9f4..d0d8db8c5 100644 --- a/2.x/trunk/plugins/ExtendedTools/disktab.c +++ b/2.x/trunk/plugins/ExtendedTools/disktab.c @@ -23,7 +23,6 @@ #include "exttools.h" #include "etwmon.h" #include "resource.h" -#include #include #include "disktabp.h" diff --git a/2.x/trunk/plugins/ExtendedTools/iconext.c b/2.x/trunk/plugins/ExtendedTools/iconext.c index d71806405..8a3ee36c9 100644 --- a/2.x/trunk/plugins/ExtendedTools/iconext.c +++ b/2.x/trunk/plugins/ExtendedTools/iconext.c @@ -21,7 +21,6 @@ */ #include "exttools.h" -#include #define GPU_ICON_ID 1 #define DISK_ICON_ID 2 diff --git a/2.x/trunk/plugins/NetworkTools/nettools.h b/2.x/trunk/plugins/NetworkTools/nettools.h index 946d5d607..1a4d99c9a 100644 --- a/2.x/trunk/plugins/NetworkTools/nettools.h +++ b/2.x/trunk/plugins/NetworkTools/nettools.h @@ -31,8 +31,6 @@ #define COBJMACROS #include #include -#include -#include #include #include #include diff --git a/2.x/trunk/plugins/ToolStatus/filter.c b/2.x/trunk/plugins/ToolStatus/filter.c index 9fa5af1cd..6d9886cf5 100644 --- a/2.x/trunk/plugins/ToolStatus/filter.c +++ b/2.x/trunk/plugins/ToolStatus/filter.c @@ -320,9 +320,13 @@ BOOLEAN ProcessTreeFilterCallback( } } - if (serviceItem->ProcessIdString[0] != 0) + if (serviceItem->ProcessId) { - if (WordMatchStringZ(serviceItem->ProcessIdString)) + WCHAR processIdString[PH_INT32_STR_LEN_1]; + + PhPrintUInt32(processIdString, (ULONG)serviceItem->ProcessId); + + if (WordMatchStringZ(processIdString)) { matched = TRUE; break; @@ -374,9 +378,13 @@ BOOLEAN ServiceTreeFilterCallback( return TRUE; } - if (serviceNode->ServiceItem->ProcessIdString[0] != 0) + if (serviceNode->ServiceItem->ProcessId) { - if (WordMatchStringZ(serviceNode->ServiceItem->ProcessIdString)) + WCHAR processIdString[PH_INT32_STR_LEN_1]; + + PhPrintUInt32(processIdString, (ULONG)serviceNode->ServiceItem->ProcessId); + + if (WordMatchStringZ(processIdString)) return TRUE; } diff --git a/2.x/trunk/plugins/ToolStatus/toolstatus.h b/2.x/trunk/plugins/ToolStatus/toolstatus.h index a0a9cd413..c0e3e40ba 100644 --- a/2.x/trunk/plugins/ToolStatus/toolstatus.h +++ b/2.x/trunk/plugins/ToolStatus/toolstatus.h @@ -30,8 +30,6 @@ #define COBJMACROS #define INITGUID #include -#include -#include #include #include #include diff --git a/2.x/trunk/plugins/WindowExplorer/wndtree.c b/2.x/trunk/plugins/WindowExplorer/wndtree.c index f615ec140..af508b986 100644 --- a/2.x/trunk/plugins/WindowExplorer/wndtree.c +++ b/2.x/trunk/plugins/WindowExplorer/wndtree.c @@ -21,7 +21,6 @@ */ #include "wndexp.h" -#include #include "resource.h" BOOLEAN WepWindowNodeHashtableCompareFunction( diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader.sln b/2.x/trunk/tools/GenerateHeader/GenerateHeader.sln new file mode 100644 index 000000000..9afc7e279 --- /dev/null +++ b/2.x/trunk/tools/GenerateHeader/GenerateHeader.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30723.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenerateHeader", "GenerateHeader\GenerateHeader.csproj", "{DA075B6D-3506-42FA-8FD8-34F79E5578E0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DA075B6D-3506-42FA-8FD8-34F79E5578E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA075B6D-3506-42FA-8FD8-34F79E5578E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA075B6D-3506-42FA-8FD8-34F79E5578E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA075B6D-3506-42FA-8FD8-34F79E5578E0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader/App.config b/2.x/trunk/tools/GenerateHeader/GenerateHeader/App.config new file mode 100644 index 000000000..fad249e40 --- /dev/null +++ b/2.x/trunk/tools/GenerateHeader/GenerateHeader/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader/GenerateHeader.csproj b/2.x/trunk/tools/GenerateHeader/GenerateHeader/GenerateHeader.csproj new file mode 100644 index 000000000..6a4a864ab --- /dev/null +++ b/2.x/trunk/tools/GenerateHeader/GenerateHeader/GenerateHeader.csproj @@ -0,0 +1,59 @@ + + + + + Debug + AnyCPU + {DA075B6D-3506-42FA-8FD8-34F79E5578E0} + Exe + Properties + GenerateHeader + GenerateHeader + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader/HeaderGen.cs b/2.x/trunk/tools/GenerateHeader/GenerateHeader/HeaderGen.cs new file mode 100644 index 000000000..a54d7fc85 --- /dev/null +++ b/2.x/trunk/tools/GenerateHeader/GenerateHeader/HeaderGen.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GenerateHeader +{ + class HeaderFile + { + public string Name; + public List Lines; + public List Dependencies; + } + + class HeaderGen + { + private string _baseDirectory; + private string[] _modes; + private string[] _files; + private string _outputFile; + private string _header = ""; + private string _footer = ""; + + private string UnEscape(string text) + { + return text.Replace("\\r", "\r").Replace("\\n", "\n").Replace("\\\\", "\\"); + } + + public void LoadConfig(string fileName) + { + string[] lines = File.ReadAllLines(fileName); + + foreach (string line in lines) + { + string[] split = line.Split(new char[] { '=' }, 2); + + switch (split[0]) + { + case "base": + _baseDirectory = split[1]; + break; + case "modes": + _modes = split[1].ToLowerInvariant().Split(';'); + break; + case "in": + _files = split[1].Split(';'); + break; + case "out": + _outputFile = split[1]; + break; + case "header": + _header = UnEscape(split[1]); + break; + case "footer": + _footer = UnEscape(split[1]); + break; + } + } + } + + private List OrderHeaderFiles(List headerFiles) + { + var result = new List(); + var done = new HashSet(); + + foreach (var h in headerFiles) + OrderHeaderFiles(result, done, h); + + return result; + } + + private void OrderHeaderFiles(List result, HashSet done, HeaderFile headerFile) + { + if (done.Contains(headerFile)) + return; + + done.Add(headerFile); + + foreach (var h in headerFile.Dependencies) + OrderHeaderFiles(result, done, h); + + result.Add(headerFile); + } + + private List ProcessHeaderLines(IEnumerable lines) + { + var result = new List(); + var modes = new HashSet(); + var blankLine = false; + + foreach (var line in lines) + { + var s = line.Trim(); + + if (s.StartsWith("// begin_")) + { + modes.Add(s.Remove(0, "// begin_".Length)); + } + else if (s.StartsWith("// end_")) + { + modes.Remove(s.Remove(0, "// end_".Length)); + } + else + { + bool blockMode = _modes.Any(modes.Contains); + bool lineMode = _modes.Any(mode => + { + int indexOfMarker = s.LastIndexOf("// " + mode); + if (indexOfMarker == -1) + return false; + + return s.Substring(indexOfMarker).Trim().All(c => char.IsLetterOrDigit(c) || c == ' ' || c == '/'); + }); + + if (blockMode || lineMode) + { + if (blankLine && result.Count != 0) + result.Add(string.Empty); + + result.Add(line); + blankLine = false; + } + else if (s.Length == 0) + { + blankLine = true; + } + } + } + + return result; + } + + public void Execute() + { + // Read in all header files. + + var headerFiles = _files.Select(fileName => + { + var fullFileName = _baseDirectory + "\\" + fileName; + var lines = File.ReadAllLines(fullFileName).ToList(); + + return new HeaderFile { Name = Path.GetFileName(fullFileName).ToLowerInvariant(), Lines = lines }; + }).ToDictionary(h => h.Name); + + foreach (var h in headerFiles.Values) + { + var partitions = + h.Lines + .Select(s => + { + var trimmed = s.Trim().ToLowerInvariant(); + if (trimmed.StartsWith("#include <") && trimmed.EndsWith(">")) + { + HeaderFile d; + if (headerFiles.TryGetValue(trimmed.Remove(trimmed.Length - 1).Remove(0, "#include <".Length), out d)) + return Tuple.Create(s, d); + else + return Tuple.Create(s, null); + } + return Tuple.Create(s, null); + }) + .ToLookup(p => p.Item2 != null); + + h.Lines = partitions[false].Select(p => p.Item1).ToList(); + h.Dependencies = partitions[true].Select(p => p.Item2).Distinct().ToList(); + + foreach (var d in h.Dependencies) + Console.WriteLine("Dependency: " + h.Name + " -> " + d.Name); + } + + // Generate the ordering. + + var orderedHeaderFiles = OrderHeaderFiles(_files.Select(s => headerFiles[Path.GetFileName(s).ToLower()]).ToList()); + + // Process each header file and remove irrelevant content. + + foreach (var h in orderedHeaderFiles) + h.Lines = ProcessHeaderLines(h.Lines); + + // Write out the result. + + StreamWriter sw = new StreamWriter(_baseDirectory + "\\" + _outputFile); + + // Header + + sw.Write(_header); + + // Header files + + foreach (var h in orderedHeaderFiles) + { + Console.WriteLine("Header file: " + h.Name); + + sw.WriteLine(); + sw.WriteLine("//"); + sw.WriteLine("// " + Path.GetFileNameWithoutExtension(h.Name)); + sw.WriteLine("//"); + sw.WriteLine(); + + foreach (var line in h.Lines) + sw.WriteLine(line); + } + + // Footer + + sw.Write(_footer); + + sw.Close(); + } + } +} diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader/Program.cs b/2.x/trunk/tools/GenerateHeader/GenerateHeader/Program.cs new file mode 100644 index 000000000..f443338fe --- /dev/null +++ b/2.x/trunk/tools/GenerateHeader/GenerateHeader/Program.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GenerateHeader +{ + class Program + { + static void Main(string[] args) + { + HeaderGen gen = new HeaderGen(); + string configFile = args.Length > 0 ? args[0] : "options.txt"; + + try + { + gen.LoadConfig(configFile); + gen.Execute(); + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + } + } +} diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader/Properties/AssemblyInfo.cs b/2.x/trunk/tools/GenerateHeader/GenerateHeader/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..fd39a3acb --- /dev/null +++ b/2.x/trunk/tools/GenerateHeader/GenerateHeader/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("GenerateHeader")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GenerateHeader")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("efba3f55-999d-4dde-8217-118ba2aed831")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/2.x/trunk/tools/GenerateHeader/GenerateHeader/bin/Release/GenerateHeader.exe b/2.x/trunk/tools/GenerateHeader/GenerateHeader/bin/Release/GenerateHeader.exe new file mode 100644 index 0000000000000000000000000000000000000000..225fed8e34070294c6f194924b965a120fe35b0d GIT binary patch literal 11264 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 BdTjsz literal 0 HcmV?d00001 diff --git a/2.x/trunk/tools/GenerateZw/GenerateZw/bin/Release/GenerateZw.exe b/2.x/trunk/tools/GenerateZw/GenerateZw/bin/Release/GenerateZw.exe new file mode 100644 index 0000000000000000000000000000000000000000..67b76e284271ced0accce6b47b725a61475fe8b2 GIT binary patch literal 8192 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 literal 0 HcmV?d00001