--- mstools/h/winsvc.h 2018/08/09 18:20:34 1.1 +++ mstools/h/winsvc.h 2018/08/09 18:23:09 1.1.1.3 @@ -1,6 +1,6 @@ -/*++ BUILD Version: 0009 // Increment this if a change has global effects +/*++ BUILD Version: 0010 // Increment this if a change has global effects -Copyright (c) 1992 Microsoft Corporation +Copyright (c) 1993 Microsoft Corporation Module Name: @@ -20,13 +20,20 @@ Environment: Revision History: - 19-Jan-1992 danl - Created + 05-Nov-1992 danl + Added Display Names + + 19-Jan-1992 danl + Created --*/ #ifndef _WINSVC_ #define _WINSVC_ +#ifdef __cplusplus +extern "C" { +#endif + // // Constants // @@ -41,18 +48,30 @@ Revision History: #define SERVICES_ACTIVE_DATABASEA "ServicesActive" #define SERVICES_FAILED_DATABASEA "ServicesFailed" +// +// Character to designate that a name is a group +// + +#define SC_GROUP_IDENTIFIERW L'+' +#define SC_GROUP_IDENTIFIERA '+' + #ifdef UNICODE #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW + +#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW + #else // ndef UNICODE #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA +#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA #endif // ndef UNICODE + // // Value to indicate no change to an optional parameter // @@ -73,6 +92,7 @@ Revision History: #define SERVICE_CONTROL_PAUSE 0x00000002 #define SERVICE_CONTROL_CONTINUE 0x00000003 #define SERVICE_CONTROL_INTERROGATE 0x00000004 +#define SERVICE_CONTROL_SHUTDOWN 0x00000005 // // Service State -- for CurrentState @@ -90,6 +110,7 @@ Revision History: // #define SERVICE_ACCEPT_STOP 0x00000001 #define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002 +#define SERVICE_ACCEPT_SHUTDOWN 0x00000004 // // Service Control Manager object specific access types @@ -122,6 +143,7 @@ Revision History: #define SERVICE_STOP 0x0020 #define SERVICE_PAUSE_CONTINUE 0x0040 #define SERVICE_INTERROGATE 0x0080 +#define SERVICE_USER_DEFINED_CONTROL 0x0100 #define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ SERVICE_QUERY_CONFIG | \ @@ -131,7 +153,8 @@ Revision History: SERVICE_START | \ SERVICE_STOP | \ SERVICE_PAUSE_CONTINUE | \ - SERVICE_INTERROGATE) + SERVICE_INTERROGATE | \ + SERVICE_USER_DEFINED_CONTROL) // @@ -165,18 +188,20 @@ typedef struct _SERVICE_STATUS { typedef struct _ENUM_SERVICE_STATUSA { LPSTR lpServiceName; + LPSTR lpDisplayName; SERVICE_STATUS ServiceStatus; } ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA; typedef struct _ENUM_SERVICE_STATUSW { LPWSTR lpServiceName; + LPWSTR lpDisplayName; SERVICE_STATUS ServiceStatus; } ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW; #ifdef UNICODE -#define ENUM_SERVICE_STATUS ENUM_SERVICE_STATUSW -#define LPENUM_SERVICE_STATUS LPENUM_SERVICE_STATUSW +typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; +typedef LPENUM_SERVICE_STATUSW LPENUM_SERVICE_STATUS; #else -#define ENUM_SERVICE_STATUS ENUM_SERVICE_STATUSA -#define LPENUM_SERVICE_STATUS LPENUM_SERVICE_STATUSA +typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; +typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS; #endif // UNICODE @@ -197,11 +222,11 @@ typedef struct _QUERY_SERVICE_LOCK_STATU DWORD dwLockDuration; } QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW; #ifdef UNICODE -#define QUERY_SERVICE_LOCK_STATUS QUERY_SERVICE_LOCK_STATUSW -#define LPQUERY_SERVICE_LOCK_STATUS LPQUERY_SERVICE_LOCK_STATUSW +typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; +typedef LPQUERY_SERVICE_LOCK_STATUSW LPQUERY_SERVICE_LOCK_STATUS; #else -#define QUERY_SERVICE_LOCK_STATUS QUERY_SERVICE_LOCK_STATUSA -#define LPQUERY_SERVICE_LOCK_STATUS LPQUERY_SERVICE_LOCK_STATUSA +typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; +typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS; #endif // UNICODE @@ -216,8 +241,10 @@ typedef struct _QUERY_SERVICE_CONFIGA { DWORD dwErrorControl; LPSTR lpBinaryPathName; LPSTR lpLoadOrderGroup; + DWORD dwTagId; LPSTR lpDependencies; LPSTR lpServiceStartName; + LPSTR lpDisplayName; } QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA; typedef struct _QUERY_SERVICE_CONFIGW { DWORD dwServiceType; @@ -225,15 +252,17 @@ typedef struct _QUERY_SERVICE_CONFIGW { DWORD dwErrorControl; LPWSTR lpBinaryPathName; LPWSTR lpLoadOrderGroup; + DWORD dwTagId; LPWSTR lpDependencies; LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; } QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW; #ifdef UNICODE -#define QUERY_SERVICE_CONFIG QUERY_SERVICE_CONFIGW -#define LPQUERY_SERVICE_CONFIG LPQUERY_SERVICE_CONFIGW +typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; +typedef LPQUERY_SERVICE_CONFIGW LPQUERY_SERVICE_CONFIG; #else -#define QUERY_SERVICE_CONFIG QUERY_SERVICE_CONFIGA -#define LPQUERY_SERVICE_CONFIG LPQUERY_SERVICE_CONFIGA +typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; +typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG; #endif // UNICODE @@ -272,11 +301,11 @@ typedef struct _SERVICE_TABLE_ENTRYW { LPSERVICE_MAIN_FUNCTIONW lpServiceProc; }SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW; #ifdef UNICODE -#define SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYW -#define LPSERVICE_TABLE_ENTRY LPSERVICE_TABLE_ENTRYW +typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; +typedef LPSERVICE_TABLE_ENTRYW LPSERVICE_TABLE_ENTRY; #else -#define SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYA -#define LPSERVICE_TABLE_ENTRY LPSERVICE_TABLE_ENTRYA +typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; +typedef LPSERVICE_TABLE_ENTRYA LPSERVICE_TABLE_ENTRY; #endif // UNICODE // @@ -302,9 +331,11 @@ ChangeServiceConfigA( DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, + LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, - LPCSTR lpPassword + LPCSTR lpPassword, + LPCSTR lpDisplayName ); BOOL WINAPI @@ -315,14 +346,16 @@ ChangeServiceConfigW( DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, + LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, - LPCWSTR lpPassword + LPCWSTR lpPassword, + LPCWSTR lpDisplayName ); #ifdef UNICODE -#define ChangeServiceConfig ChangeServiceConfigW +#define ChangeServiceConfig ChangeServiceConfigW #else -#define ChangeServiceConfig ChangeServiceConfigA +#define ChangeServiceConfig ChangeServiceConfigA #endif // !UNICODE BOOL @@ -344,12 +377,14 @@ WINAPI CreateServiceA( SC_HANDLE hSCManager, LPCSTR lpServiceName, + LPCSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCSTR lpBinaryPathName, LPCSTR lpLoadOrderGroup, + LPDWORD lpdwTagId, LPCSTR lpDependencies, LPCSTR lpServiceStartName, LPCSTR lpPassword @@ -359,20 +394,22 @@ WINAPI CreateServiceW( SC_HANDLE hSCManager, LPCWSTR lpServiceName, + LPCWSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, + LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword ); #ifdef UNICODE -#define CreateService CreateServiceW +#define CreateService CreateServiceW #else -#define CreateService CreateServiceA +#define CreateService CreateServiceA #endif // !UNICODE BOOL @@ -402,9 +439,9 @@ EnumDependentServicesW( LPDWORD lpServicesReturned ); #ifdef UNICODE -#define EnumDependentServices EnumDependentServicesW +#define EnumDependentServices EnumDependentServicesW #else -#define EnumDependentServices EnumDependentServicesA +#define EnumDependentServices EnumDependentServicesA #endif // !UNICODE BOOL @@ -432,9 +469,53 @@ EnumServicesStatusW( LPDWORD lpResumeHandle ); #ifdef UNICODE -#define EnumServicesStatus EnumServicesStatusW +#define EnumServicesStatus EnumServicesStatusW +#else +#define EnumServicesStatus EnumServicesStatusA +#endif // !UNICODE + +BOOL +WINAPI +GetServiceKeyNameA( + SC_HANDLE hSCManager, + LPCSTR lpDisplayName, + LPSTR lpServiceName, + LPDWORD lpcchBuffer + ); +BOOL +WINAPI +GetServiceKeyNameW( + SC_HANDLE hSCManager, + LPCWSTR lpDisplayName, + LPWSTR lpServiceName, + LPDWORD lpcchBuffer + ); +#ifdef UNICODE +#define GetServiceKeyName GetServiceKeyNameW +#else +#define GetServiceKeyName GetServiceKeyNameA +#endif // !UNICODE + +BOOL +WINAPI +GetServiceDisplayNameA( + SC_HANDLE hSCManager, + LPCSTR lpServiceName, + LPSTR lpDisplayName, + LPDWORD lpcchBuffer + ); +BOOL +WINAPI +GetServiceDisplayNameW( + SC_HANDLE hSCManager, + LPCWSTR lpServiceName, + LPWSTR lpDisplayName, + LPDWORD lpcchBuffer + ); +#ifdef UNICODE +#define GetServiceDisplayName GetServiceDisplayNameW #else -#define EnumServicesStatus EnumServicesStatusA +#define GetServiceDisplayName GetServiceDisplayNameA #endif // !UNICODE SC_LOCK @@ -464,9 +545,9 @@ OpenSCManagerW( DWORD dwDesiredAccess ); #ifdef UNICODE -#define OpenSCManager OpenSCManagerW +#define OpenSCManager OpenSCManagerW #else -#define OpenSCManager OpenSCManagerA +#define OpenSCManager OpenSCManagerA #endif // !UNICODE SC_HANDLE @@ -484,9 +565,9 @@ OpenServiceW( DWORD dwDesiredAccess ); #ifdef UNICODE -#define OpenService OpenServiceW +#define OpenService OpenServiceW #else -#define OpenService OpenServiceA +#define OpenService OpenServiceA #endif // !UNICODE BOOL @@ -506,9 +587,9 @@ QueryServiceConfigW( LPDWORD pcbBytesNeeded ); #ifdef UNICODE -#define QueryServiceConfig QueryServiceConfigW +#define QueryServiceConfig QueryServiceConfigW #else -#define QueryServiceConfig QueryServiceConfigA +#define QueryServiceConfig QueryServiceConfigA #endif // !UNICODE BOOL @@ -528,9 +609,9 @@ QueryServiceLockStatusW( LPDWORD pcbBytesNeeded ); #ifdef UNICODE -#define QueryServiceLockStatus QueryServiceLockStatusW +#define QueryServiceLockStatus QueryServiceLockStatusW #else -#define QueryServiceLockStatus QueryServiceLockStatusA +#define QueryServiceLockStatus QueryServiceLockStatusA #endif // !UNICODE BOOL @@ -563,9 +644,9 @@ RegisterServiceCtrlHandlerW( LPHANDLER_FUNCTION lpHandlerProc ); #ifdef UNICODE -#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW +#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW #else -#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA +#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA #endif // !UNICODE BOOL @@ -594,9 +675,9 @@ StartServiceCtrlDispatcherW( LPSERVICE_TABLE_ENTRYW lpServiceStartTable ); #ifdef UNICODE -#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW +#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW #else -#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA +#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA #endif // !UNICODE @@ -615,9 +696,9 @@ StartServiceW( LPCWSTR *lpServiceArgVectors ); #ifdef UNICODE -#define StartService StartServiceW +#define StartService StartServiceW #else -#define StartService StartServiceA +#define StartService StartServiceA #endif // !UNICODE BOOL @@ -627,6 +708,8 @@ UnlockServiceDatabase( ); - +#ifdef __cplusplus +} +#endif #endif // _WINSVC_