mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
d649f36571
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3670 21ef857c-d57f-4fe0-8362-d861dc6d29cd
296 lines
7.7 KiB
C
296 lines
7.7 KiB
C
#ifndef _PH_PHPLUG_H
|
|
#define _PH_PHPLUG_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Callbacks
|
|
|
|
typedef enum _PH_GENERAL_CALLBACK
|
|
{
|
|
GeneralCallbackMainWindowShowing = 0, // INT ShowCommand [main thread]
|
|
GeneralCallbackProcessesUpdated = 1, // [main thread]
|
|
GeneralCallbackGetProcessHighlightingColor = 2, // PPH_PLUGIN_GET_HIGHLIGHTING_COLOR Data [main thread]
|
|
GeneralCallbackGetProcessTooltipText = 3, // PPH_PLUGIN_GET_TOOLTIP_TEXT Data [main thread]
|
|
GeneralCallbackProcessPropertiesInitializing = 4, // PPH_PLUGIN_PROCESS_PROPCONTEXT Data [properties thread]
|
|
GeneralCallbackGetIsDotNetDirectoryNames = 5, // PPH_PLUGIN_IS_DOT_NET_DIRECTORY_NAMES Data [process provider thread]
|
|
GeneralCallbackNotifyEvent = 6, // PPH_PLUGIN_NOTIFY_EVENT Data [main thread]
|
|
GeneralCallbackServicePropertiesInitializing = 7, // PPH_PLUGIN_OBJECT_PROPERTIES Data [properties thread]
|
|
GeneralCallbackHandlePropertiesInitializing = 8, // PPH_PLUGIN_OBJECT_PROPERTIES Data [properties thread]
|
|
GeneralCallbackProcessMenuInitializing = 9, // PPH_PLUGIN_MENU_INFORMATION Data [main thread]
|
|
GeneralCallbackServiceMenuInitializing = 10, // PPH_PLUGIN_MENU_INFORMATION Data [main thread]
|
|
GeneralCallbackNetworkMenuInitializing = 11, // PPH_PLUGIN_MENU_INFORMATION Data [main thread]
|
|
GeneralCallbackIconMenuInitializing = 12, // PPH_PLUGIN_MENU_INFORMATION Data [main thread]
|
|
GeneralCallbackThreadMenuInitializing = 13, // PPH_PLUGIN_MENU_INFORMATION Data [properties thread]
|
|
GeneralCallbackModuleMenuInitializing = 14, // PPH_PLUGIN_MENU_INFORMATION Data [properties thread]
|
|
GeneralCallbackMemoryMenuInitializing = 15, // PPH_PLUGIN_MENU_INFORMATION Data [properties thread]
|
|
GeneralCallbackHandleMenuInitializing = 16, // PPH_PLUGIN_MENU_INFORMATION Data [properties thread]
|
|
|
|
GeneralCallbackMaximum
|
|
} PH_GENERAL_CALLBACK, *PPH_GENERAL_CALLBACK;
|
|
|
|
typedef struct _PH_PLUGIN_GET_HIGHLIGHTING_COLOR
|
|
{
|
|
// Parameter is:
|
|
// PPH_PROCESS_ITEM for GeneralCallbackGetProcessHighlightingColor
|
|
|
|
PVOID Parameter;
|
|
COLORREF BackColor;
|
|
BOOLEAN Handled;
|
|
BOOLEAN Cache;
|
|
} PH_PLUGIN_GET_HIGHLIGHTING_COLOR, *PPH_PLUGIN_GET_HIGHLIGHTING_COLOR;
|
|
|
|
typedef struct _PH_PLUGIN_GET_TOOLTIP_TEXT
|
|
{
|
|
// Parameter is:
|
|
// PPH_PROCESS_ITEM for GeneralCallbackGetProcessTooltipText
|
|
|
|
PVOID Parameter;
|
|
PPH_STRING_BUILDER StringBuilder;
|
|
} PH_PLUGIN_GET_TOOLTIP_TEXT, *PPH_PLUGIN_GET_TOOLTIP_TEXT;
|
|
|
|
typedef struct _PH_PLUGIN_PROCESS_PROPCONTEXT
|
|
{
|
|
PPH_PROCESS_PROPCONTEXT PropContext;
|
|
PPH_PROCESS_ITEM ProcessItem;
|
|
} PH_PLUGIN_PROCESS_PROPCONTEXT, *PPH_PLUGIN_PROCESS_PROPCONTEXT;
|
|
|
|
typedef struct _PH_PLUGIN_IS_DOT_NET_DIRECTORY_NAMES
|
|
{
|
|
PH_STRINGREF DirectoryNames[16];
|
|
ULONG NumberOfDirectoryNames;
|
|
} PH_PLUGIN_IS_DOT_NET_DIRECTORY_NAMES, *PPH_PLUGIN_IS_DOT_NET_DIRECTORY_NAMES;
|
|
|
|
typedef struct _PH_PLUGIN_NOTIFY_EVENT
|
|
{
|
|
// Parameter is:
|
|
// PPH_PROCESS_ITEM for Type = PH_NOTIFY_PROCESS_*
|
|
// PPH_SERVICE_ITEM for Type = PH_NOTIFY_SERVICE_*
|
|
|
|
ULONG Type;
|
|
BOOLEAN Handled;
|
|
PVOID Parameter;
|
|
} PH_PLUGIN_NOTIFY_EVENT, *PPH_PLUGIN_NOTIFY_EVENT;
|
|
|
|
typedef struct _PH_PLUGIN_OBJECT_PROPERTIES
|
|
{
|
|
// Parameter is:
|
|
// PPH_SERVICE_ITEM for GeneralCallbackServicePropertiesInitializing
|
|
// PPH_PLUGIN_HANDLE_PROPERTIES_CONTEXT for GeneralCallbackHandlePropertiesInitializing
|
|
|
|
PVOID Parameter;
|
|
ULONG NumberOfPages;
|
|
ULONG MaximumNumberOfPages;
|
|
HPROPSHEETPAGE *Pages;
|
|
} PH_PLUGIN_OBJECT_PROPERTIES, *PPH_PLUGIN_OBJECT_PROPERTIES;
|
|
|
|
typedef struct _PH_PLUGIN_HANDLE_PROPERTIES_CONTEXT
|
|
{
|
|
HANDLE ProcessId;
|
|
PPH_HANDLE_ITEM HandleItem;
|
|
} PH_PLUGIN_HANDLE_PROPERTIES_CONTEXT, *PPH_PLUGIN_HANDLE_PROPERTIES_CONTEXT;
|
|
|
|
typedef struct _PH_EMENU_ITEM *PPH_EMENU_ITEM, *PPH_EMENU;
|
|
|
|
typedef struct _PH_PLUGIN_MENU_INFORMATION
|
|
{
|
|
PPH_EMENU Menu;
|
|
HWND OwnerWindow;
|
|
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
PPH_PROCESS_ITEM *Processes;
|
|
ULONG NumberOfProcesses;
|
|
} Process;
|
|
struct
|
|
{
|
|
PPH_SERVICE_ITEM *Services;
|
|
ULONG NumberOfServices;
|
|
} Service;
|
|
struct
|
|
{
|
|
PPH_NETWORK_ITEM *NetworkItems;
|
|
ULONG NumberOfNetworkItems;
|
|
} Network;
|
|
struct
|
|
{
|
|
HANDLE ProcessId;
|
|
PPH_THREAD_ITEM *Threads;
|
|
ULONG NumberOfThreads;
|
|
} Thread;
|
|
struct
|
|
{
|
|
HANDLE ProcessId;
|
|
PPH_MODULE_ITEM *Modules;
|
|
ULONG NumberOfModules;
|
|
} Module;
|
|
struct
|
|
{
|
|
HANDLE ProcessId;
|
|
PPH_MEMORY_ITEM *MemoryItems;
|
|
ULONG NumberOfMemoryItems;
|
|
} Memory;
|
|
struct
|
|
{
|
|
HANDLE ProcessId;
|
|
PPH_HANDLE_ITEM *Handles;
|
|
ULONG NumberOfHandles;
|
|
} Handle;
|
|
} u;
|
|
} PH_PLUGIN_MENU_INFORMATION, *PPH_PLUGIN_MENU_INFORMATION;
|
|
|
|
typedef enum _PH_PLUGIN_CALLBACK
|
|
{
|
|
PluginCallbackLoad = 0, // [main thread]
|
|
PluginCallbackUnload = 1, // [main thread]
|
|
PluginCallbackShowOptions = 2, // HWND ParentWindowHandle [main thread]
|
|
PluginCallbackMenuItem = 3, // PPH_PLUGIN_MENU_ITEM MenuItem [main thread]
|
|
|
|
PluginCallbackMaximum
|
|
} PH_PLUGIN_CALLBACK, *PPH_PLUGIN_CALLBACK;
|
|
|
|
typedef struct _PH_PLUGIN
|
|
{
|
|
PH_AVL_LINKS Links;
|
|
|
|
PWSTR Name;
|
|
PVOID DllBase;
|
|
PPH_STRING FileName;
|
|
|
|
PWSTR DisplayName;
|
|
PWSTR Author;
|
|
PWSTR Description;
|
|
BOOLEAN HasOptions;
|
|
|
|
PH_CALLBACK Callbacks[PluginCallbackMaximum];
|
|
} PH_PLUGIN, *PPH_PLUGIN;
|
|
|
|
typedef struct _PH_PLUGIN_INFORMATION
|
|
{
|
|
PWSTR DisplayName;
|
|
PWSTR Author;
|
|
PWSTR Description;
|
|
BOOLEAN HasOptions;
|
|
} PH_PLUGIN_INFORMATION, *PPH_PLUGIN_INFORMATION;
|
|
|
|
PHAPPAPI
|
|
PPH_PLUGIN
|
|
NTAPI
|
|
PhRegisterPlugin(
|
|
__in PWSTR Name,
|
|
__in PVOID DllBase,
|
|
__in_opt PPH_PLUGIN_INFORMATION Information
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_PLUGIN
|
|
NTAPI
|
|
PhFindPlugin(
|
|
__in PWSTR Name
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_CALLBACK
|
|
NTAPI
|
|
PhGetPluginCallback(
|
|
__in PPH_PLUGIN Plugin,
|
|
__in PH_PLUGIN_CALLBACK Callback
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_CALLBACK
|
|
NTAPI
|
|
PhGetGeneralCallback(
|
|
__in PH_GENERAL_CALLBACK Callback
|
|
);
|
|
|
|
PHAPPAPI
|
|
ULONG
|
|
NTAPI
|
|
PhPluginReserveIds(
|
|
__in ULONG Count
|
|
);
|
|
|
|
typedef struct _PH_PLUGIN_MENU_ITEM
|
|
{
|
|
PPH_PLUGIN Plugin;
|
|
ULONG Id;
|
|
ULONG RealId;
|
|
PVOID Context;
|
|
|
|
// Parameters
|
|
HWND OwnerWindow;
|
|
} PH_PLUGIN_MENU_ITEM, *PPH_PLUGIN_MENU_ITEM;
|
|
|
|
#define PH_MENU_ITEM_LOCATION_VIEW 1
|
|
#define PH_MENU_ITEM_LOCATION_TOOLS 2
|
|
|
|
PHAPPAPI
|
|
BOOLEAN
|
|
NTAPI
|
|
PhPluginAddMenuItem(
|
|
__in PPH_PLUGIN Plugin,
|
|
__in ULONG Location,
|
|
__in_opt PWSTR InsertAfter,
|
|
__in ULONG Id,
|
|
__in PWSTR Text,
|
|
__in_opt PVOID Context
|
|
);
|
|
|
|
typedef struct _PH_PLUGIN_SYSTEM_STATISTICS
|
|
{
|
|
PSYSTEM_PERFORMANCE_INFORMATION Performance;
|
|
|
|
ULONG NumberOfProcesses;
|
|
ULONG NumberOfThreads;
|
|
ULONG NumberOfHandles;
|
|
|
|
FLOAT CpuKernelUsage;
|
|
FLOAT CpuUserUsage;
|
|
|
|
PH_UINT64_DELTA IoReadDelta;
|
|
PH_UINT64_DELTA IoWriteDelta;
|
|
PH_UINT64_DELTA IoOtherDelta;
|
|
|
|
ULONG CommitPages;
|
|
ULONG PhysicalPages;
|
|
|
|
HANDLE MaxCpuProcessId;
|
|
HANDLE MaxIoProcessId;
|
|
} PH_PLUGIN_SYSTEM_STATISTICS, *PPH_PLUGIN_SYSTEM_STATISTICS;
|
|
|
|
PHAPPAPI
|
|
VOID
|
|
NTAPI
|
|
PhPluginGetSystemStatistics(
|
|
__out PPH_PLUGIN_SYSTEM_STATISTICS Statistics
|
|
);
|
|
|
|
PHAPPAPI
|
|
PPH_EMENU_ITEM
|
|
NTAPI
|
|
PhPluginCreateEMenuItem(
|
|
__in PPH_PLUGIN Plugin,
|
|
__in ULONG Flags,
|
|
__in ULONG Id,
|
|
__in PWSTR Text,
|
|
__in_opt PVOID Context
|
|
);
|
|
|
|
PHAPPAPI
|
|
BOOLEAN
|
|
NTAPI
|
|
PhPluginTriggerEMenuItem(
|
|
__in HWND OwnerWindow,
|
|
__in PPH_EMENU_ITEM Item
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|