ReactOS 0.4.15-dev-7924-g5949c20
svcctl.idl
Go to the documentation of this file.
1/*
2 * Service Control Manager (SCM) interface definition
3 */
4
5#include <ms-dtyp.idl>
6
7const unsigned int MAX_SERVICE_NAME_LENGTH = 256;
8const unsigned short SC_MAX_DEPEND_SIZE = 4 * 1024;
9const unsigned short SC_MAX_NAME_LENGTH = MAX_SERVICE_NAME_LENGTH + 1;
10const unsigned short SC_MAX_PATH_LENGTH = 32 * 1024;
11const unsigned short SC_MAX_PWD_SIZE = 514;
12const unsigned short SC_MAX_COMPUTER_NAME_LENGTH = 1024;
13const unsigned short SC_MAX_ACCOUNT_NAME_LENGTH = 2 * 1024;
14const unsigned short SC_MAX_COMMENT_LENGTH = 128;
15const unsigned short SC_MAX_ARGUMENT_LENGTH = 1024;
16const unsigned short SC_MAX_ARGUMENTS = 1024;
17
21typedef [context_handle] PVOID SC_RPC_HANDLE;
23typedef [context_handle] PVOID SC_RPC_LOCK;
25typedef [context_handle] PVOID SC_NOTIFY_RPC_HANDLE;
27typedef [range(0, 1024 * 4)] DWORD BOUNDED_DWORD_4K;
29typedef [range(0, 1024 * 8)] DWORD BOUNDED_DWORD_8K;
31typedef [range(0, 1024 * 256)] DWORD BOUNDED_DWORD_256K;
33
34cpp_quote("#if 0")
35
36typedef struct _SERVICE_STATUS {
37 DWORD dwServiceType;
38 DWORD dwCurrentState;
39 DWORD dwControlsAccepted;
40 DWORD dwWin32ExitCode;
41 DWORD dwServiceSpecificExitCode;
42 DWORD dwCheckPoint;
43 DWORD dwWaitHint;
45
46typedef struct _SERVICE_STATUS_PROCESS {
57
58typedef struct _ENUM_SERVICE_STATUSA {
63
64typedef struct _ENUM_SERVICE_STATUSW {
69
70typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
75
76typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
81
82typedef struct _QUERY_SERVICE_CONFIGA {
93
94typedef struct _QUERY_SERVICE_CONFIGW {
105
106typedef struct _QUERY_SERVICE_LOCK_STATUSA {
111
112typedef struct _QUERY_SERVICE_LOCK_STATUSW {
117
118typedef [v1_enum] enum _SC_ACTION_TYPE {
124
125typedef struct _SC_ACTION {
127 DWORD Delay;
129
130typedef [v1_enum] enum _SC_ENUM_TYPE {
133
134typedef struct _SERVICE_DESCRIPTIONA {
137
138typedef struct _SERVICE_DESCRIPTIONW {
141
142typedef struct _SERVICE_FAILURE_ACTIONSA {
146 [range(0, 1024)] DWORD cActions;
147 [size_is(cActions)] SC_ACTION* lpsaActions;
149
150typedef struct _SERVICE_FAILURE_ACTIONSW {
154 [range(0, 1024)] DWORD cActions;
155 [size_is(cActions)] SC_ACTION* lpsaActions;
157
158cpp_quote("#endif")
159
163
167
168typedef struct _SERVICE_SID_INFO {
171
176
177cpp_quote("#ifndef _SERVICE_PRESHUTDOWN_INFO_DEFINED_")
178cpp_quote("#define _SERVICE_PRESHUTDOWN_INFO_DEFINED_")
179typedef struct _SERVICE_PRESHUTDOWN_INFO {
180 DWORD dwPreshutdownTimeout;
181} SERVICE_PRESHUTDOWN_INFO, *LPSERVICE_PRESHUTDOWN_INFO;
182cpp_quote("#endif")
183
184typedef struct _SC_RPC_CONFIG_INFOA {
185 DWORD dwInfoLevel;
186 [switch_is(dwInfoLevel)] union {
187 [case(1)] LPSERVICE_DESCRIPTIONA psd;
188 [case(2)] LPSERVICE_FAILURE_ACTIONSA psfa;
189 [case(3)] LPSERVICE_DELAYED_AUTO_START_INFO psda;
190 [case(4)] LPSERVICE_FAILURE_ACTIONS_FLAG psfaf;
191 [case(5)] LPSERVICE_SID_INFO pssid;
192 [case(6)] LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFO psrp;
193 [case(7)] LPSERVICE_PRESHUTDOWN_INFO psps;
194 } DUMMYUNIONNAME;
195} SC_RPC_CONFIG_INFOA, *LPSC_RPC_CONFIG_INFOA;
196
197typedef struct _SC_RPC_CONFIG_INFOW {
198 DWORD dwInfoLevel;
199 [switch_is(dwInfoLevel)] union {
200 [case(1)] LPSERVICE_DESCRIPTIONW psd;
201 [case(2)] LPSERVICE_FAILURE_ACTIONSW psfa;
202 [case(3)] LPSERVICE_DELAYED_AUTO_START_INFO psda;
203 [case(4)] LPSERVICE_FAILURE_ACTIONS_FLAG psfaf;
204 [case(5)] LPSERVICE_SID_INFO pssid;
205 [case(6)] LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFO psrp;
206 [case(7)] LPSERVICE_PRESHUTDOWN_INFO psps;
207 } DUMMYUNIONNAME;
208} SC_RPC_CONFIG_INFOW, *LPSC_RPC_CONFIG_INFOW;
209
210typedef struct _SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 {
211 ULONGLONG ullThreadId;
212 DWORD dwNotifyMask;
213 UCHAR CallbackAddressArray[16];
214 UCHAR CallbackParamAddressArray[16];
215 SERVICE_STATUS_PROCESS ServiceStatus;
216 DWORD dwNotificationStatus;
217 DWORD dwSequence;
218} SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1, *PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1;
219
220typedef struct _SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 {
221 ULONGLONG ullThreadId;
222 DWORD dwNotifyMask;
223 UCHAR CallbackAddressArray[16];
224 UCHAR CallbackParamAddressArray[16];
225 SERVICE_STATUS_PROCESS ServiceStatus;
226 DWORD dwNotificationStatus;
227 DWORD dwSequence;
228 DWORD dwNotificationTriggered;
229 [string] PWSTR pszServiceNames;
230} SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2, *PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2;
231
232typedef struct _SC_RPC_NOTIFY_PARAMS {
233 DWORD dwInfoLevel;
234 [switch_is(dwInfoLevel)] union {
235 [case(1)] PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 pStatusChangeParam1;
236 [case(2)] PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 pStatusChangeParam2;
237 };
238} SC_RPC_NOTIFY_PARAMS, *LPSC_RPC_NOTIFY_PARAMS;
239
240typedef struct _SC_RPC_NOTIFY_PARAMS_LIST {
241 BOUNDED_DWORD_4K cElements;
242 [size_is(cElements)] SC_RPC_NOTIFY_PARAMS NotifyParamsArray[];
243} SC_RPC_NOTIFY_PARAMS_LIST, *PSC_RPC_NOTIFY_PARAMS_LIST;
244
245cpp_quote("#if 0")
246
247#if 0
248typedef
249[switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_IN_PARAMSA {
250 [case(1)] PSERVICE_CONTROL_STATUS_REASON_IN_PARAMSA psrInParams;
251} SC_RPC_SERVICE_CONTROL_IN_PARAMSA, *LPSC_RPC_SERVICE_CONTROL_IN_PARAMSA;
252
253typedef
254[switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_IN_PARAMSW {
255 [case(1)] PSERVICE_CONTROL_STATUS_REASON_IN_PARAMSW psrInParams;
256} SC_RPC_SERVICE_CONTROL_IN_PARAMSW, *LPSC_RPC_SERVICE_CONTROL_IN_PARAMSW;
257
258typedef
259[switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_OUT_PARAMSA {
260 [case(1)] PSERVICE_CONTROL_STATUS_REASON_OUT_PARAMS psrOutParams;
261} SC_RPC_SERVICE_CONTROL_OUT_PARAMSA, *LPSC_RPC_SERVICE_CONTROL_OUT_PARAMSA;
262
263typedef
264[switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_OUT_PARAMSW {
265 [case(1)] PSERVICE_CONTROL_STATUS_REASON_OUT_PARAMS psrOutParams;
266} SC_RPC_SERVICE_CONTROL_OUT_PARAMSW, *LPSC_RPC_SERVICE_CONTROL_OUT_PARAMSW;
267#endif
268
269typedef [v1_enum] enum _SC_STATUS_TYPE {
270 SC_STATUS_PROCESS_INFO = 0,
271} SC_STATUS_TYPE;
272
273typedef struct _SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA {
274 DWORD dwReason;
275 [string] LPSTR pszComment;
276} SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA, *LPSERVICE_CONTROL_STATUS_REASON_IN_PARAMSA;
277
278typedef struct _SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW {
279 DWORD dwReason;
280 [string] LPWSTR pszComment;
281} SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW, *LPSERVICE_CONTROL_STATUS_REASON_IN_PARAMSW;
282
283typedef struct _SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS {
284 SERVICE_STATUS_PROCESS ServiceStatus;
285} SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS, *LPSERVICE_CONTROL_STATUS_REASON_OUT_PARAMS;
286
287typedef SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 SERVICE_NOTIFY_STATUS_CHANGE_PARAMS, *LPSERVICE_NOTIFY_STATUS_CHANGE_PARAMS;
288
289cpp_quote("#endif")
290
291typedef struct _STRING_PTRSA {
292 [string] LPSTR StringPtr;
293} STRING_PTRSA, *PSTRING_PTRSA, *LPSTRING_PTRSA;
294
295typedef struct _STRING_PTRSW {
296 [string] LPWSTR StringPtr;
297} STRING_PTRSW, *PSTRING_PTRSW, *LPSTRING_PTRSW;
298
299typedef [v1_enum] enum _TAG_INFO_LEVEL {
300 TagInfoLevelNameFromTag = 1,
301} TAG_INFO_LEVEL;
302
303typedef [v1_enum] enum _TAG_TYPE {
304 TagTypeService = 1,
305} TAG_TYPE;
306
307typedef struct _TAG_INFO_NAME_FROM_TAG_IN_PARAMS {
308 DWORD dwPid;
309 DWORD dwTag;
310} TAG_INFO_NAME_FROM_TAG_IN_PARAMS, *PTAG_INFO_NAME_FROM_TAG_IN_PARAMS;
311
312typedef struct _TAG_INFO_NAME_FROM_TAG_OUT_PARAMS {
313 TAG_TYPE TagType;
314 [string] LPWSTR pszName;
315} TAG_INFO_NAME_FROM_TAG_OUT_PARAMS, *PTAG_INFO_NAME_FROM_TAG_OUT_PARAMS;
316
317typedef struct _TAG_INFO_NAME_FROM_TAG
318{
319 TAG_INFO_NAME_FROM_TAG_IN_PARAMS InParams;
320 TAG_INFO_NAME_FROM_TAG_OUT_PARAMS OutParams;
321} TAG_INFO_NAME_FROM_TAG, *PTAG_INFO_NAME_FROM_TAG;
322
323[
324 uuid(367abb81-9844-35f1-ad32-98f038001003),
325 version(2.0),
326 pointer_default(unique),
327 endpoint("ncacn_np:[\\pipe\\ntsvcs]")
328]
329interface svcctl
330{
331 /* Function 0 */
332 DWORD
333 __stdcall
334 RCloseServiceHandle(
335 [in, out] LPSC_RPC_HANDLE hSCObject);
336
337 /* Function 1 */
338 DWORD
339 __stdcall
340 RControlService(
341 [in] SC_RPC_HANDLE hService,
342 [in] DWORD dwControl,
343 [out] LPSERVICE_STATUS lpServiceStatus);
344
345 /* Function 2 */
346 DWORD
347 __stdcall
348 RDeleteService(
349 [in] SC_RPC_HANDLE hService);
350
351 /* Function 3 */
352 DWORD
353 __stdcall
354 RLockServiceDatabase(
355 [in] SC_RPC_HANDLE hSCManager,
356 [out] LPSC_RPC_LOCK lpLock);
357
358 /* Function 4 */
359 DWORD
360 __stdcall
361 RQueryServiceObjectSecurity(
362 [in] SC_RPC_HANDLE hService,
363 [in] SECURITY_INFORMATION dwSecurityInformation,
364 [out, size_is(cbBufSize)] LPBYTE lpSecurityDescriptor,
365 [in, range(0, 1024 * 256)] DWORD cbBufSize,
366 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded);
367
368 /* Function 5 */
369 DWORD
370 __stdcall
371 RSetServiceObjectSecurity(
372 [in] SC_RPC_HANDLE hService,
373 [in] DWORD dwSecurityInformation,
374 [in, size_is(dwSecuityDescriptorSize)] LPBYTE lpSecurityDescriptor,
375 [in] DWORD dwSecuityDescriptorSize);
376
377 /* Function 6 */
378 DWORD
379 __stdcall
380 RQueryServiceStatus(
381 [in] SC_RPC_HANDLE hService,
382 [out] LPSERVICE_STATUS lpServiceStatus);
383
384 /* Function 7 */
385 DWORD
386 __stdcall
387 RSetServiceStatus(
388 [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus,
389 [in] LPSERVICE_STATUS lpServiceStatus);
390
391 /* Function 8 */
392 DWORD
393 __stdcall
394 RUnlockServiceDatabase(
395 [in, out] LPSC_RPC_LOCK Lock);
396
397 /* Function 9 */
398 DWORD
399 __stdcall
400 RNotifyBootConfigStatus(
401 [in, string, unique] SVCCTL_HANDLEW lpMachineName,
402 [in] DWORD BootAcceptable);
403
404 /* Function 10 */
405 DWORD
406 __stdcall
407 RI_ScSetServiceBitsW(
408 [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus,
409 [in] DWORD dwServiceBits,
410 [in] BOOL bSetBitsOn,
411 [in] BOOL bUpdateImmediately,
412 [in, string, unique] LPWSTR lpString);
413
414 /* Function 11 */
415 DWORD
416 __stdcall
417 RChangeServiceConfigW(
418 [in] SC_RPC_HANDLE hService,
419 [in] DWORD dwServiceType,
420 [in] DWORD dwStartType,
421 [in] DWORD dwErrorControl,
422 [in, string, unique] LPWSTR lpBinaryPathName,
423 [in, string, unique] LPWSTR lpLoadOrderGroup,
424 [in, out, unique] LPDWORD lpdwTagId,
425 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies,
426 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize,
427 [in, string, unique] LPWSTR lpServiceStartName,
428 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword,
429 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize,
430 [in, string, unique] LPWSTR lpDisplayName);
431
432 /* Function 12 */
433 DWORD
434 __stdcall
435 RCreateServiceW(
436 [in] SC_RPC_HANDLE hSCManager,
437 [in, string] LPCWSTR lpServiceName,
438 [in, string, unique] LPCWSTR lpDisplayName,
439 [in] DWORD dwDesiredAccess,
440 [in] DWORD dwServiceType,
441 [in] DWORD dwStartType,
442 [in] DWORD dwErrorControl,
443 [in, string] LPCWSTR lpBinaryPathName,
444 [in, string, unique] LPCWSTR lpLoadOrderGroup,
445 [in, out, unique] LPDWORD lpdwTagId,
446 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies,
447 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize,
448 [in, string, unique] LPCWSTR lpServiceStartName,
449 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword,
450 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize,
451 [out] LPSC_RPC_HANDLE lpServiceHandle);
452
453 /* Function 13 */
454 DWORD
455 __stdcall
456 REnumDependentServicesW(
457 [in] SC_RPC_HANDLE hService,
458 [in] DWORD dwServiceState,
459 [out, size_is(cbBufSize)] LPBYTE lpServices,
460 [in, range(0, 1024*256)] DWORD cbBufSize,
461 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
462 [out] LPBOUNDED_DWORD_256K lpServicesReturned);
463
464 /* Function 14 */
465 DWORD
466 __stdcall
467 REnumServicesStatusW(
468 [in] SC_RPC_HANDLE hSCManager,
469 [in] DWORD dwServiceType,
470 [in] DWORD dwServiceState,
471 [out, size_is(dwBufSize)] LPBYTE lpBuffer,
472 [in, range(0, 1024*256)] DWORD dwBufSize,
473 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
474 [out] LPBOUNDED_DWORD_256K lpServicesReturned,
475 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeHandle);
476
477 /* Function 15 */
478 DWORD
479 __stdcall
480 ROpenSCManagerW(
481 [in, string, unique] SVCCTL_HANDLEW lpMachineName,
482 [in, string, unique] LPWSTR lpDatabaseName,
483 [in] DWORD dwDesiredAccess,
484 [out] LPSC_RPC_HANDLE lpScHandle);
485
486 /* Function 16 */
487 DWORD
488 __stdcall
489 ROpenServiceW(
490 [in] SC_RPC_HANDLE hSCManager,
491 [in, string] LPWSTR lpServiceName,
492 [in] DWORD dwDesiredAccess,
493 [out] LPSC_RPC_HANDLE lpServiceHandle);
494
495 /* Function 17 */
496 DWORD
497 __stdcall
498 RQueryServiceConfigW(
499 [in] SC_RPC_HANDLE hService,
500 [out, size_is(cbBufSize)] LPBYTE lpServiceConfig,
501 /* FIXME: should be [out] LPQUERY_SERVICE_CONFIGW lpServiceConfig, */
502 [in, range(0, 1024*8)] DWORD cbBufSize,
503 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded);
504
505 /* Function 18 */
506 DWORD
507 __stdcall
508 RQueryServiceLockStatusW(
509 [in] SC_RPC_HANDLE hSCManager,
510 [out, size_is(cbBufSize)] LPBYTE lpLockStatus,
511 /* FIXME: should be [out] LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus, */
512 [in, range(0, 1024*4)] DWORD cbBufSize,
513 [out] LPBOUNDED_DWORD_4K pcbBytesNeeded);
514
515 /* Function 19 */
516 DWORD
517 __stdcall
518 RStartServiceW(
519 [in] SC_RPC_HANDLE hService,
520 [in, range(0, SC_MAX_ARGUMENTS)] DWORD argc,
521 [in, unique, size_is(argc)] LPSTRING_PTRSW argv);
522
523 /* Function 20 */
524 DWORD
525 __stdcall
526 RGetServiceDisplayNameW(
527 [in] SC_RPC_HANDLE hSCManager,
528 [in, string] LPCWSTR lpServiceName,
529 [out, string, size_is(*lpcchBuffer + 1)] LPWSTR lpDisplayName,
530 [in, out] DWORD* lpcchBuffer);
531
532 /* Function 21 */
533 DWORD
534 __stdcall
535 RGetServiceKeyNameW(
536 [in] SC_RPC_HANDLE hSCManager,
537 [in, string] LPCWSTR lpDisplayName,
538 [out, string, size_is(*lpcchBuffer + 1)] LPWSTR lpServiceName,
539 [in, out] DWORD* lpcchBuffer);
540
541 /* Function 22 */
542 DWORD
543 __stdcall
544 RI_ScSetServiceBitsA(
545 [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus,
546 [in] DWORD dwServiceBits,
547 [in] BOOL bSetBitsOn,
548 [in] BOOL bUpdateImmediately,
549 [in, string, unique] LPSTR lpString);
550
551 /* Function 23 */
552 DWORD
553 __stdcall
554 RChangeServiceConfigA(
555 [in] SC_RPC_HANDLE hService,
556 [in] DWORD dwServiceType,
557 [in] DWORD dwStartType,
558 [in] DWORD dwErrorControl,
559 [in, string, unique] LPSTR lpBinaryPathName,
560 [in, string, unique] LPSTR lpLoadOrderGroup,
561 [in, out, unique] LPDWORD lpdwTagId,
562 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies,
563 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize,
564 [in, string, unique] LPSTR lpServiceStartName,
565 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword,
566 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize,
567 [in, string, unique] LPSTR lpDisplayName);
568
569 /* Function 24 */
570 DWORD
571 __stdcall
572 RCreateServiceA(
573 [in] SC_RPC_HANDLE hSCManager,
574 [in, string] LPSTR lpServiceName,
575 [in, string, unique] LPSTR lpDisplayName,
576 [in] DWORD dwDesiredAccess,
577 [in] DWORD dwServiceType,
578 [in] DWORD dwStartType,
579 [in] DWORD dwErrorControl,
580 [in, string] LPSTR lpBinaryPathName,
581 [in, string, unique] LPSTR lpLoadOrderGroup,
582 [in, out, unique] LPDWORD lpdwTagId,
583 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies,
584 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize,
585 [in, string, unique] LPSTR lpServiceStartName,
586 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword,
587 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize,
588 [out] LPSC_RPC_HANDLE lpServiceHandle);
589
590 /* Function 25 */
591 DWORD
592 __stdcall
593 REnumDependentServicesA(
594 [in] SC_RPC_HANDLE hService,
595 [in] DWORD dwServiceState,
596 [out, size_is(cbBufSize)] LPBYTE lpServices,
597 [in, range(0, 1024*256)] DWORD cbBufSize,
598 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
599 [out] LPBOUNDED_DWORD_256K lpServicesReturned);
600
601 /* Function 26 */
602 DWORD
603 __stdcall
604 REnumServicesStatusA(
605 [in] SC_RPC_HANDLE hSCManager,
606 [in] DWORD dwServiceType,
607 [in] DWORD dwServiceState,
608 [out, size_is(dwBufSize)] LPBYTE lpBuffer,
609 [in, range(0, 1024*256)] DWORD dwBufSize,
610 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
611 [out] LPBOUNDED_DWORD_256K lpServicesReturned,
612 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeHandle);
613
614 /* Function 27 */
615 DWORD
616 __stdcall
617 ROpenSCManagerA(
618 [in, string, unique] SVCCTL_HANDLEA lpMachineName,
619 [in, string, unique] LPSTR lpDatabaseName,
620 [in] DWORD dwDesiredAccess,
621 [out] LPSC_RPC_HANDLE lpScHandle);
622
623 /* Function 28 */
624 DWORD
625 __stdcall
626 ROpenServiceA(
627 [in] SC_RPC_HANDLE hSCManager,
628 [in, string] LPSTR lpServiceName,
629 [in] DWORD dwDesiredAccess,
630 [out] LPSC_RPC_HANDLE lpServiceHandle);
631
632 /* Function 29 */
633 DWORD
634 __stdcall
635 RQueryServiceConfigA(
636 [in] SC_RPC_HANDLE hService,
637 [out, size_is(cbBufSize)] LPBYTE lpServiceConfig,
638 /* FIXME: should be [out] LPQUERY_SERVICE_CONFIGA lpServiceConfig, */
639 [in, range(0, 1024*8)] DWORD cbBufSize,
640 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded);
641
642 /* Function 30 */
643 DWORD
644 __stdcall
645 RQueryServiceLockStatusA(
646 [in] SC_RPC_HANDLE hSCManager,
647 [out, size_is(cbBufSize)] LPBYTE lpLockStatus,
648 /* FIXME: should be [out] LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus, */
649 [in, range(0, 1024*4)] DWORD cbBufSize,
650 [out] LPBOUNDED_DWORD_4K pcbBytesNeeded);
651
652 /* Function 31 */
653 DWORD
654 __stdcall
655 RStartServiceA(
656 [in] SC_RPC_HANDLE hService,
657 [in, range(0, SC_MAX_ARGUMENTS)] DWORD argc,
658 [in, unique, size_is(argc)] LPSTRING_PTRSA argv);
659
660 /* Function 32 */
661 DWORD
662 __stdcall
663 RGetServiceDisplayNameA(
664 [in] SC_RPC_HANDLE hSCManager,
665 [in, string] LPCSTR lpServiceName,
666 [out, string, size_is(*lpcchBuffer)] LPSTR lpDisplayName,
667 [in, out] LPBOUNDED_DWORD_4K lpcchBuffer);
668
669 /* Function 33 */
670 DWORD
671 __stdcall
672 RGetServiceKeyNameA(
673 [in] SC_RPC_HANDLE hSCManager,
674 [in, string] LPCSTR lpDisplayName,
675 [out, string, size_is(*lpcchBuffer)] LPSTR lpKeyName,
676 [in, out] LPBOUNDED_DWORD_4K lpcchBuffer);
677
678 /* Function 34 */
679 DWORD
680 __stdcall
681 RI_ScGetCurrentGroupStateW(
682 [in] SC_RPC_HANDLE hSCManager,
683 [in, string, unique] LPWSTR lpLoadOrderGroup,
684 [out] LPDWORD lpState);
685
686 /* Function 35 */
687 DWORD
688 __stdcall
689 REnumServiceGroupW(
690 [in] SC_RPC_HANDLE hSCManager,
691 [in] DWORD dwServiceType,
692 [in] DWORD dwServiceState,
693 [out, size_is(cbBufSize)] LPBYTE lpBuffer,
694 [in, range(0, 1024*256)] DWORD cbBufSize,
695 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
696 [out] LPBOUNDED_DWORD_256K lpServicesReturned,
697 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeIndex,
698 [in, string, unique] LPCWSTR pszGroupName);
699
700 /* Function 36 */
701 DWORD
702 __stdcall
703 RChangeServiceConfig2A(
704 [in] SC_RPC_HANDLE hService,
705 [in] SC_RPC_CONFIG_INFOA Info);
706
707 /* Function 37 */
708 DWORD
709 __stdcall
710 RChangeServiceConfig2W(
711 [in] SC_RPC_HANDLE hService,
712 [in] SC_RPC_CONFIG_INFOW Info);
713
714 /* Function 38 */
715 DWORD
716 __stdcall
717 RQueryServiceConfig2A(
718 [in] SC_RPC_HANDLE hService,
719 [in] DWORD dwInfoLevel,
720 [out, size_is(cbBufSize)] LPBYTE lpBuffer,
721 [in, range(0, 1024*8)] DWORD cbBufSize,
722 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded);
723
724 /* Function 39 */
725 DWORD
726 __stdcall
727 RQueryServiceConfig2W(
728 [in] SC_RPC_HANDLE hService,
729 [in] DWORD dwInfoLevel,
730 [out, size_is(cbBufSize)] LPBYTE lpBuffer,
731 [in, range(0, 1024*8)] DWORD cbBufSize,
732 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded);
733
734 /* Function 40 */
735 DWORD
736 __stdcall
737 RQueryServiceStatusEx(
738 [in] SC_RPC_HANDLE hService,
739 [in] SC_STATUS_TYPE InfoLevel,
740 [out, size_is(cbBufSize)] LPBYTE lpBuffer,
741 [in, range(0, 1024*8)] DWORD cbBufSize,
742 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded);
743
744 /* Function 41 */
745 DWORD
746 __stdcall
747 REnumServicesStatusExA(
748 [in] SC_RPC_HANDLE hSCManager,
749 [in] SC_ENUM_TYPE InfoLevel,
750 [in] DWORD dwServiceType,
751 [in] DWORD dwServiceState,
752 [out, size_is(cbBufSize)] LPBYTE lpBuffer,
753 [in, range(0, 1024 * 256)] DWORD cbBufSize,
754 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
755 [out] LPBOUNDED_DWORD_256K lpServicesReturned,
756 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeIndex,
757 [in, string, unique] LPCSTR pszGroupName);
758
759 /* Function 42 */
760 DWORD
761 __stdcall
762 REnumServicesStatusExW(
763 [in] SC_RPC_HANDLE hSCManager,
764 [in] SC_ENUM_TYPE InfoLevel,
765 [in] DWORD dwServiceType,
766 [in] DWORD dwServiceState,
767 [out, size_is(cbBufSize)] LPBYTE lpBuffer,
768 [in, range(0, 1024 * 256)] DWORD cbBufSize,
769 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded,
770 [out] LPBOUNDED_DWORD_256K lpServicesReturned,
771 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeIndex,
772 [in, string, unique] LPCWSTR pszGroupName);
773
774 /* Function 43 */
775 DWORD
776 __stdcall
777 RSendTSMessage(
778 [in] handle_t BindingHandle); /* FIXME */
779
780 /* Function 44 */
781 DWORD
782 __stdcall
783 RCreateServiceWOW64A(
784 [in] handle_t BindingHandle,
785 [in, string] LPSTR lpServiceName,
786 [in, string, unique] LPSTR lpDisplayName,
787 [in] DWORD dwDesiredAccess,
788 [in] DWORD dwServiceType,
789 [in] DWORD dwStartType,
790 [in] DWORD dwErrorControl,
791 [in, string] LPSTR lpBinaryPathName,
792 [in, string, unique] LPSTR lpLoadOrderGroup,
793 [in, out, unique] LPDWORD lpdwTagId,
794 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies,
795 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize,
796 [in, string, unique] LPSTR lpServiceStartName,
797 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword,
798 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize,
799 [out] LPSC_RPC_HANDLE lpServiceHandle);
800
801 /* Function 45 */
802 DWORD
803 __stdcall
804 RCreateServiceWOW64W(
805 [in] handle_t BindingHandle,
806 [in, string] LPWSTR lpServiceName,
807 [in, string, unique] LPWSTR lpDisplayName,
808 [in] DWORD dwDesiredAccess,
809 [in] DWORD dwServiceType,
810 [in] DWORD dwStartType,
811 [in] DWORD dwErrorControl,
812 [in, string] LPWSTR lpBinaryPathName,
813 [in, string, unique] LPWSTR lpLoadOrderGroup,
814 [in, out, unique] LPDWORD lpdwTagId,
815 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies,
816 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize,
817 [in, string, unique] LPWSTR lpServiceStartName,
818 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword,
819 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize,
820 [out] LPSC_RPC_HANDLE lpServiceHandle);
821
822 /* Function 46 */
823 DWORD
824 __stdcall
825 RI_ScQueryServiceTagInfo(
826 [in] SC_RPC_HANDLE hSCManager,
827 [in] TAG_INFO_LEVEL dwInfoLevel,
828 [in] PTAG_INFO_NAME_FROM_TAG_IN_PARAMS * lpInParams,
829 [out] PTAG_INFO_NAME_FROM_TAG_OUT_PARAMS * lpOutParams);
830
831 /* Function 47 */
832 DWORD
833 __stdcall
834 RNotifyServiceStatusChange(
835 [in] SC_RPC_HANDLE hService,
836 [in] SC_RPC_NOTIFY_PARAMS NotifyParams,
837 [in] GUID* pClientProcessGuid,
838 [out] GUID* pSCMProcessGuid,
839 [out] PBOOL pfCreateRemoteQueue,
840 [out] LPSC_NOTIFY_RPC_HANDLE phNotify);
841
842 /* Function 48 */
843 DWORD
844 __stdcall
845 RGetNotifyResults(
846 [in] SC_NOTIFY_RPC_HANDLE hNotify,
847 [out] PSC_RPC_NOTIFY_PARAMS_LIST *ppNotifyParams);
848
849 /* Function 49 */
850 DWORD
851 __stdcall
852 RCloseNotifyHandle(
853 [in, out] LPSC_NOTIFY_RPC_HANDLE phNotify,
854 [out] PBOOL pfApcFired);
855
856 /* Function 50 */
857 DWORD
858 __stdcall
859 RControlServiceExA(
860 [in] SC_RPC_HANDLE hService,
861 [in] DWORD dwControl,
862 [in] DWORD dwInfoLevel/*,
863 [in, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSA pControlInParams,
864 [out, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSA pControlOutParams*/);
865
866 /* Function 51 */
867 DWORD
868 __stdcall
869 RControlServiceExW(
870 [in] SC_RPC_HANDLE hService,
871 [in] DWORD dwControl,
872 [in] DWORD dwInfoLevel/*,
873 [in, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSW pControlInParams,
874 [out, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSW pControlOutParams*/);
875
876 /* Function 52 */
877 DWORD
878 __stdcall
879 RSendPnPMessage(
880 [in] handle_t BindingHandle); /* FIXME */
881
882 /* Function 53 */
883 DWORD
884 __stdcall
885 RI_ScValidatePnPService(
886 [in] SC_RPC_HANDLE hService,
887 [in, string] LPWSTR pszServiceName,
888 [out] RPC_SERVICE_STATUS_HANDLE *phServiceStatus);
889
890 /* Function 54 */
891 DWORD
892 __stdcall
893 ROpenServiceStatusHandle(
894 [in] handle_t BindingHandle); /* FIXME */
895
896 /* Function 55 */
897 DWORD
898 __stdcall
899 RFunction55(
900 [in] handle_t BindingHandle); /* FIXME */
901}
CD3D10_BUFFER_DESC D3D10_BUFFER_DESC cpp_quote(" ~CD3D10_BUFFER_DESC() {}") operator const D3D10_BUFFER_DESC &() const
Definition: d3d10.idl:491
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLint * range
Definition: glext.h:7539
char string[160]
Definition: util.h:11
BYTE * PBYTE
Definition: pedump.c:66
SERVICE_STATUS ServiceStatus
Definition: winsvc.h:127
SERVICE_STATUS ServiceStatus
Definition: winsvc.h:132
LPWSTR lpDisplayName
Definition: winsvc.h:131
LPWSTR lpServiceName
Definition: winsvc.h:130
SERVICE_STATUS_PROCESS ServiceStatusProcess
Definition: winsvc.h:137
SERVICE_STATUS_PROCESS ServiceStatusProcess
Definition: winsvc.h:142
LPSTR lpServiceStartName
Definition: winsvc.h:152
LPWSTR lpServiceStartName
Definition: winsvc.h:163
LPWSTR lpBinaryPathName
Definition: winsvc.h:159
LPWSTR lpLoadOrderGroup
Definition: winsvc.h:160
DWORD Delay
Definition: winsvc.h:206
SC_ACTION_TYPE Type
Definition: winsvc.h:205
LPWSTR lpDescription
Definition: winsvc.h:196
SC_ACTION * lpsaActions
Definition: winsvc.h:213
SC_ACTION * lpsaActions
Definition: winsvc.h:220
DWORD dwServicesSidType
Definition: svcctl.idl:169
DWORD dwServiceSpecificExitCode
Definition: winsvc.h:112
struct _QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUSW
struct _SERVICE_DESCRIPTIONA SERVICE_DESCRIPTIONA
struct _ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESSA
struct _SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONSW
struct _ENUM_SERVICE_STATUSA * LPENUM_SERVICE_STATUSA
const unsigned short SC_MAX_ACCOUNT_NAME_LENGTH
Definition: svcctl.idl:13
struct _QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUSA
struct _ENUM_SERVICE_STATUSW * LPENUM_SERVICE_STATUSW
const unsigned short SC_MAX_COMMENT_LENGTH
Definition: svcctl.idl:14
struct _SERVICE_STATUS * LPSERVICE_STATUS
LPSTR SVCCTL_HANDLEA
Definition: svcctl.idl:18
BOUNDED_DWORD_256K * LPBOUNDED_DWORD_256K
Definition: svcctl.idl:32
const unsigned short SC_MAX_DEPEND_SIZE
Definition: svcctl.idl:8
BOUNDED_DWORD_8K * LPBOUNDED_DWORD_8K
Definition: svcctl.idl:30
struct _SERVICE_FAILURE_ACTIONSA * LPSERVICE_FAILURE_ACTIONSA
struct _SERVICE_DESCRIPTIONW SERVICE_DESCRIPTIONW
@ SC_ACTION_RUN_COMMAND
Definition: svcctl.idl:122
@ SC_ACTION_REBOOT
Definition: svcctl.idl:121
@ SC_ACTION_RESTART
Definition: svcctl.idl:120
@ SC_ACTION_NONE
Definition: svcctl.idl:119
BOUNDED_DWORD_4K * LPBOUNDED_DWORD_4K
Definition: svcctl.idl:28
struct _SC_ACTION SC_ACTION
struct _QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIGW
struct _SERVICE_DELAYED_AUTO_START_INFO SERVICE_DELAYED_AUTO_START_INFO
struct _SC_ACTION * LPSC_ACTION
struct _SERVICE_FAILURE_ACTIONS_FLAG SERVICE_FAILURE_ACTIONS_FLAG
ULONG_PTR RPC_SERVICE_STATUS_HANDLE
Definition: svcctl.idl:20
struct _ENUM_SERVICE_STATUS_PROCESSA * LPENUM_SERVICE_STATUS_PROCESSA
struct _QUERY_SERVICE_CONFIGA * LPQUERY_SERVICE_CONFIGA
struct _SERVICE_DESCRIPTIONW * LPSERVICE_DESCRIPTIONW
struct _SERVICE_DESCRIPTIONA * LPSERVICE_DESCRIPTIONA
SC_RPC_LOCK * LPSC_RPC_LOCK
Definition: svcctl.idl:24
struct _ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUSW
const unsigned short SC_MAX_PATH_LENGTH
Definition: svcctl.idl:10
struct _ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESSW
const unsigned short SC_MAX_NAME_LENGTH
Definition: svcctl.idl:9
struct _SERVICE_STATUS SERVICE_STATUS
DWORD BOUNDED_DWORD_4K
Definition: svcctl.idl:27
struct _SERVICE_RPC_REQUIRED_PRIVILEGES_INFO SERVICE_RPC_REQUIRED_PRIVILEGES_INFO
PVOID SC_RPC_LOCK
Definition: svcctl.idl:23
struct _SERVICE_SID_INFO SERVICE_SID_INFO
DWORD BOUNDED_DWORD_8K
Definition: svcctl.idl:29
const unsigned short SC_MAX_COMPUTER_NAME_LENGTH
Definition: svcctl.idl:12
struct _SERVICE_FAILURE_ACTIONS_FLAG * LPSERVICE_FAILURE_ACTIONS_FLAG
struct _SERVICE_DELAYED_AUTO_START_INFO * LPSERVICE_DELAYED_AUTO_START_INFO
struct _ENUM_SERVICE_STATUS_PROCESSW * LPENUM_SERVICE_STATUS_PROCESSW
SC_RPC_HANDLE * LPSC_RPC_HANDLE
Definition: svcctl.idl:22
LPWSTR SVCCTL_HANDLEW
Definition: svcctl.idl:19
struct _SERVICE_FAILURE_ACTIONSW * LPSERVICE_FAILURE_ACTIONSW
PVOID SC_RPC_HANDLE
Definition: svcctl.idl:21
const unsigned short SC_MAX_PWD_SIZE
Definition: svcctl.idl:11
SC_NOTIFY_RPC_HANDLE * LPSC_NOTIFY_RPC_HANDLE
Definition: svcctl.idl:26
struct _QUERY_SERVICE_LOCK_STATUSA * LPQUERY_SERVICE_LOCK_STATUSA
enum _SC_ACTION_TYPE SC_ACTION_TYPE
struct _QUERY_SERVICE_CONFIGW * LPQUERY_SERVICE_CONFIGW
struct _SERVICE_STATUS_PROCESS * LPSERVICE_STATUS_PROCESS
const unsigned short SC_MAX_ARGUMENT_LENGTH
Definition: svcctl.idl:15
const unsigned int MAX_SERVICE_NAME_LENGTH
Definition: svcctl.idl:7
DWORD BOUNDED_DWORD_256K
Definition: svcctl.idl:31
struct _SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONSA
enum _SC_ENUM_TYPE SC_ENUM_TYPE
struct _QUERY_SERVICE_LOCK_STATUSW * LPQUERY_SERVICE_LOCK_STATUSW
struct _SERVICE_SID_INFO * LPSERVICE_SID_INFO
@ SC_ENUM_PROCESS_INFO
Definition: svcctl.idl:131
PVOID SC_NOTIFY_RPC_HANDLE
Definition: svcctl.idl:25
struct _SERVICE_STATUS_PROCESS SERVICE_STATUS_PROCESS
const unsigned short SC_MAX_ARGUMENTS
Definition: svcctl.idl:16
struct _ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUSA
struct _SERVICE_RPC_REQUIRED_PRIVILEGES_INFO * LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFO
struct _QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIGA
uint32_t ULONG_PTR
Definition: typedefs.h:65
_SC_ACTION_TYPE
Definition: winsvc.h:198
enum _SC_ACTION_TYPE SC_ACTION_TYPE
_SC_ENUM_TYPE
Definition: winsvc.h:121
char * LPSTR
Definition: xmlstorage.h:182
WCHAR * LPWSTR
Definition: xmlstorage.h:184