mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
72e08902f4
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@4243 21ef857c-d57f-4fe0-8362-d861dc6d29cd
224 lines
6.0 KiB
C
224 lines
6.0 KiB
C
#ifndef PHSVCAPI_H
|
|
#define PHSVCAPI_H
|
|
|
|
#define PHSVC_PORT_NAME (L"\\BaseNamedObjects\\PhSvcApiPort")
|
|
|
|
typedef enum _PHSVC_API_NUMBER
|
|
{
|
|
PhSvcCloseApiNumber = 1,
|
|
PhSvcExecuteRunAsCommandApiNumber = 2,
|
|
PhSvcUnloadDriverApiNumber = 3,
|
|
PhSvcControlProcessApiNumber = 4,
|
|
PhSvcControlServiceApiNumber = 5,
|
|
PhSvcCreateServiceApiNumber = 6,
|
|
PhSvcChangeServiceConfigApiNumber = 7,
|
|
PhSvcChangeServiceConfig2ApiNumber = 8,
|
|
PhSvcSetTcpEntryApiNumber = 9,
|
|
PhSvcControlThreadApiNumber = 10,
|
|
PhSvcAddAccountRightApiNumber = 11,
|
|
PhSvcInvokeRunAsServiceApiNumber = 12,
|
|
PhSvcMaximumApiNumber
|
|
} PHSVC_API_NUMBER, *PPHSVC_API_NUMBER;
|
|
|
|
typedef struct _PHSVC_API_CONNECTINFO
|
|
{
|
|
HANDLE ServerProcessId;
|
|
} PHSVC_API_CONNECTINFO, *PPHSVC_API_CONNECTINFO;
|
|
|
|
typedef union _PHSVC_API_CLOSE
|
|
{
|
|
struct
|
|
{
|
|
HANDLE Handle;
|
|
} i;
|
|
} PHSVC_API_CLOSE, *PPHSVC_API_CLOSE;
|
|
|
|
typedef union _PHSVC_API_EXECUTERUNASCOMMAND
|
|
{
|
|
struct
|
|
{
|
|
ULONG ProcessId;
|
|
PH_RELATIVE_STRINGREF UserName;
|
|
PH_RELATIVE_STRINGREF Password;
|
|
ULONG LogonType;
|
|
ULONG SessionId;
|
|
PH_RELATIVE_STRINGREF CurrentDirectory;
|
|
PH_RELATIVE_STRINGREF CommandLine;
|
|
PH_RELATIVE_STRINGREF FileName;
|
|
PH_RELATIVE_STRINGREF DesktopName;
|
|
BOOLEAN UseLinkedToken;
|
|
PH_RELATIVE_STRINGREF ServiceName;
|
|
} i;
|
|
} PHSVC_API_EXECUTERUNASCOMMAND, *PPHSVC_API_EXECUTERUNASCOMMAND;
|
|
|
|
typedef union _PHSVC_API_UNLOADDRIVER
|
|
{
|
|
struct
|
|
{
|
|
PVOID BaseAddress;
|
|
PH_RELATIVE_STRINGREF Name;
|
|
} i;
|
|
} PHSVC_API_UNLOADDRIVER, *PPHSVC_API_UNLOADDRIVER;
|
|
|
|
typedef enum _PHSVC_API_CONTROLPROCESS_COMMAND
|
|
{
|
|
PhSvcControlProcessTerminate = 1,
|
|
PhSvcControlProcessSuspend,
|
|
PhSvcControlProcessResume,
|
|
PhSvcControlProcessPriority,
|
|
PhSvcControlProcessIoPriority
|
|
} PHSVC_API_CONTROLPROCESS_COMMAND;
|
|
|
|
typedef union _PHSVC_API_CONTROLPROCESS
|
|
{
|
|
struct
|
|
{
|
|
HANDLE ProcessId;
|
|
PHSVC_API_CONTROLPROCESS_COMMAND Command;
|
|
ULONG Argument;
|
|
} i;
|
|
} PHSVC_API_CONTROLPROCESS, *PPHSVC_API_CONTROLPROCESS;
|
|
|
|
typedef enum _PHSVC_API_CONTROLSERVICE_COMMAND
|
|
{
|
|
PhSvcControlServiceStart = 1,
|
|
PhSvcControlServiceContinue,
|
|
PhSvcControlServicePause,
|
|
PhSvcControlServiceStop,
|
|
PhSvcControlServiceDelete
|
|
} PHSVC_API_CONTROLSERVICE_COMMAND;
|
|
|
|
typedef union _PHSVC_API_CONTROLSERVICE
|
|
{
|
|
struct
|
|
{
|
|
PH_RELATIVE_STRINGREF ServiceName;
|
|
PHSVC_API_CONTROLSERVICE_COMMAND Command;
|
|
} i;
|
|
} PHSVC_API_CONTROLSERVICE, *PPHSVC_API_CONTROLSERVICE;
|
|
|
|
typedef union _PHSVC_API_CREATESERVICE
|
|
{
|
|
struct
|
|
{
|
|
// ServiceName is the only required string.
|
|
PH_RELATIVE_STRINGREF ServiceName;
|
|
PH_RELATIVE_STRINGREF DisplayName;
|
|
ULONG ServiceType;
|
|
ULONG StartType;
|
|
ULONG ErrorControl;
|
|
PH_RELATIVE_STRINGREF BinaryPathName;
|
|
PH_RELATIVE_STRINGREF LoadOrderGroup;
|
|
PH_RELATIVE_STRINGREF Dependencies;
|
|
PH_RELATIVE_STRINGREF ServiceStartName;
|
|
PH_RELATIVE_STRINGREF Password;
|
|
BOOLEAN TagIdSpecified;
|
|
} i;
|
|
struct
|
|
{
|
|
ULONG TagId;
|
|
} o;
|
|
} PHSVC_API_CREATESERVICE, *PPHSVC_API_CREATESERVICE;
|
|
|
|
typedef union _PHSVC_API_CHANGESERVICECONFIG
|
|
{
|
|
struct
|
|
{
|
|
PH_RELATIVE_STRINGREF ServiceName;
|
|
ULONG ServiceType;
|
|
ULONG StartType;
|
|
ULONG ErrorControl;
|
|
PH_RELATIVE_STRINGREF BinaryPathName;
|
|
PH_RELATIVE_STRINGREF LoadOrderGroup;
|
|
PH_RELATIVE_STRINGREF Dependencies;
|
|
PH_RELATIVE_STRINGREF ServiceStartName;
|
|
PH_RELATIVE_STRINGREF Password;
|
|
PH_RELATIVE_STRINGREF DisplayName;
|
|
BOOLEAN TagIdSpecified;
|
|
} i;
|
|
struct
|
|
{
|
|
ULONG TagId;
|
|
} o;
|
|
} PHSVC_API_CHANGESERVICECONFIG, *PPHSVC_API_CHANGESERVICECONFIG;
|
|
|
|
typedef union _PHSVC_API_CHANGESERVICECONFIG2
|
|
{
|
|
struct
|
|
{
|
|
PH_RELATIVE_STRINGREF ServiceName;
|
|
ULONG InfoLevel;
|
|
PH_RELATIVE_STRINGREF Info;
|
|
} i;
|
|
} PHSVC_API_CHANGESERVICECONFIG2, *PPHSVC_API_CHANGESERVICECONFIG2;
|
|
|
|
typedef union _PHSVC_API_SETTCPENTRY
|
|
{
|
|
struct
|
|
{
|
|
ULONG State;
|
|
ULONG LocalAddress;
|
|
ULONG LocalPort;
|
|
ULONG RemoteAddress;
|
|
ULONG RemotePort;
|
|
} i;
|
|
} PHSVC_API_SETTCPENTRY, *PPHSVC_API_SETTCPENTRY;
|
|
|
|
typedef enum _PHSVC_API_CONTROLTHREAD_COMMAND
|
|
{
|
|
PhSvcControlThreadTerminate = 1,
|
|
PhSvcControlThreadSuspend,
|
|
PhSvcControlThreadResume,
|
|
PhSvcControlThreadIoPriority
|
|
} PHSVC_API_CONTROLTHREAD_COMMAND;
|
|
|
|
typedef union _PHSVC_API_CONTROLTHREAD
|
|
{
|
|
struct
|
|
{
|
|
HANDLE ThreadId;
|
|
PHSVC_API_CONTROLTHREAD_COMMAND Command;
|
|
ULONG Argument;
|
|
} i;
|
|
} PHSVC_API_CONTROLTHREAD, *PPHSVC_API_CONTROLTHREAD;
|
|
|
|
typedef union _PHSVC_API_ADDACCOUNTRIGHT
|
|
{
|
|
struct
|
|
{
|
|
PH_RELATIVE_STRINGREF AccountSid;
|
|
PH_RELATIVE_STRINGREF UserRight;
|
|
} i;
|
|
} PHSVC_API_ADDACCOUNTRIGHT, *PPHSVC_API_ADDACCOUNTRIGHT;
|
|
|
|
typedef struct _PHSVC_API_MSG
|
|
{
|
|
PORT_MESSAGE h;
|
|
union
|
|
{
|
|
PHSVC_API_CONNECTINFO ConnectInfo;
|
|
struct
|
|
{
|
|
PHSVC_API_NUMBER ApiNumber;
|
|
NTSTATUS ReturnStatus;
|
|
|
|
union
|
|
{
|
|
PHSVC_API_CLOSE Close;
|
|
PHSVC_API_EXECUTERUNASCOMMAND ExecuteRunAsCommand;
|
|
PHSVC_API_UNLOADDRIVER UnloadDriver;
|
|
PHSVC_API_CONTROLPROCESS ControlProcess;
|
|
PHSVC_API_CONTROLSERVICE ControlService;
|
|
PHSVC_API_CREATESERVICE CreateService;
|
|
PHSVC_API_CHANGESERVICECONFIG ChangeServiceConfig;
|
|
PHSVC_API_CHANGESERVICECONFIG2 ChangeServiceConfig2;
|
|
PHSVC_API_SETTCPENTRY SetTcpEntry;
|
|
PHSVC_API_CONTROLTHREAD ControlThread;
|
|
PHSVC_API_ADDACCOUNTRIGHT AddAccountRight;
|
|
} u;
|
|
};
|
|
};
|
|
} PHSVC_API_MSG, *PPHSVC_API_MSG;
|
|
|
|
#endif
|