-Implement EnumServicesStatusExW.
[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 SC_STATUS_TYPE unsigned long
15 #define SC_ENUM_TYPE unsigned long
16 #define LPSTR char*
17 #define LPCSTR char*
18 #define LPWSTR wchar_t*
19 #define LPCWSTR wchar_t*
20 #define LPBYTE unsigned char*
21 #define LPDWORD unsigned long*
22
23 [
24 uuid(367abb81-9844-35f1-ad32-98f038001003),
25 version(2.0),
26 pointer_default(unique),
27 explicit_handle
28 ]
29 interface svcctl
30 {
31 cpp_quote("#if 0")
32 typedef struct _SERVICE_STATUS
33 {
34 DWORD dwServiceType;
35 DWORD dwCurrentState;
36 DWORD dwControlsAccepted;
37 DWORD dwWin32ExitCode;
38 DWORD dwServiceSpecificExitCode;
39 DWORD dwCheckPoint;
40 DWORD dwWaitHint;
41 } SERVICE_STATUS, *LPSERVICE_STATUS;
42 cpp_quote("#endif")
43
44 /* Function 0 */
45 DWORD ScmrCloseServiceHandle([in] handle_t BindingHandle,
46 [in] SC_HANDLE hSCObject);
47
48 /* Function 1 */
49 BOOL ScmrControlService([in] handle_t BindingHandle,
50 [in] SC_HANDLE hService,
51 [in] DWORD dwControl,
52 [out] LPSERVICE_STATUS lpServiceStatus);
53
54 /* Function 2 */
55 DWORD ScmrDeleteService([in] handle_t BindingHandle,
56 [in] SC_HANDLE hService);
57
58 /* Function 3 */
59 DWORD ScmrLockServiceDatabase([in] handle_t BindingHandle,
60 [in] SC_HANDLE hSCManager,
61 [out] SC_LOCK *hLock);
62
63 /* Function 4 */
64 DWORD ScmrQueryServiceObjectSecurity([in] handle_t BindingHandle,
65 [in] SC_HANDLE hService,
66 [in] DWORD dwSecurityInformation,
67 [out, size_is(dwSecuityDescriptorSize)] unsigned char *lpSecurityDescriptor,
68 [in] DWORD dwSecuityDescriptorSize,
69 [out] LPDWORD pcbBytesNeeded);
70
71 /* Function 5 */
72 DWORD ScmrSetServiceObjectSecurity([in] handle_t BindingHandle,
73 [in] SC_HANDLE hService,
74 [in] DWORD dwSecurityInformation,
75 [in, size_is(dwSecuityDescriptorSize)] unsigned char *lpSecurityDescriptor,
76 [in] DWORD dwSecuityDescriptorSize);
77
78 /* Function 6 */
79 DWORD ScmrQueryServiceStatus([in] handle_t BindingHandle,
80 [in] SC_HANDLE hSCManager,
81 [out] LPSERVICE_STATUS lpServiceStatus);
82
83 /* Function 7 */
84 DWORD ScmrSetServiceStatus([in] handle_t BindingHandle,
85 [in] SERVICE_STATUS_HANDLE hServiceStatus); /* FIXME */
86
87 /* Function 8 */
88 DWORD ScmrUnlockServiceDatabase([in] handle_t BindingHandle,
89 [in] SC_LOCK hLock);
90
91 /* Function 9 */
92 DWORD ScmrNotifyBootConfigStatus([in] handle_t BindingHandle,
93 [in] BOOL BootAcceptable);
94
95 /* Function 10 */
96 DWORD ScmrSetServiceBitsW([in] handle_t BindingHandle,
97 [in] SERVICE_STATUS_HANDLE hServiceStatus,
98 [in] DWORD dwServiceBits,
99 [in] BOOL bSetBitsOn,
100 [in] BOOL bUpdateImmediately,
101 [in, string, unique] LPWSTR lpString);
102
103 /* Function 11 */
104 DWORD ScmrChangeServiceConfigW([in] handle_t BindingHandle,
105 [in] SC_HANDLE hSCManager,
106 [in] DWORD dwServiceType,
107 [in] DWORD dwStartType,
108 [in] DWORD dwErrorControl,
109 [in, string, unique] LPCWSTR lpBinaryPathName,
110 [in, string, unique] LPCWSTR lpLoadOrderGroup,
111 [in, out, unique] LPDWORD lpdwTagId,
112 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,
113 [in] DWORD dwDependenciesLength,
114 [in, string, unique] LPCWSTR lpServiceStartName,
115 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,
116 [in] DWORD dwPasswordLength,
117 [in, string, unique] LPCWSTR lpDisplayName);
118
119 /* Function 12 */
120 DWORD ScmrCreateServiceW([in] handle_t BindingHandle,
121 [in] SC_HANDLE hSCManager,
122 [in, string, ref] LPCWSTR lpServiceName,
123 [in, string, unique] LPCWSTR lpDisplayName,
124 [in] DWORD dwDesiredAccess,
125 [in] DWORD dwServiceType,
126 [in] DWORD dwStartType,
127 [in] DWORD dwErrorControl,
128 [in, string, ref] LPCWSTR lpBinaryPathName,
129 [in, string, unique] LPCWSTR lpLoadOrderGroup,
130 [in, out, unique] LPDWORD lpdwTagId,
131 [in, size_is(dwDependenciesLength), unique] LPCWSTR lpDependencies,
132 [in] DWORD dwDependenciesLength,
133 [in, string, unique] LPCWSTR lpServiceStartName,
134 [in, size_is(dwPasswordLength), unique] LPCWSTR lpPassword,
135 [in] DWORD dwPasswordLength,
136 [out] SC_HANDLE *hService);
137
138 /* Function 13 */
139 DWORD ScmrEnumDependentServicesW([in] handle_t BindingHandle,
140 [in] SC_HANDLE hService,
141 [in] DWORD dwServiceState,
142 [out, unique, size_is(cbBufSize)] LPBYTE lpServices,
143 [in] DWORD cbBufSize,
144 [out] LPDWORD pcbBytesNeeded,
145 [out] LPDWORD lpServicesReturned);
146
147 /* Function 14 */
148 DWORD ScmrEnumServicesStatusW([in] handle_t BindingHandle,
149 [in] SC_HANDLE hSCManager,
150 [in] DWORD dwServiceType,
151 [in] DWORD dwServiceState,
152 [out, unique, size_is(dwBufSize)] LPBYTE lpServices,
153 [in] DWORD dwBufSize,
154 [out] LPDWORD pcbBytesNeeded,
155 [out] LPDWORD lpServicesReturned,
156 [in, out, unique] LPDWORD lpResumeHandle);
157
158 /* Function 15 */
159 DWORD ScmrOpenSCManagerW([in] handle_t BindingHandle,
160 [in, string, unique] LPCWSTR lpMachineName,
161 [in, string, unique] LPCWSTR lpDatabaseName,
162 [in] DWORD dwDesiredAccess,
163 [out] SC_HANDLE *hScm);
164
165 /* Function 16 */
166 SC_HANDLE ScmrOpenServiceW([in] handle_t BindingHandle,
167 [in] SC_HANDLE hSCManager,
168 [in, string] LPCWSTR lpServiceName,
169 [in] DWORD dwDesiredAccess,
170 [out] SC_HANDLE *hScm);
171
172 /* Function 17 */
173 DWORD ScmrQueryServiceConfigW([in] handle_t BindingHandle,
174 [in] SC_HANDLE hService,
175 [out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig,
176 [in] DWORD cbBufSize,
177 [out] LPDWORD pcbBytesNeeded);
178
179 /* Function 18 */
180 DWORD ScmrQueryServiceLockStatusW([in] handle_t BindingHandle,
181 [in] SC_HANDLE hSCManager,
182 [out, unique, size_is(cbBufSize)] LPBYTE lpLockStatus,
183 [in] DWORD cbBufSize,
184 [out] LPDWORD pcbBytesNeeded);
185
186 /* Function 19 */
187 // DWORD ScmrStartServiceW([in] handle_t BindingHandle,
188 // [in] SC_HANDLE hService,
189 // [in] DWORD dwNumServiceArgs,
190 // [in, string, size_is(dwNumServiceArgs, ), unique] LPWSTR *lpServiceArgVectors);
191
192 /* Function 20 */
193 DWORD ScmrGetServiceDisplayNameW([in] handle_t BindingHandle,
194 [in] SC_HANDLE hSCManager,
195 [in, string, ref] LPCWSTR lpServiceName,
196 [out, size_is(*lpcchBuffer), unique] LPWSTR lpDisplayName,
197 [in, out, ref] LPDWORD lpcchBuffer);
198
199 /* Function 21 */
200 DWORD ScmrGetServiceKeyNameW([in] handle_t BindingHandle,
201 [in] SC_HANDLE hSCManager,
202 [in, string, ref] LPCWSTR lpDisplayName,
203 [out, size_is(*lpcchBuffer), unique] LPWSTR lpServiceName,
204 [in, out, ref] LPDWORD lpcchBuffer);
205
206 /* Function 22 */
207 DWORD ScmrSetServiceBitsA([in] handle_t BindingHandle,
208 [in] SERVICE_STATUS_HANDLE hServiceStatus,
209 [in] DWORD dwServiceBits,
210 [in] BOOL bSetBitsOn,
211 [in] BOOL bUpdateImmediately,
212 [in, string, unique] LPSTR lpString);
213
214 /* Function 23 */
215 DWORD ScmrChangeServiceConfigA([in] handle_t BindingHandle,
216 [in] SC_HANDLE hSCManager,
217 [in] DWORD dwServiceType,
218 [in] DWORD dwStartType,
219 [in] DWORD dwErrorControl,
220 [in, string, unique] LPCSTR lpBinaryPathName,
221 [in, string, unique] LPCSTR lpLoadOrderGroup,
222 [in, out, unique] LPDWORD lpdwTagId,
223 [in, size_is(dwDependenciesLength), unique] LPCSTR lpDependencies,
224 [in] DWORD dwDependenciesLength,
225 [in, string, unique] LPCSTR lpServiceStartName,
226 [in, size_is(dwPasswordLength), unique] LPCSTR lpPassword,
227 [in] DWORD dwPasswordLength,
228 [in, string, unique] LPCSTR lpDisplayName);
229
230 /* Function 24 */
231 DWORD ScmrCreateServiceA([in] handle_t BindingHandle,
232 [in] SC_HANDLE hSCManager,
233 [in, string, ref] LPCSTR lpServiceName,
234 [in, string, unique] LPCSTR lpDisplayName,
235 [in] DWORD dwDesiredAccess,
236 [in] DWORD dwServiceType,
237 [in] DWORD dwStartType,
238 [in] DWORD dwErrorControl,
239 [in, string, ref] LPCSTR lpBinaryPathName,
240 [in, string, unique] LPCSTR lpLoadOrderGroup,
241 [in, out, unique] LPDWORD lpdwTagId,
242 [in, size_is(dwDependenciesLength), unique] LPCSTR lpDependencies,
243 [in] DWORD dwDependenciesLength,
244 [in, string, unique] LPCSTR lpServiceStartName,
245 [in, size_is(dwPasswordLength), unique] LPCSTR lpPassword,
246 [in] DWORD dwPasswordLength,
247 [out] SC_HANDLE *hService);
248
249 /* Function 25 */
250 DWORD ScmrEnumDependentServicesA([in] handle_t BindingHandle,
251 [in] SC_HANDLE hService,
252 [in] DWORD dwServiceState,
253 [out, unique, size_is(cbBufSize)] LPBYTE lpServices,
254 [in] DWORD cbBufSize,
255 [out] LPDWORD pcbBytesNeeded,
256 [out] LPDWORD lpServicesReturned);
257
258 /* Function 26 */
259 DWORD ScmrEnumServicesStatusA([in] handle_t BindingHandle,
260 [in] SC_HANDLE hSCManager,
261 [in] DWORD dwServiceType,
262 [in] DWORD dwServiceState,
263 [out, unique, size_is(dwBufSize)] LPBYTE lpServices,
264 [in] DWORD dwBufSize,
265 [out] LPDWORD pcbBytesNeeded,
266 [out] LPDWORD lpServicesReturned,
267 [in, out, unique] LPDWORD lpResumeHandle);
268
269 /* Function 27 */
270 DWORD ScmrOpenSCManagerA([in] handle_t BindingHandle,
271 [in, string, unique] LPCSTR lpMachineName,
272 [in, string, unique] LPCSTR lpDatabaseName,
273 [in] DWORD dwDesiredAccess,
274 [out] SC_HANDLE *hScm);
275
276 /* Function 28 */
277 SC_HANDLE ScmrOpenServiceA([in] handle_t BindingHandle,
278 [in] SC_HANDLE hSCManager,
279 [in, string] LPCSTR lpServiceName,
280 [in] DWORD dwDesiredAccess,
281 [out] SC_HANDLE *hScm);
282
283 /* Function 29 */
284 DWORD ScmrQueryServiceConfigA([in] handle_t BindingHandle,
285 [in] SC_HANDLE hService,
286 [out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig,
287 [in] DWORD cbBufSize,
288 [out] LPDWORD pcbBytesNeeded);
289
290 /* Function 30 */
291 // DWORD ScmrQueryServiceLockStatusA([in] handle_t BindingHandle,
292 // [in] SC_HANDLE hSCManager,
293 // [out, unique, size_is(cbBufSize)] LPBYTE lpLockStatus,
294 // [in] DWORD cbBufSize,
295 // [out] LPDWORD pcbBytesNeeded);
296
297 /* Function 31 */
298 // DWORD ScmrStartServiceA([in] handle_t BindingHandle,
299 // [in] SC_HANDLE hService,
300 // [in] DWORD dwNumServiceArgs,
301 // [in, unique, string, size_is(dwNumServiceArgs, )] LPSTR *lpServiceArgVectors);
302
303 /* Function 32 */
304 DWORD ScmrGetServiceDisplayNameA([in] handle_t BindingHandle,
305 [in] SC_HANDLE hSCManager,
306 [in, string, ref] LPCSTR lpServiceName,
307 [out, unique, size_is(*lpcchBuffer)] LPSTR lpDisplayName,
308 [in, out, ref] LPDWORD lpcchBuffer);
309
310 /* Function 33 */
311 DWORD ScmrGetServiceKeyNameA([in] handle_t BindingHandle,
312 [in] SC_HANDLE hSCManager,
313 [in, string, ref] LPCSTR lpDisplayName,
314 [out, unique, size_is(*lpcchBuffer)] LPSTR lpServiceName,
315 [in, out, ref] LPDWORD lpcchBuffer);
316
317 /* Function 35 */
318 /* ScmrGetCurrentGroupStateW */
319
320 /* Function 35 */
321 /* ScmrEnumServiceGroupW */
322
323 /* Function 36 */
324 /* ScmrChangeServiceConfig2A */
325
326 /* Function 37 */
327 /* ScmrChangeServiceConfig2W */
328
329 /* Function 38 */
330 /* ScmrQueryServiceConfig2A */
331
332 /* Function 39 */
333 /* ScmrQueryServiceConfig2W */
334
335 /* Function 40 */
336 DWORD ScmrQueryServiceStatusEx([in] handle_t BindingHandle,
337 [in] SC_HANDLE hService,
338 [in] SC_STATUS_TYPE InfoLevel,
339 [out, unique, size_is(cbBufSize)] LPBYTE lpBuffer,
340 [in] DWORD cbBufSize,
341 [out] LPDWORD pcbBytesNeeded);
342
343 /* Function 41 */
344 // DWORD ScmrEnumServicesStatusExA([in] handle_t BindingHandle,
345 // [in] SC_HANDLE hService,
346 // [in] SC_ENUM_TYPE InfoLevel,
347 // [in] DWORD dwServiceType,
348 // [in] DWORD dwServiceState,
349 // [out, unique, size_is(cbBufSize)] LPBYTE lpServices,
350 // [in] DWORD cbBufSize,
351 // [out] LPDWORD pcbBytesNeeded,
352 // [out] LPDWORD lpServicesReturned,
353 // [in, out, unique] LPDWORD lpResumeHandle,
354 // [in, string] LPCSTR pszGroupName);
355
356 /* Function 42 */
357 DWORD ScmrEnumServicesStatusExW([in] handle_t BindingHandle,
358 [in] SC_HANDLE hService,
359 [in] SC_ENUM_TYPE InfoLevel,
360 [in] DWORD dwServiceType,
361 [in] DWORD dwServiceState,
362 [out, unique, size_is(cbBufSize)] LPBYTE lpServices,
363 [in] DWORD cbBufSize,
364 [out] LPDWORD pcbBytesNeeded,
365 [out] LPDWORD lpServicesReturned,
366 [in, out, unique] LPDWORD lpResumeHandle,
367 [in, string] LPCWSTR pszGroupName);
368
369 /* Function 43 */
370 /* ScmrSendTSMessage */
371 }