mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
plugins can now add to process tooltips
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3430 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
@@ -548,6 +548,10 @@
|
||||
RelativePath=".\include\phapp.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sdk\phapppub.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\sdk\phdk.h"
|
||||
>
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
typedef enum _PH_GENERAL_CALLBACK
|
||||
{
|
||||
GeneralCallbackMainWindowShowing = 0, // INT ShowCommand
|
||||
GeneralCallbackGetProcessHighlightingColor = 1, // PPH_GET_HIGHLIGHTING_COLOR Data
|
||||
GeneralCallbackGetProcessHighlightingColor = 1, // PPH_PLUGIN_GET_HIGHLIGHTING_COLOR Data
|
||||
GeneralCallbackGetProcessTooltipText = 2, // PPH_PLUGIN_GET_TOOLTIP_TEXT Data
|
||||
|
||||
GeneralCallbackMaximum
|
||||
} PH_GENERAL_CALLBACK, *PPH_GENERAL_CALLBACK;
|
||||
@@ -22,6 +23,15 @@ typedef struct _PH_PLUGIN_GET_HIGHLIGHTING_COLOR
|
||||
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 enum _PH_PLUGIN_CALLBACK
|
||||
{
|
||||
PluginCallbackLoad = 0,
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
*/
|
||||
|
||||
#include <phapp.h>
|
||||
#include <phplug.h>
|
||||
#define CINTERFACE
|
||||
#define COBJMACROS
|
||||
#include <taskschd.h>
|
||||
@@ -253,6 +254,17 @@ PPH_STRING PhGetProcessTooltipText(
|
||||
PhDeleteStringBuilder(&tasks);
|
||||
}
|
||||
|
||||
// Plugin
|
||||
if (PhPluginsEnabled)
|
||||
{
|
||||
PH_PLUGIN_GET_TOOLTIP_TEXT getTooltipText;
|
||||
|
||||
getTooltipText.Parameter = Process;
|
||||
getTooltipText.StringBuilder = &stringBuilder;
|
||||
|
||||
PhInvokeCallback(PhGetGeneralCallback(GeneralCallbackGetProcessTooltipText), &getTooltipText);
|
||||
}
|
||||
|
||||
// Notes
|
||||
|
||||
{
|
||||
|
||||
@@ -0,0 +1,350 @@
|
||||
#ifndef _PH_PHAPPPUB_H
|
||||
#define _PH_PHAPPPUB_H
|
||||
|
||||
// Process Hacker application functions exposed to plugins
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhRegisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhUnregisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
);
|
||||
|
||||
PHAPPAPI extern HWND PhMainWndHandle;
|
||||
|
||||
#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_ToggleVisible(hWnd) \
|
||||
SendMessage(hWnd, WM_PH_TOGGLE_VISIBLE, 0, 0)
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhLogMessageEntry(
|
||||
__in UCHAR Type,
|
||||
__in PPH_STRING Message
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiLockComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiLogoffComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSleepComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiHibernateComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiRestartComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiShutdownComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiPoweroffComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiConnectSession(
|
||||
__in HWND hWnd,
|
||||
__in ULONG SessionId
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDisconnectSession(
|
||||
__in HWND hWnd,
|
||||
__in ULONG SessionId
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiLogoffSession(
|
||||
__in HWND hWnd,
|
||||
__in ULONG SessionId
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiTerminateProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiTerminateTreeProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSuspendProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiResumeProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiRestartProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDebugProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiReduceWorkingSetProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetVirtualizationProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process,
|
||||
__in BOOLEAN Enable
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDetachFromDebuggerProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiInjectDllProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetIoPriorityProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process,
|
||||
__in ULONG IoPriority
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetPriorityProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process,
|
||||
__in ULONG PriorityClassWin32
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetDepStatusProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetProtectionProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiStartService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiContinueService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiPauseService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiStopService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDeleteService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiCloseConnections(
|
||||
__in HWND hWnd,
|
||||
__in PPH_NETWORK_ITEM *Connections,
|
||||
__in ULONG NumberOfConnections
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiTerminateThreads(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiForceTerminateThreads(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSuspendThreads(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiResumeThreads(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetPriorityThread(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM Thread,
|
||||
__in ULONG ThreadPriorityWin32
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetIoPriorityThread(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM Thread,
|
||||
__in ULONG IoPriority
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiUnloadModule(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_MODULE_ITEM Module
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiFreeMemory(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_MEMORY_ITEM MemoryItem,
|
||||
__in BOOLEAN Free
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiCloseHandles(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_HANDLE_ITEM *Handles,
|
||||
__in ULONG NumberOfHandles,
|
||||
__in BOOLEAN Warn
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetAttributesHandle(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_HANDLE_ITEM Handle,
|
||||
__in ULONG Attributes
|
||||
);
|
||||
|
||||
// settings
|
||||
|
||||
typedef enum _PH_SETTING_TYPE
|
||||
{
|
||||
StringSettingType,
|
||||
IntegerSettingType,
|
||||
IntegerPairSettingType
|
||||
} PH_SETTING_TYPE, PPH_SETTING_TYPE;
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise ULONG PhGetIntegerSetting(
|
||||
__in PWSTR Name
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise PH_INTEGER_PAIR PhGetIntegerPairSetting(
|
||||
__in PWSTR Name
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise PPH_STRING PhGetStringSetting(
|
||||
__in PWSTR Name
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetIntegerSetting(
|
||||
__in PWSTR Name,
|
||||
__in ULONG Value
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetIntegerPairSetting(
|
||||
__in PWSTR Name,
|
||||
__in PH_INTEGER_PAIR Value
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetStringSetting(
|
||||
__in PWSTR Name,
|
||||
__in PWSTR Value
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetStringSetting2(
|
||||
__in PWSTR Name,
|
||||
__in PPH_STRINGREF Value
|
||||
);
|
||||
|
||||
// High-level settings creation
|
||||
|
||||
typedef struct _PH_CREATE_SETTING
|
||||
{
|
||||
PH_SETTING_TYPE Type;
|
||||
PWSTR Name;
|
||||
PWSTR DefaultValue;
|
||||
} PH_SETTING_CREATE, *PPH_SETTING_CREATE;
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhAddSettings(
|
||||
__in PPH_SETTING_CREATE Settings,
|
||||
__in ULONG NumberOfSettings
|
||||
);
|
||||
|
||||
#endif
|
||||
@@ -12,350 +12,6 @@
|
||||
#include "circbuf.h"
|
||||
#include "providers.h"
|
||||
|
||||
// phapp
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhRegisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhUnregisterDialog(
|
||||
__in HWND DialogWindowHandle
|
||||
);
|
||||
|
||||
PHAPPAPI extern HWND PhMainWndHandle;
|
||||
|
||||
#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_ToggleVisible(hWnd) \
|
||||
SendMessage(hWnd, WM_PH_TOGGLE_VISIBLE, 0, 0)
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhLogMessageEntry(
|
||||
__in UCHAR Type,
|
||||
__in PPH_STRING Message
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiLockComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiLogoffComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSleepComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiHibernateComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiRestartComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiShutdownComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiPoweroffComputer(
|
||||
__in HWND hWnd
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiConnectSession(
|
||||
__in HWND hWnd,
|
||||
__in ULONG SessionId
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDisconnectSession(
|
||||
__in HWND hWnd,
|
||||
__in ULONG SessionId
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiLogoffSession(
|
||||
__in HWND hWnd,
|
||||
__in ULONG SessionId
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiTerminateProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiTerminateTreeProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSuspendProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiResumeProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiRestartProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDebugProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiReduceWorkingSetProcesses(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM *Processes,
|
||||
__in ULONG NumberOfProcesses
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetVirtualizationProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process,
|
||||
__in BOOLEAN Enable
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDetachFromDebuggerProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiInjectDllProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetIoPriorityProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process,
|
||||
__in ULONG IoPriority
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetPriorityProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process,
|
||||
__in ULONG PriorityClassWin32
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetDepStatusProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetProtectionProcess(
|
||||
__in HWND hWnd,
|
||||
__in PPH_PROCESS_ITEM Process
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiStartService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiContinueService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiPauseService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiStopService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiDeleteService(
|
||||
__in HWND hWnd,
|
||||
__in PPH_SERVICE_ITEM Service
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiCloseConnections(
|
||||
__in HWND hWnd,
|
||||
__in PPH_NETWORK_ITEM *Connections,
|
||||
__in ULONG NumberOfConnections
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiTerminateThreads(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiForceTerminateThreads(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSuspendThreads(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiResumeThreads(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM *Threads,
|
||||
__in ULONG NumberOfThreads
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetPriorityThread(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM Thread,
|
||||
__in ULONG ThreadPriorityWin32
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetIoPriorityThread(
|
||||
__in HWND hWnd,
|
||||
__in PPH_THREAD_ITEM Thread,
|
||||
__in ULONG IoPriority
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiUnloadModule(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_MODULE_ITEM Module
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiFreeMemory(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_MEMORY_ITEM MemoryItem,
|
||||
__in BOOLEAN Free
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiCloseHandles(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_HANDLE_ITEM *Handles,
|
||||
__in ULONG NumberOfHandles,
|
||||
__in BOOLEAN Warn
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
BOOLEAN PhUiSetAttributesHandle(
|
||||
__in HWND hWnd,
|
||||
__in HANDLE ProcessId,
|
||||
__in PPH_HANDLE_ITEM Handle,
|
||||
__in ULONG Attributes
|
||||
);
|
||||
|
||||
// settings
|
||||
|
||||
typedef enum _PH_SETTING_TYPE
|
||||
{
|
||||
StringSettingType,
|
||||
IntegerSettingType,
|
||||
IntegerPairSettingType
|
||||
} PH_SETTING_TYPE, PPH_SETTING_TYPE;
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise ULONG PhGetIntegerSetting(
|
||||
__in PWSTR Name
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise PH_INTEGER_PAIR PhGetIntegerPairSetting(
|
||||
__in PWSTR Name
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise PPH_STRING PhGetStringSetting(
|
||||
__in PWSTR Name
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetIntegerSetting(
|
||||
__in PWSTR Name,
|
||||
__in ULONG Value
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetIntegerPairSetting(
|
||||
__in PWSTR Name,
|
||||
__in PH_INTEGER_PAIR Value
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetStringSetting(
|
||||
__in PWSTR Name,
|
||||
__in PWSTR Value
|
||||
);
|
||||
|
||||
PHAPPAPI
|
||||
__mayRaise VOID PhSetStringSetting2(
|
||||
__in PWSTR Name,
|
||||
__in PPH_STRINGREF Value
|
||||
);
|
||||
|
||||
// High-level settings creation
|
||||
|
||||
typedef struct _PH_CREATE_SETTING
|
||||
{
|
||||
PH_SETTING_TYPE Type;
|
||||
PWSTR Name;
|
||||
PWSTR DefaultValue;
|
||||
} PH_SETTING_CREATE, *PPH_SETTING_CREATE;
|
||||
|
||||
PHAPPAPI
|
||||
VOID PhAddSettings(
|
||||
__in PPH_SETTING_CREATE Settings,
|
||||
__in ULONG NumberOfSettings
|
||||
);
|
||||
#include "phapppub.h"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@echo off
|
||||
|
||||
rmdir /S /Q ..\..\sdk
|
||||
mkdir ..\..\sdk\include
|
||||
mkdir ..\..\sdk\lib\amd64
|
||||
@@ -59,7 +61,10 @@ for %%a in (
|
||||
providers.h
|
||||
) do copy ..\..\ProcessHacker\include\%%a ..\..\sdk\include\
|
||||
|
||||
copy ..\..\ProcessHacker\sdk\phdk.h ..\..\sdk\include\
|
||||
for %%a in (
|
||||
phapppub.h
|
||||
phdk.h
|
||||
) do copy ..\..\ProcessHacker\sdk\%%a ..\..\sdk\include\
|
||||
|
||||
rem Libraries
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
#include <phdk.h>
|
||||
#include "sbiedll.h"
|
||||
|
||||
typedef struct _BOXED_PROCESS
|
||||
{
|
||||
HANDLE ProcessId;
|
||||
WCHAR BoxName[34];
|
||||
} BOXED_PROCESS, *PBOXED_PROCESS;
|
||||
|
||||
VOID NTAPI LoadCallback(
|
||||
__in PVOID Parameter,
|
||||
__in PVOID Context
|
||||
@@ -16,6 +22,11 @@ VOID NTAPI GetProcessHighlightingColorCallback(
|
||||
__in PVOID Context
|
||||
);
|
||||
|
||||
VOID NTAPI GetProcessTooltipTextCallback(
|
||||
__in PVOID Parameter,
|
||||
__in PVOID Context
|
||||
);
|
||||
|
||||
VOID NTAPI RefreshBoxedPids(
|
||||
__in PVOID Context,
|
||||
__in BOOLEAN TimerOrWaitFired
|
||||
@@ -25,13 +36,13 @@ PPH_PLUGIN PluginInstance;
|
||||
PH_CALLBACK_REGISTRATION PluginLoadCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION PluginUnloadCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION GetProcessHighlightingColorCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION GetProcessTooltipTextCallbackRegistration;
|
||||
|
||||
P_SbieApi_EnumBoxes SbieApi_EnumBoxes;
|
||||
P_SbieApi_EnumProcessEx SbieApi_EnumProcessEx;
|
||||
|
||||
PH_QUEUED_LOCK BoxedPidsLock = PH_QUEUED_LOCK_INIT;
|
||||
ULONG BoxedPids[512];
|
||||
ULONG NumberOfBoxedPids = 0;
|
||||
PPH_HASHTABLE BoxedProcessesHashtable;
|
||||
PH_QUEUED_LOCK BoxedProcessesLock = PH_QUEUED_LOCK_INIT;
|
||||
|
||||
LOGICAL DllMain(
|
||||
__in HINSTANCE Instance,
|
||||
@@ -64,6 +75,12 @@ LOGICAL DllMain(
|
||||
NULL,
|
||||
&GetProcessHighlightingColorCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetGeneralCallback(GeneralCallbackGetProcessTooltipText),
|
||||
GetProcessTooltipTextCallback,
|
||||
NULL,
|
||||
&GetProcessTooltipTextCallbackRegistration
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -71,6 +88,21 @@ LOGICAL DllMain(
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOLEAN NTAPI BoxedProcessesCompareFunction(
|
||||
__in PVOID Entry1,
|
||||
__in PVOID Entry2
|
||||
)
|
||||
{
|
||||
return ((PBOXED_PROCESS)Entry1)->ProcessId == ((PBOXED_PROCESS)Entry2)->ProcessId;
|
||||
}
|
||||
|
||||
ULONG NTAPI BoxedProcessesHashFunction(
|
||||
__in PVOID Entry
|
||||
)
|
||||
{
|
||||
return (ULONG)((PBOXED_PROCESS)Entry)->ProcessId / 4;
|
||||
}
|
||||
|
||||
VOID NTAPI LoadCallback(
|
||||
__in PVOID Parameter,
|
||||
__in PVOID Context
|
||||
@@ -80,6 +112,13 @@ VOID NTAPI LoadCallback(
|
||||
HANDLE timerQueueHandle;
|
||||
HANDLE timerHandle;
|
||||
|
||||
BoxedProcessesHashtable = PhCreateHashtable(
|
||||
sizeof(BOXED_PROCESS),
|
||||
BoxedProcessesCompareFunction,
|
||||
BoxedProcessesHashFunction,
|
||||
32
|
||||
);
|
||||
|
||||
module = LoadLibrary(L"C:\\Program Files\\Sandboxie\\SbieDll.dll");
|
||||
SbieApi_EnumBoxes = (PVOID)GetProcAddress(module, "_SbieApi_EnumBoxes@8");
|
||||
SbieApi_EnumProcessEx = (PVOID)GetProcAddress(module, "_SbieApi_EnumProcessEx@16");
|
||||
@@ -103,22 +142,42 @@ VOID NTAPI GetProcessHighlightingColorCallback(
|
||||
)
|
||||
{
|
||||
PPH_PLUGIN_GET_HIGHLIGHTING_COLOR getHighlightingColor = Parameter;
|
||||
ULONG i;
|
||||
BOXED_PROCESS lookupBoxedProcess;
|
||||
PBOXED_PROCESS boxedProcess;
|
||||
|
||||
PhAcquireQueuedLockShared(&BoxedPidsLock);
|
||||
PhAcquireQueuedLockShared(&BoxedProcessesLock);
|
||||
|
||||
for (i = 0; i < NumberOfBoxedPids; i++)
|
||||
lookupBoxedProcess.ProcessId = ((PPH_PROCESS_ITEM)getHighlightingColor->Parameter)->ProcessId;
|
||||
|
||||
if (boxedProcess = PhGetHashtableEntry(BoxedProcessesHashtable, &lookupBoxedProcess))
|
||||
{
|
||||
if (BoxedPids[i] == (ULONG)((PPH_PROCESS_ITEM)getHighlightingColor->Parameter)->ProcessId)
|
||||
{
|
||||
getHighlightingColor->BackColor = RGB(0x33, 0x33, 0x00);
|
||||
getHighlightingColor->Cache = TRUE;
|
||||
getHighlightingColor->Handled = TRUE;
|
||||
break;
|
||||
}
|
||||
getHighlightingColor->BackColor = RGB(0x33, 0x33, 0x00);
|
||||
getHighlightingColor->Cache = TRUE;
|
||||
getHighlightingColor->Handled = TRUE;
|
||||
}
|
||||
|
||||
PhReleaseQueuedLockShared(&BoxedPidsLock);
|
||||
PhReleaseQueuedLockShared(&BoxedProcessesLock);
|
||||
}
|
||||
|
||||
VOID NTAPI GetProcessTooltipTextCallback(
|
||||
__in PVOID Parameter,
|
||||
__in PVOID Context
|
||||
)
|
||||
{
|
||||
PPH_PLUGIN_GET_TOOLTIP_TEXT getTooltipText = Parameter;
|
||||
BOXED_PROCESS lookupBoxedProcess;
|
||||
PBOXED_PROCESS boxedProcess;
|
||||
|
||||
PhAcquireQueuedLockShared(&BoxedProcessesLock);
|
||||
|
||||
lookupBoxedProcess.ProcessId = ((PPH_PROCESS_ITEM)getTooltipText->Parameter)->ProcessId;
|
||||
|
||||
if (boxedProcess = PhGetHashtableEntry(BoxedProcessesHashtable, &lookupBoxedProcess))
|
||||
{
|
||||
PhStringBuilderAppendFormat(getTooltipText->StringBuilder, L"Sandboxie:\n Box name: %s\n", boxedProcess->BoxName);
|
||||
}
|
||||
|
||||
PhReleaseQueuedLockShared(&BoxedProcessesLock);
|
||||
}
|
||||
|
||||
VOID NTAPI RefreshBoxedPids(
|
||||
@@ -133,9 +192,9 @@ VOID NTAPI RefreshBoxedPids(
|
||||
if (!SbieApi_EnumBoxes || !SbieApi_EnumProcessEx)
|
||||
return;
|
||||
|
||||
PhAcquireQueuedLockExclusive(&BoxedPidsLock);
|
||||
PhAcquireQueuedLockExclusive(&BoxedProcessesLock);
|
||||
|
||||
NumberOfBoxedPids = 0;
|
||||
PhClearHashtable(BoxedProcessesHashtable);
|
||||
|
||||
index = -1;
|
||||
|
||||
@@ -149,9 +208,14 @@ VOID NTAPI RefreshBoxedPids(
|
||||
count = pids[0];
|
||||
pid = &pids[1];
|
||||
|
||||
while (count != 0 && NumberOfBoxedPids < 512)
|
||||
while (count != 0)
|
||||
{
|
||||
BoxedPids[NumberOfBoxedPids++] = *pid;
|
||||
BOXED_PROCESS boxedProcess;
|
||||
|
||||
boxedProcess.ProcessId = ULongToHandle(*pid);
|
||||
memcpy(boxedProcess.BoxName, boxName, sizeof(boxName));
|
||||
|
||||
PhAddHashtableEntry(BoxedProcessesHashtable, &boxedProcess);
|
||||
|
||||
count--;
|
||||
pid++;
|
||||
@@ -159,5 +223,5 @@ VOID NTAPI RefreshBoxedPids(
|
||||
}
|
||||
}
|
||||
|
||||
PhReleaseQueuedLockExclusive(&BoxedPidsLock);
|
||||
PhReleaseQueuedLockExclusive(&BoxedProcessesLock);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user