diff --git a/reactos/include/psdk/winsvc.h b/reactos/include/psdk/winsvc.h index 8f629cd7833..8da56848faf 100644 --- a/reactos/include/psdk/winsvc.h +++ b/reactos/include/psdk/winsvc.h @@ -73,6 +73,21 @@ extern "C" { #define SERVICE_CONFIG_PREFERRED_NODE 9 #define SERVICE_CONFIG_RUNLEVEL_INFO 10 +#define SERVICE_NOTIFY_STATUS_CHANGE_1 1 +#define SERVICE_NOTIFY_STATUS_CHANGE_2 2 +#define SERVICE_NOTIFY_STATUS_CHANGE SERVICE_NOTIFY_STATUS_CHANGE_2 + +#define SERVICE_NOTIFY_STOPPED 1 +#define SERVICE_NOTIFY_START_PENDING 2 +#define SERVICE_NOTIFY_STOP_PENDING 4 +#define SERVICE_NOTIFY_RUNNING 8 +#define SERVICE_NOTIFY_CONTINUE_PENDING 16 +#define SERVICE_NOTIFY_PAUSE_PENDING 32 +#define SERVICE_NOTIFY_PAUSED 64 +#define SERVICE_NOTIFY_CREATED 128 +#define SERVICE_NOTIFY_DELETED 256 +#define SERVICE_NOTIFY_DELETE_PENDING 512 + #ifndef _SERVICE_PRESHUTDOWN_INFO_DEFINED_ #define _SERVICE_PRESHUTDOWN_INFO_DEFINED_ typedef struct _SERVICE_PRESHUTDOWN_INFO { @@ -213,6 +228,35 @@ typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOW { LPWSTR pmszRequiredPrivileges; } SERVICE_REQUIRED_PRIVILEGES_INFOW, *LPSERVICE_REQUIRED_PRIVILEGES_INFOW; +typedef VOID (CALLBACK *PFN_SC_NOTIFY_CALLBACK)(_In_ PVOID); +typedef struct _SERVICE_NOTIFY_1 { + DWORD dwVersion; + PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback; + PVOID pContext; + DWORD dwNotificationStatus; + SERVICE_STATUS_PROCESS ServiceStatus; +} SERVICE_NOTIFY_1, *PSERVICE_NOTIFY_1; +typedef struct _SERVICE_NOTIFY_2A { + DWORD dwVersion; + PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback; + PVOID pContext; + DWORD dwNotificationStatus; + SERVICE_STATUS_PROCESS ServiceStatus; + DWORD dwNotificationTriggered; + LPSTR pszServiceNames; +} SERVICE_NOTIFY_2A, *PSERVICE_NOTIFY_2A; +typedef struct _SERVICE_NOTIFY_2W { + DWORD dwVersion; + PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback; + PVOID pContext; + DWORD dwNotificationStatus; + SERVICE_STATUS_PROCESS ServiceStatus; + DWORD dwNotificationTriggered; + LPWSTR pszServiceNames; +} SERVICE_NOTIFY_2W, *PSERVICE_NOTIFY_2W; +typedef SERVICE_NOTIFY_2A SERVICE_NOTIFYA, *PSERVICE_NOTIFYA; +typedef SERVICE_NOTIFY_2W SERVICE_NOTIFYW, *PSERVICE_NOTIFYW; + BOOL WINAPI ChangeServiceConfigA(_In_ SC_HANDLE, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _Out_opt_ LPDWORD, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_opt_ LPCSTR); BOOL WINAPI ChangeServiceConfigW(_In_ SC_HANDLE, _In_ DWORD, _In_ DWORD, _In_ DWORD, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _Out_opt_ LPDWORD, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR); BOOL WINAPI ChangeServiceConfig2A(_In_ SC_HANDLE, _In_ DWORD, _In_opt_ LPVOID); @@ -344,6 +388,11 @@ _Must_inspect_result_ SC_HANDLE WINAPI OpenSCManagerW(_In_opt_ LPCWSTR, _In_opt_ _Must_inspect_result_ SC_HANDLE WINAPI OpenServiceA(_In_ SC_HANDLE, _In_ LPCSTR, _In_ DWORD); _Must_inspect_result_ SC_HANDLE WINAPI OpenServiceW(_In_ SC_HANDLE, _In_ LPCWSTR, _In_ DWORD); +#if (NTDDI_VERSION >= NTDDI_VISTA) +DWORD WINAPI NotifyServiceStatusChangeA(_In_ SC_HANDLE, _In_ DWORD, _In_ PSERVICE_NOTIFYA); +DWORD WINAPI NotifyServiceStatusChangeW(_In_ SC_HANDLE, _In_ DWORD, _In_ PSERVICE_NOTIFYW); +#endif + _Must_inspect_result_ BOOL WINAPI @@ -467,6 +516,10 @@ typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS; typedef SERVICE_REQUIRED_PRIVILEGES_INFOW SERVICE_REQUIRED_PRIVILEGES_INFO; typedef LPSERVICE_REQUIRED_PRIVILEGES_INFOW LPSERVICE_REQUIRED_PRIVILEGES_INFO; +typedef SERVICE_NOTIFY_2W SERVICE_NOTIFY_2; +typedef PSERVICE_NOTIFY_2W PSERVICE_NOTIFY_2; +typedef SERVICE_NOTIFYW SERVICE_NOTIFY; +typedef PSERVICE_NOTIFYW PSERVICE_NOTIFY; #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW @@ -478,6 +531,9 @@ typedef LPSERVICE_REQUIRED_PRIVILEGES_INFOW LPSERVICE_REQUIRED_PRIVILEGES_INFO; #define EnumServicesStatusEx EnumServicesStatusExW #define GetServiceDisplayName GetServiceDisplayNameW #define GetServiceKeyName GetServiceKeyNameW +#if (NTDDI_VERSION >= NTDDI_VISTA) +#define NotifyServiceStatusChange NotifyServiceStatusChangeW +#endif #define OpenSCManager OpenSCManagerW #define OpenService OpenServiceW #define QueryServiceConfig QueryServiceConfigW @@ -501,6 +557,10 @@ typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS; typedef SERVICE_REQUIRED_PRIVILEGES_INFOA SERVICE_REQUIRED_PRIVILEGES_INFO; typedef LPSERVICE_REQUIRED_PRIVILEGES_INFOA LPSERVICE_REQUIRED_PRIVILEGES_INFO; +typedef SERVICE_NOTIFY_2A SERVICE_NOTIFY_2; +typedef PSERVICE_NOTIFY_2A PSERVICE_NOTIFY_2; +typedef SERVICE_NOTIFYA SERVICE_NOTIFY; +typedef PSERVICE_NOTIFYA PSERVICE_NOTIFY; #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA @@ -514,6 +574,9 @@ typedef LPSERVICE_REQUIRED_PRIVILEGES_INFOA LPSERVICE_REQUIRED_PRIVILEGES_INFO; #define GetServiceKeyName GetServiceKeyNameA #define OpenSCManager OpenSCManagerA #define OpenService OpenServiceA +#if (NTDDI_VERSION >= NTDDI_VISTA) +#define NotifyServiceStatusChange NotifyServiceStatusChangeA +#endif #define QueryServiceConfig QueryServiceConfigA #define QueryServiceConfig2 QueryServiceConfig2A #define QueryServiceLockStatus QueryServiceLockStatusA