Add functions implemented by services in ctypes_generation

This commit is contained in:
hakril
2024-12-20 09:08:01 +01:00
parent 9c1c125931
commit 196d4dcac4
6 changed files with 108 additions and 0 deletions
@@ -267,4 +267,38 @@ BOOL StartServiceCtrlDispatcherA(
BOOL StartServiceCtrlDispatcherW(
SERVICE_TABLE_ENTRYW *lpServiceStartTable
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(
[in] LPCSTR lpServiceName,
[in] LPHANDLER_FUNCTION_EX lpHandlerProc,
[in, optional] LPVOID lpContext
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(
[in] LPCWSTR lpServiceName,
[in] LPHANDLER_FUNCTION_EX lpHandlerProc,
[in, optional] LPVOID lpContext
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(
[in] LPCSTR lpServiceName,
[in] LPHANDLER_FUNCTION lpHandlerProc
);
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(
[in] LPCWSTR lpServiceName,
[in] LPHANDLER_FUNCTION lpHandlerProc
);
BOOL SetServiceStatus(
[in] SERVICE_STATUS_HANDLE hServiceStatus,
[in] LPSERVICE_STATUS lpServiceStatus
);
BOOL SetServiceBits(
[in] SERVICE_STATUS_HANDLE hServiceStatus,
[in] DWORD dwServiceBits,
[in] BOOL bSetBitsOn,
[in] BOOL bUpdateImmediately
);
@@ -263,6 +263,8 @@ LPSERVICE_MAIN_FUNCTIONA = PVOID
LPSERVICE_MAIN_FUNCTIONW = PVOID
LPOVERLAPPED_COMPLETION_ROUTINE = PVOID
PDNS_QUERY_COMPLETION_ROUTINE = PVOID
LPHANDLER_FUNCTION = PVOID
LPHANDLER_FUNCTION_EX = PVOID
// Will be changed at import time
+6
View File
@@ -15056,6 +15056,10 @@ functions = {'AccessCheck',
'RegSetValueExW',
'RegUnLoadKeyA',
'RegUnLoadKeyW',
'RegisterServiceCtrlHandlerA',
'RegisterServiceCtrlHandlerExA',
'RegisterServiceCtrlHandlerExW',
'RegisterServiceCtrlHandlerW',
'RegisterTraceGuidsA',
'RegisterTraceGuidsW',
'RemoveVectoredExceptionHandler',
@@ -15103,6 +15107,8 @@ functions = {'AccessCheck',
'SetSecurityDescriptorDacl',
'SetSecurityDescriptorOwner',
'SetSecurityInfo',
'SetServiceBits',
'SetServiceStatus',
'SetStdHandle',
'SetTcpEntry',
'SetThreadAffinityMask',
+30
View File
@@ -2300,6 +2300,36 @@ StartServiceCtrlDispatcherAParams = ((1, 'lpServiceStartTable'),)
StartServiceCtrlDispatcherWPrototype = WINFUNCTYPE(BOOL, POINTER(SERVICE_TABLE_ENTRYW))
StartServiceCtrlDispatcherWParams = ((1, 'lpServiceStartTable'),)
#def RegisterServiceCtrlHandlerExA(lpServiceName, lpHandlerProc, lpContext):
# return RegisterServiceCtrlHandlerExA.ctypes_function(lpServiceName, lpHandlerProc, lpContext)
RegisterServiceCtrlHandlerExAPrototype = WINFUNCTYPE(SERVICE_STATUS_HANDLE, LPCSTR, LPHANDLER_FUNCTION_EX, LPVOID)
RegisterServiceCtrlHandlerExAParams = ((1, 'lpServiceName'), (1, 'lpHandlerProc'), (1, 'lpContext'))
#def RegisterServiceCtrlHandlerExW(lpServiceName, lpHandlerProc, lpContext):
# return RegisterServiceCtrlHandlerExW.ctypes_function(lpServiceName, lpHandlerProc, lpContext)
RegisterServiceCtrlHandlerExWPrototype = WINFUNCTYPE(SERVICE_STATUS_HANDLE, LPCWSTR, LPHANDLER_FUNCTION_EX, LPVOID)
RegisterServiceCtrlHandlerExWParams = ((1, 'lpServiceName'), (1, 'lpHandlerProc'), (1, 'lpContext'))
#def RegisterServiceCtrlHandlerA(lpServiceName, lpHandlerProc):
# return RegisterServiceCtrlHandlerA.ctypes_function(lpServiceName, lpHandlerProc)
RegisterServiceCtrlHandlerAPrototype = WINFUNCTYPE(SERVICE_STATUS_HANDLE, LPCSTR, LPHANDLER_FUNCTION)
RegisterServiceCtrlHandlerAParams = ((1, 'lpServiceName'), (1, 'lpHandlerProc'))
#def RegisterServiceCtrlHandlerW(lpServiceName, lpHandlerProc):
# return RegisterServiceCtrlHandlerW.ctypes_function(lpServiceName, lpHandlerProc)
RegisterServiceCtrlHandlerWPrototype = WINFUNCTYPE(SERVICE_STATUS_HANDLE, LPCWSTR, LPHANDLER_FUNCTION)
RegisterServiceCtrlHandlerWParams = ((1, 'lpServiceName'), (1, 'lpHandlerProc'))
#def SetServiceStatus(hServiceStatus, lpServiceStatus):
# return SetServiceStatus.ctypes_function(hServiceStatus, lpServiceStatus)
SetServiceStatusPrototype = WINFUNCTYPE(BOOL, SERVICE_STATUS_HANDLE, LPSERVICE_STATUS)
SetServiceStatusParams = ((1, 'hServiceStatus'), (1, 'lpServiceStatus'))
#def SetServiceBits(hServiceStatus, dwServiceBits, bSetBitsOn, bUpdateImmediately):
# return SetServiceBits.ctypes_function(hServiceStatus, dwServiceBits, bSetBitsOn, bUpdateImmediately)
SetServiceBitsPrototype = WINFUNCTYPE(BOOL, SERVICE_STATUS_HANDLE, DWORD, BOOL, BOOL)
SetServiceBitsParams = ((1, 'hServiceStatus'), (1, 'dwServiceBits'), (1, 'bSetBitsOn'), (1, 'bUpdateImmediately'))
#def SetupDiClassNameFromGuidA(ClassGuid, ClassName, ClassNameSize, RequiredSize):
# return SetupDiClassNameFromGuidA.ctypes_function(ClassGuid, ClassName, ClassNameSize, RequiredSize)
SetupDiClassNameFromGuidAPrototype = WINFUNCTYPE(BOOL, POINTER(GUID), PSTR, DWORD, PDWORD)
+2
View File
@@ -301,6 +301,8 @@ LPSERVICE_MAIN_FUNCTIONA = PVOID
LPSERVICE_MAIN_FUNCTIONW = PVOID
LPOVERLAPPED_COMPLETION_ROUTINE = PVOID
PDNS_QUERY_COMPLETION_ROUTINE = PVOID
LPHANDLER_FUNCTION = PVOID
LPHANDLER_FUNCTION_EX = PVOID
LPCONTEXT = PVOID
HCERTSTORE = PVOID
HCRYPTMSG = PVOID
+34
View File
@@ -493,6 +493,40 @@ def CreateServiceW(hSCManager, lpServiceName, lpDisplayName, dwDesiredAccess, dw
def DeleteService(hService):
return DeleteService.ctypes_function(hService)
## Service : functions implemented by services.
@Advapi32Proxy()
def StartServiceCtrlDispatcherA(lpServiceStartTable):
return StartServiceCtrlDispatcherA.ctypes_function(lpServiceStartTable)
@Advapi32Proxy()
def StartServiceCtrlDispatcherW(lpServiceStartTable):
return StartServiceCtrlDispatcherW.ctypes_function(lpServiceStartTable)
@Advapi32Proxy()
def RegisterServiceCtrlHandlerExA(lpServiceName, lpHandlerProc, lpContext):
return RegisterServiceCtrlHandlerExA.ctypes_function(lpServiceName, lpHandlerProc, lpContext)
@Advapi32Proxy()
def RegisterServiceCtrlHandlerExW(lpServiceName, lpHandlerProc, lpContext):
return RegisterServiceCtrlHandlerExW.ctypes_function(lpServiceName, lpHandlerProc, lpContext)
@Advapi32Proxy()
def RegisterServiceCtrlHandlerA(lpServiceName, lpHandlerProc):
return RegisterServiceCtrlHandlerA.ctypes_function(lpServiceName, lpHandlerProc)
@Advapi32Proxy()
def RegisterServiceCtrlHandlerW(lpServiceName, lpHandlerProc):
return RegisterServiceCtrlHandlerW.ctypes_function(lpServiceName, lpHandlerProc)
@Advapi32Proxy()
def SetServiceStatus(hServiceStatus, lpServiceStatus):
return SetServiceStatus.ctypes_function(hServiceStatus, lpServiceStatus)
@Advapi32Proxy()
def SetServiceBits(hServiceStatus, dwServiceBits, bSetBitsOn, bUpdateImmediately):
return SetServiceBits.ctypes_function(hServiceStatus, dwServiceBits, bSetBitsOn, bUpdateImmediately)
# Event log
@Advapi32Proxy()