-Add QueryServiceConfig2A stub.
[reactos.git] / reactos / include / idl / svcctl.idl
1 /*
2 * Service Control Manager (SCM) interface definition
3 */
4
5 //#include <windef.h>
6 //#include <winsvc.h>
7
8 #define BYTE unsigned char
9 #define DWORD unsigned long
10 #define BOOL unsigned long
11 #define SC_HANDLE unsigned int
12 #define SC_LOCK unsigned int
13 #define SERVICE_STATUS_HANDLE unsigned long
14 #define LPSTR char*
15 #define LPCSTR char*
16 #define LPWSTR wchar_t*
17 #define LPCWSTR wchar_t*
18 #define LPDWORD unsigned long*
19
20 [
21 uuid(367abb81-9844-35f1-ad32-98f038001003),
22 version(2.0),
23 pointer_default(unique),
24 explicit_handle
25 ]
26 interface svcctl
27 {
28 cpp_quote("#if 0")
29 typedef struct _SERVICE_STATUS
30 {
31 DWORD dwServiceType;
32 DWORD dwCurrentState;
33 DWORD dwControlsAccepted;
34 DWORD dwWin32ExitCode;
35 DWORD dwServiceSpecificExitCode;
36 DWORD dwCheckPoint;
37 DWORD dwWaitHint;
38 } SERVICE_STATUS, *LPSERVICE_STATUS;
39 cpp_quote("#endif")
40
41 /* Function 0 */
42 DWORD ScmrCloseServiceHandle([in] handle_t BindingHandle,
43 [in] SC_HANDLE hSCObject);
44
45 /* Function 1 */
46 BOOL ScmrControlService([in] handle_t BindingHandle,
47 [in] SC_HANDLE hService,
48 [in] DWORD dwControl,
49 [out] LPSERVICE_STATUS lpServiceStatus);
50
51 /* Function 2 */
52 DWORD ScmrDeleteService([in] handle_t BindingHandle,
53 [in] SC_HANDLE hService);
54
55 /* Function 3 */
56 DWORD ScmrLockServiceDatabase([in] handle_t BindingHandle,
57 [in] SC_HANDLE hSCManager,
58 [out] SC_LOCK *hLock);
59
60 /* Function 4 */
61 DWORD ScmrQueryServiceObjectSecurity([in] handle_t BindingHandle,
62 [in] SC_HANDLE hService,
63 [in] DWORD dwSecurityInformation,
64 [out, size_is(dwSecuityDescriptorSize)] unsigned char *lpSecurityDescriptor,
65 [in] DWORD dwSecuityDescriptorSize,
66 [out] LPDWORD pcbBytesNeeded);
67
68 /* Function 5 */
69 DWORD ScmrSetServiceObjectSecurity([in] handle_t BindingHandle,
70 [in] SC_HANDLE hService,
71 [in] DWORD dwSecurityInformation,
72 [in, size_is(dwSecuityDescriptorSize)] unsigned char *lpSecurityDescriptor,
73 [in] DWORD dwSecuityDescriptorSize);
74
75 /* Function 6 */
76 DWORD ScmrQueryServiceStatus([in] handle_t BindingHandle,
77 [in] SC_HANDLE hSCManager,
78 [out] LPSERVICE_STATUS lpServiceStatus);
79
80 /* Function 7 */
81 DWORD ScmrSetServiceStatus([in] handle_t BindingHandle,
82 [in] SERVICE_STATUS_HANDLE hServiceStatus); /* FIXME */
83
84 /* Function 8 */
85 DWORD ScmrUnlockServiceDatabase([in] handle_t BindingHandle,
86 [in] SC_LOCK hLock);
87
88 /* Function 9 */
89 DWORD ScmrNotifyBootConfigStatus([in] handle_t BindingHandle,
90 [in] BOOL BootAcceptable);
91
92 /* Function 10 */
93 DWORD ScmrI_ScSetServiceBitsW([in] handle_t BindingHandle,
94 [in] SERVICE_STATUS_HANDLE hServiceStatus,
95 [in] DWORD dwServiceBits,
96 [in] BOOL bSetBitsOn,
97 [in] BOOL bUpdateImmediately,
98 [in, string, unique] LPWSTR lpString);
99
100 /* Function 11 */
101 DWORD ScmrChangeServiceConfigW([in] handle_t BindingHandle,
102 [in] SC_HANDLE hSCManager,
103 [in] DWORD dwServiceType,
104 [in] DWORD dwStartType,
105 [in] DWORD dwErrorControl,
106 [in, string, unique] LPCWSTR lpBinaryPathName,
107 [in, string, unique] LPCWSTR lpLoadOrderGroup,
108 [in, out, unique] LPDWORD lpdwTagId,
109 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,
110 [in] DWORD dwDependenciesLength,
111 [in, string, unique] LPCWSTR lpServiceStartName,
112 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,
113 [in] DWORD dwPasswordLength,
114 [in, string, unique] LPCWSTR lpDisplayName);
115
116 /* Function 12 */
117 DWORD ScmrCreateServiceW([in] handle_t BindingHandle,
118 [in] SC_HANDLE hSCManager,
119 [in, string, ref] LPCWSTR lpServiceName,
120 [in, string, unique] LPCWSTR lpDisplayName,
121 [in] DWORD dwDesiredAccess,
122 [in] DWORD dwServiceType,
123 [in] DWORD dwStartType,
124 [in] DWORD dwErrorControl,
125 [in, string, ref] LPCWSTR lpBinaryPathName,
126 [in, string, unique] LPCWSTR lpLoadOrderGroup,
127 [in, out, unique] LPDWORD lpdwTagId,
128 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,
129 [in] DWORD dwDependenciesLength,
130 [in, string, unique] LPCWSTR lpServiceStartName,
131 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,
132 [in] DWORD dwPasswordLength,
133 [out] SC_HANDLE *hService);
134
135 /* Function 13 */
136 DWORD ScmrEnumDependentServicesW([in] handle_t BindingHandle,
137 [in] SC_HANDLE hService,
138 [in] DWORD dwServiceState,
139 [out, size_is(cbBufSize)] BYTE *lpServices,
140 [in] DWORD cbBufSize,
141 [out] LPDWORD pcbBytesNeeded,
142 [out] LPDWORD lpServicesReturned);
143
144 /* Function 14 */
145 DWORD ScmrEnumServicesStatusW([in] handle_t BindingHandle,
146 [in] SC_HANDLE hSCManager,
147 [in] DWORD dwServiceType,
148 [in] DWORD dwServiceState,
149 [out, size_is(dwBufSize)] BYTE *lpServices,
150 [in] DWORD dwBufSize,
151 [out] LPDWORD pcbBytesNeeded,
152 [out] LPDWORD lpServicesReturned,
153 [in, out, unique] LPDWORD lpResumeHandle);
154
155 /* Function 15 */
156 DWORD ScmrOpenSCManagerW([in] handle_t BindingHandle,
157 [in, string, unique] LPCWSTR lpMachineName,
158 [in, string, unique] LPCWSTR lpDatabaseName,
159 [in] DWORD dwDesiredAccess,
160 [out] SC_HANDLE *hScm);
161
162 /* Function 16 */
163 SC_HANDLE ScmrOpenServiceW([in] handle_t BindingHandle,
164 [in] SC_HANDLE hSCManager,
165 [in, string] LPCWSTR lpServiceName,
166 [in] DWORD dwDesiredAccess,
167 [out] SC_HANDLE *hScm);
168
169 /* Function 17 */
170 DWORD ScmrQueryServiceConfigW([in] handle_t BindingHandle,
171 [in] SC_HANDLE hService,
172 [out, unique, size_is(cbBufSize)] BYTE *lpServiceConfig,
173 [in] DWORD cbBufSize,
174 [out] DWORD *pcbBytesNeeded);
175
176
177 /* Function 20 */
178 DWORD ScmrGetServiceDisplayNameW([in] handle_t BindingHandle,
179 [in] SC_HANDLE hSCManager,
180 [in, string, ref] LPCWSTR lpServiceName,
181 [out, size_is(*lpcchBuffer), unique] LPWSTR lpDisplayName,
182 [in, out, ref] LPDWORD lpcchBuffer);
183
184 /* Function 21 */
185 DWORD ScmrGetServiceKeyNameW([in] handle_t BindingHandle,
186 [in] SC_HANDLE hSCManager,
187 [in, string, ref] LPCWSTR lpDisplayName,
188 [out, size_is(*lpcchBuffer), unique] LPWSTR lpServiceName,
189 [in, out, ref] LPDWORD lpcchBuffer);
190
191
192 /* Function 27 */
193 DWORD ScmrOpenSCManagerA([in] handle_t BindingHandle,
194 [in, string, unique] LPCSTR lpMachineName,
195 [in, string, unique] LPCSTR lpDatabaseName,
196 [in] DWORD dwDesiredAccess,
197 [out] SC_HANDLE *hScm);
198
199 /* Function 28 */
200 SC_HANDLE ScmrOpenServiceA([in] handle_t BindingHandle,
201 [in] SC_HANDLE hSCManager,
202 [in, string] LPCSTR lpServiceName,
203 [in] DWORD dwDesiredAccess,
204 [out] SC_HANDLE *hScm);
205 }