Files
mirror-processhacker/2.x/trunk/ProcessHacker/include/phsvcapi.h
T
wj32 72e08902f4 added elevation support for setting priority class and I/O priority
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@4243 21ef857c-d57f-4fe0-8362-d861dc6d29cd
2011-06-20 07:05:43 +00:00

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