2 * Service Control Manager (SCM) interface definition
8 #define DWORD unsigned long
9 #define BOOL unsigned long
10 #define SC_HANDLE unsigned int
11 #define SC_LOCK unsigned int
13 #define LPCWSTR wchar_t*
14 #define LPDWORD unsigned long*
17 uuid(367abb81-9844-35f1-ad32-98f038001003),
19 pointer_default(unique),
25 typedef struct _SERVICE_STATUS
29 DWORD dwControlsAccepted;
30 DWORD dwWin32ExitCode;
31 DWORD dwServiceSpecificExitCode;
34 } SERVICE_STATUS, *LPSERVICE_STATUS;
38 DWORD ScmrCloseServiceHandle([in] handle_t BindingHandle,
39 [in] SC_HANDLE hSCObject);
42 // BOOL ScmrControlService([in] handle_t BindingHandle,
43 // [in] SC_HANDLE hService,
44 // [in] DWORD dwControl,
45 // [out] LPSERVICE_STATUS lpServiceStatus);
48 DWORD ScmrDeleteService([in] handle_t BindingHandle,
49 [in] SC_HANDLE hService);
52 DWORD ScmrLockServiceDatabase([in] handle_t BindingHandle,
53 [in] SC_HANDLE hSCManager,
54 [out] SC_LOCK *hLock);
57 // DWORD ScmrQueryServiceObjectSecurity();
60 // DWORD ScmrSetServiceObjectSecurity();
63 // DWORD ScmrQueryServiceStatus();
66 // DWORD ScmrSetServiceStatus();
69 DWORD ScmrUnlockServiceDatabase([in] handle_t BindingHandle,
73 DWORD ScmrNotifyBootConfigStatus([in] handle_t BindingHandle,
74 [in] BOOL BootAcceptable);
78 DWORD ScmrCreateServiceW([in] handle_t BindingHandle,
79 [in] SC_HANDLE hSCManager,
80 [in, string, ref] LPCWSTR lpServiceName,
81 [in, string, ref] LPCWSTR lpDisplayName,
82 [in] DWORD dwDesiredAccess,
83 [in] DWORD dwServiceType,
84 [in] DWORD dwStartType,
85 [in] DWORD dwErrorControl,
86 [in, string, ref] LPCWSTR lpBinaryPathName,
87 [in, string, unique] LPCWSTR lpLoadOrderGroup,
88 [out, unique] LPDWORD lpdwTagId,
89 [in, string, unique] LPCWSTR lpDependencies,
90 [in, string, unique] LPCWSTR lpServiceStartName,
91 [in, string, unique] LPCWSTR lpPassword);
95 DWORD ScmrOpenSCManagerW([in] handle_t BindingHandle,
96 [in, string, unique] LPCWSTR lpMachineName,
97 [in, string, unique] LPCWSTR lpDatabaseName,
98 [in] DWORD dwDesiredAccess,
99 [out] SC_HANDLE *hScm);
102 SC_HANDLE ScmrOpenServiceW([in] handle_t BindingHandle,
103 [in] SC_HANDLE hSCManager,
104 [in, string] LPCWSTR lpServiceName,
105 [in] DWORD dwDesiredAccess,
106 [out] SC_HANDLE *hScm);
110 DWORD ScmrOpenSCManagerA([in] handle_t BindingHandle,
111 [in, string, unique] LPCSTR lpMachineName,
112 [in, string, unique] LPCSTR lpDatabaseName,
113 [in] DWORD dwDesiredAccess,
114 [out] SC_HANDLE *hScm);
117 SC_HANDLE ScmrOpenServiceA([in] handle_t BindingHandle,
118 [in] SC_HANDLE hSCManager,
119 [in, string] LPCSTR lpServiceName,
120 [in] DWORD dwDesiredAccess,
121 [out] SC_HANDLE *hScm);