4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * winsvc.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.winsvc; 9b639cf2d6 2015-05-05 kinaba: pragma(lib, "advapi32"); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.w32api, win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: check Windows version support 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const TCHAR[] 4e2933c620 2015-04-21 kinaba: SERVICES_ACTIVE_DATABASE = "ServicesActive", 4e2933c620 2015-04-21 kinaba: SERVICES_FAILED_DATABASE = "ServicesFailed"; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const TCHAR SC_GROUP_IDENTIFIER = '+'; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SC_MANAGER_ALL_ACCESS = 0xf003f, 4e2933c620 2015-04-21 kinaba: SC_MANAGER_CONNECT = 1, 4e2933c620 2015-04-21 kinaba: SC_MANAGER_CREATE_SERVICE = 2, 4e2933c620 2015-04-21 kinaba: SC_MANAGER_ENUMERATE_SERVICE = 4, 4e2933c620 2015-04-21 kinaba: SC_MANAGER_LOCK = 8, 4e2933c620 2015-04-21 kinaba: SC_MANAGER_QUERY_LOCK_STATUS = 16, 4e2933c620 2015-04-21 kinaba: SC_MANAGER_MODIFY_BOOT_CONFIG = 32; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD SERVICE_NO_CHANGE = 0xffffffff; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SERVICE_STOPPED = 1, 4e2933c620 2015-04-21 kinaba: SERVICE_START_PENDING, 4e2933c620 2015-04-21 kinaba: SERVICE_STOP_PENDING, 4e2933c620 2015-04-21 kinaba: SERVICE_RUNNING, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTINUE_PENDING, 4e2933c620 2015-04-21 kinaba: SERVICE_PAUSE_PENDING, 4e2933c620 2015-04-21 kinaba: SERVICE_PAUSED // = 7 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_STOP = 1, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_PAUSE_CONTINUE = 2, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_SHUTDOWN = 4, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_PARAMCHANGE = 8, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_NETBINDCHANGE = 16, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_POWEREVENT = 64, 4e2933c620 2015-04-21 kinaba: SERVICE_ACCEPT_SESSIONCHANGE = 128; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_STOP = 1, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_PAUSE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_CONTINUE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_INTERROGATE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_SHUTDOWN, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_PARAMCHANGE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_NETBINDADD, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_NETBINDREMOVE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_NETBINDENABLE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_NETBINDDISABLE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_DEVICEEVENT, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_HARDWAREPROFILECHANGE, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_POWEREVENT, 4e2933c620 2015-04-21 kinaba: SERVICE_CONTROL_SESSIONCHANGE, // = 14 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SERVICE_ACTIVE = 1, 4e2933c620 2015-04-21 kinaba: SERVICE_INACTIVE, 4e2933c620 2015-04-21 kinaba: SERVICE_STATE_ALL 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SERVICE_QUERY_CONFIG = 0x0001, 4e2933c620 2015-04-21 kinaba: SERVICE_CHANGE_CONFIG = 0x0002, 4e2933c620 2015-04-21 kinaba: SERVICE_QUERY_STATUS = 0x0004, 4e2933c620 2015-04-21 kinaba: SERVICE_ENUMERATE_DEPENDENTS = 0x0008, 4e2933c620 2015-04-21 kinaba: SERVICE_START = 0x0010, 4e2933c620 2015-04-21 kinaba: SERVICE_STOP = 0x0020, 4e2933c620 2015-04-21 kinaba: SERVICE_PAUSE_CONTINUE = 0x0040, 4e2933c620 2015-04-21 kinaba: SERVICE_INTERROGATE = 0x0080, 4e2933c620 2015-04-21 kinaba: SERVICE_USER_DEFINED_CONTROL = 0x0100, 4e2933c620 2015-04-21 kinaba: SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // This is not documented on the MSDN site 4e2933c620 2015-04-21 kinaba: const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_DESCRIPTION = 1, 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_FAILURE_ACTIONS, 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_DELAYED_AUTO_START_INFO, 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_SERVICE_SID_INFO, 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, 4e2933c620 2015-04-21 kinaba: SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_STATUS { 4e2933c620 2015-04-21 kinaba: DWORD dwServiceType; 4e2933c620 2015-04-21 kinaba: DWORD dwCurrentState; 4e2933c620 2015-04-21 kinaba: DWORD dwControlsAccepted; 4e2933c620 2015-04-21 kinaba: DWORD dwWin32ExitCode; 4e2933c620 2015-04-21 kinaba: DWORD dwServiceSpecificExitCode; 4e2933c620 2015-04-21 kinaba: DWORD dwCheckPoint; 4e2933c620 2015-04-21 kinaba: DWORD dwWaitHint; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_STATUS* LPSERVICE_STATUS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ENUM_SERVICE_STATUSA { 4e2933c620 2015-04-21 kinaba: LPSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPSTR lpDisplayName; 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS ServiceStatus; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ENUM_SERVICE_STATUSW { 4e2933c620 2015-04-21 kinaba: LPWSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPWSTR lpDisplayName; 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS ServiceStatus; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct QUERY_SERVICE_CONFIGA { 4e2933c620 2015-04-21 kinaba: DWORD dwServiceType; 4e2933c620 2015-04-21 kinaba: DWORD dwStartType; 4e2933c620 2015-04-21 kinaba: DWORD dwErrorControl; 4e2933c620 2015-04-21 kinaba: LPSTR lpBinaryPathName; 4e2933c620 2015-04-21 kinaba: LPSTR lpLoadOrderGroup; 4e2933c620 2015-04-21 kinaba: DWORD dwTagId; 4e2933c620 2015-04-21 kinaba: LPSTR lpDependencies; 4e2933c620 2015-04-21 kinaba: LPSTR lpServiceStartName; 4e2933c620 2015-04-21 kinaba: LPSTR lpDisplayName; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct QUERY_SERVICE_CONFIGW { 4e2933c620 2015-04-21 kinaba: DWORD dwServiceType; 4e2933c620 2015-04-21 kinaba: DWORD dwStartType; 4e2933c620 2015-04-21 kinaba: DWORD dwErrorControl; 4e2933c620 2015-04-21 kinaba: LPWSTR lpBinaryPathName; 4e2933c620 2015-04-21 kinaba: LPWSTR lpLoadOrderGroup; 4e2933c620 2015-04-21 kinaba: DWORD dwTagId; 4e2933c620 2015-04-21 kinaba: LPWSTR lpDependencies; 4e2933c620 2015-04-21 kinaba: LPWSTR lpServiceStartName; 4e2933c620 2015-04-21 kinaba: LPWSTR lpDisplayName; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct QUERY_SERVICE_LOCK_STATUSA { 4e2933c620 2015-04-21 kinaba: DWORD fIsLocked; 4e2933c620 2015-04-21 kinaba: LPSTR lpLockOwner; 4e2933c620 2015-04-21 kinaba: DWORD dwLockDuration; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct QUERY_SERVICE_LOCK_STATUSW { 4e2933c620 2015-04-21 kinaba: DWORD fIsLocked; 4e2933c620 2015-04-21 kinaba: LPWSTR lpLockOwner; 4e2933c620 2015-04-21 kinaba: DWORD dwLockDuration; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; 4e2933c620 2015-04-21 kinaba: alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_TABLE_ENTRYA { 4e2933c620 2015-04-21 kinaba: LPSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPSERVICE_MAIN_FUNCTIONA lpServiceProc; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_TABLE_ENTRYW { 4e2933c620 2015-04-21 kinaba: LPWSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPSERVICE_MAIN_FUNCTIONW lpServiceProc; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; 4e2933c620 2015-04-21 kinaba: 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("SC_HANDLE"); 9b639cf2d6 2015-05-05 kinaba: alias SC_HANDLE* LPSC_HANDLE; 4e2933c620 2015-04-21 kinaba: alias void* SC_LOCK; 9b639cf2d6 2015-05-05 kinaba: mixin DECLARE_HANDLE!("SERVICE_STATUS_HANDLE"); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: alias void function(DWORD) LPHANDLER_FUNCTION; 4e2933c620 2015-04-21 kinaba: alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x500) { 4e2933c620 2015-04-21 kinaba: struct SERVICE_STATUS_PROCESS { 4e2933c620 2015-04-21 kinaba: DWORD dwServiceType; 4e2933c620 2015-04-21 kinaba: DWORD dwCurrentState; 4e2933c620 2015-04-21 kinaba: DWORD dwControlsAccepted; 4e2933c620 2015-04-21 kinaba: DWORD dwWin32ExitCode; 4e2933c620 2015-04-21 kinaba: DWORD dwServiceSpecificExitCode; 4e2933c620 2015-04-21 kinaba: DWORD dwCheckPoint; 4e2933c620 2015-04-21 kinaba: DWORD dwWaitHint; 4e2933c620 2015-04-21 kinaba: DWORD dwProcessId; 4e2933c620 2015-04-21 kinaba: DWORD dwServiceFlags; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum SC_STATUS_TYPE { 4e2933c620 2015-04-21 kinaba: SC_STATUS_PROCESS_INFO = 0 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum SC_ENUM_TYPE { 4e2933c620 2015-04-21 kinaba: SC_ENUM_PROCESS_INFO = 0 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ENUM_SERVICE_STATUS_PROCESSA { 4e2933c620 2015-04-21 kinaba: LPSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPSTR lpDisplayName; 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS_PROCESS ServiceStatusProcess; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct ENUM_SERVICE_STATUS_PROCESSW { 4e2933c620 2015-04-21 kinaba: LPWSTR lpServiceName; 4e2933c620 2015-04-21 kinaba: LPWSTR lpDisplayName; 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS_PROCESS ServiceStatusProcess; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_DESCRIPTIONA { 4e2933c620 2015-04-21 kinaba: LPSTR lpDescription; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_DESCRIPTIONW { 4e2933c620 2015-04-21 kinaba: LPWSTR lpDescription; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum SC_ACTION_TYPE { 4e2933c620 2015-04-21 kinaba: SC_ACTION_NONE, 4e2933c620 2015-04-21 kinaba: SC_ACTION_RESTART, 4e2933c620 2015-04-21 kinaba: SC_ACTION_REBOOT, 4e2933c620 2015-04-21 kinaba: SC_ACTION_RUN_COMMAND 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SC_ACTION { 4e2933c620 2015-04-21 kinaba: SC_ACTION_TYPE Type; 4e2933c620 2015-04-21 kinaba: DWORD Delay; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SC_ACTION* LPSC_ACTION; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_FAILURE_ACTIONSA { 4e2933c620 2015-04-21 kinaba: DWORD dwResetPeriod; 4e2933c620 2015-04-21 kinaba: LPSTR lpRebootMsg; 4e2933c620 2015-04-21 kinaba: LPSTR lpCommand; 4e2933c620 2015-04-21 kinaba: DWORD cActions; 4e2933c620 2015-04-21 kinaba: SC_ACTION* lpsaActions; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SERVICE_FAILURE_ACTIONSW { 4e2933c620 2015-04-21 kinaba: DWORD dwResetPeriod; 4e2933c620 2015-04-21 kinaba: LPWSTR lpRebootMsg; 4e2933c620 2015-04-21 kinaba: LPWSTR lpCommand; 4e2933c620 2015-04-21 kinaba: DWORD cActions; 4e2933c620 2015-04-21 kinaba: SC_ACTION* lpsaActions; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, 4e2933c620 2015-04-21 kinaba: LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); 4e2933c620 2015-04-21 kinaba: BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, 4e2933c620 2015-04-21 kinaba: LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); 4e2933c620 2015-04-21 kinaba: BOOL CloseServiceHandle(SC_HANDLE); 4e2933c620 2015-04-21 kinaba: BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); 4e2933c620 2015-04-21 kinaba: SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, 4e2933c620 2015-04-21 kinaba: DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); 4e2933c620 2015-04-21 kinaba: SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, 4e2933c620 2015-04-21 kinaba: DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); 4e2933c620 2015-04-21 kinaba: BOOL DeleteService(SC_HANDLE); 4e2933c620 2015-04-21 kinaba: BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, 4e2933c620 2015-04-21 kinaba: DWORD, PDWORD, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, 4e2933c620 2015-04-21 kinaba: DWORD, PDWORD, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, 4e2933c620 2015-04-21 kinaba: DWORD, PDWORD, PDWORD, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, 4e2933c620 2015-04-21 kinaba: DWORD, PDWORD, PDWORD, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); 4e2933c620 2015-04-21 kinaba: SC_LOCK LockServiceDatabase(SC_HANDLE); 4e2933c620 2015-04-21 kinaba: BOOL NotifyBootConfigStatus(BOOL); 4e2933c620 2015-04-21 kinaba: SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); 4e2933c620 2015-04-21 kinaba: SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); 4e2933c620 2015-04-21 kinaba: SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, 4e2933c620 2015-04-21 kinaba: PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, 4e2933c620 2015-04-21 kinaba: PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, 4e2933c620 2015-04-21 kinaba: DWORD, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, 4e2933c620 2015-04-21 kinaba: DWORD, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, 4e2933c620 2015-04-21 kinaba: PSECURITY_DESCRIPTOR, DWORD, LPDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, 4e2933c620 2015-04-21 kinaba: LPHANDLER_FUNCTION); 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, 4e2933c620 2015-04-21 kinaba: LPHANDLER_FUNCTION); 4e2933c620 2015-04-21 kinaba: BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, 4e2933c620 2015-04-21 kinaba: PSECURITY_DESCRIPTOR); 4e2933c620 2015-04-21 kinaba: BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); 4e2933c620 2015-04-21 kinaba: BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); 4e2933c620 2015-04-21 kinaba: BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); 4e2933c620 2015-04-21 kinaba: BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); 4e2933c620 2015-04-21 kinaba: BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); 4e2933c620 2015-04-21 kinaba: BOOL UnlockServiceDatabase(SC_LOCK); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x500) { 4e2933c620 2015-04-21 kinaba: BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, 4e2933c620 2015-04-21 kinaba: DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); 4e2933c620 2015-04-21 kinaba: BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, 4e2933c620 2015-04-21 kinaba: DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); 4e2933c620 2015-04-21 kinaba: BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, 4e2933c620 2015-04-21 kinaba: LPDWORD); 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, 4e2933c620 2015-04-21 kinaba: LPHANDLER_FUNCTION_EX, LPVOID); 4e2933c620 2015-04-21 kinaba: SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, 4e2933c620 2015-04-21 kinaba: LPHANDLER_FUNCTION_EX, LPVOID); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x501) { 4e2933c620 2015-04-21 kinaba: BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); 4e2933c620 2015-04-21 kinaba: BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; 4e2933c620 2015-04-21 kinaba: alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; 4e2933c620 2015-04-21 kinaba: alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; 4e2933c620 2015-04-21 kinaba: alias ChangeServiceConfigW ChangeServiceConfig; 4e2933c620 2015-04-21 kinaba: alias CreateServiceW CreateService; 4e2933c620 2015-04-21 kinaba: alias EnumDependentServicesW EnumDependentServices; 4e2933c620 2015-04-21 kinaba: alias EnumServicesStatusW EnumServicesStatus; 4e2933c620 2015-04-21 kinaba: alias GetServiceDisplayNameW GetServiceDisplayName; 4e2933c620 2015-04-21 kinaba: alias GetServiceKeyNameW GetServiceKeyName; 4e2933c620 2015-04-21 kinaba: alias OpenSCManagerW OpenSCManager; 4e2933c620 2015-04-21 kinaba: alias OpenServiceW OpenService; 4e2933c620 2015-04-21 kinaba: alias QueryServiceConfigW QueryServiceConfig; 4e2933c620 2015-04-21 kinaba: alias QueryServiceLockStatusW QueryServiceLockStatus; 4e2933c620 2015-04-21 kinaba: alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; 4e2933c620 2015-04-21 kinaba: alias StartServiceW StartService; 4e2933c620 2015-04-21 kinaba: alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x500) { 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; 4e2933c620 2015-04-21 kinaba: alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; 4e2933c620 2015-04-21 kinaba: alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; 4e2933c620 2015-04-21 kinaba: alias EnumServicesStatusExW EnumServicesStatusEx; 4e2933c620 2015-04-21 kinaba: alias QueryServiceConfig2W QueryServiceConfig2; 4e2933c620 2015-04-21 kinaba: alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x501) { 4e2933c620 2015-04-21 kinaba: alias ChangeServiceConfig2W ChangeServiceConfig2; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; 4e2933c620 2015-04-21 kinaba: alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; 4e2933c620 2015-04-21 kinaba: alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; 4e2933c620 2015-04-21 kinaba: alias ChangeServiceConfigA ChangeServiceConfig; 4e2933c620 2015-04-21 kinaba: alias CreateServiceA CreateService; 4e2933c620 2015-04-21 kinaba: alias EnumDependentServicesA EnumDependentServices; 4e2933c620 2015-04-21 kinaba: alias EnumServicesStatusA EnumServicesStatus; 4e2933c620 2015-04-21 kinaba: alias GetServiceDisplayNameA GetServiceDisplayName; 4e2933c620 2015-04-21 kinaba: alias GetServiceKeyNameA GetServiceKeyName; 4e2933c620 2015-04-21 kinaba: alias OpenSCManagerA OpenSCManager; 4e2933c620 2015-04-21 kinaba: alias OpenServiceA OpenService; 4e2933c620 2015-04-21 kinaba: alias QueryServiceConfigA QueryServiceConfig; 4e2933c620 2015-04-21 kinaba: alias QueryServiceLockStatusA QueryServiceLockStatus; 4e2933c620 2015-04-21 kinaba: alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; 4e2933c620 2015-04-21 kinaba: alias StartServiceA StartService; 4e2933c620 2015-04-21 kinaba: alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x500) { 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; 4e2933c620 2015-04-21 kinaba: alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; 4e2933c620 2015-04-21 kinaba: alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; 4e2933c620 2015-04-21 kinaba: alias EnumServicesStatusExA EnumServicesStatusEx; 4e2933c620 2015-04-21 kinaba: alias QueryServiceConfig2A QueryServiceConfig2; 4e2933c620 2015-04-21 kinaba: alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x501) { 4e2933c620 2015-04-21 kinaba: alias ChangeServiceConfig2A ChangeServiceConfig2; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS; 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG; 4e2933c620 2015-04-21 kinaba: alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; 4e2933c620 2015-04-21 kinaba: alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: static if (_WIN32_WINNT >= 0x500) { 4e2933c620 2015-04-21 kinaba: alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; 4e2933c620 2015-04-21 kinaba: alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; 4e2933c620 2015-04-21 kinaba: alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; 4e2933c620 2015-04-21 kinaba: }