1
{******************************************************************************}
3
{ Services API interface Unit for Object Pascal }
5
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
6
{ Corporation. All Rights Reserved. }
8
{ The original file is: winsvc.h, released June 2000. The original Pascal }
9
{ code is: WinSvc.pas, released December 2000. The initial developer of the }
10
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
12
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
13
{ Marcel van Brakel. All Rights Reserved. }
15
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
17
{ You may retrieve the latest version of this file at the Project JEDI }
18
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
20
{ The contents of this file are used with permission, subject to the Mozilla }
21
{ Public License Version 1.1 (the "License"); you may not use this file except }
22
{ in compliance with the License. You may obtain a copy of the License at }
23
{ http://www.mozilla.org/MPL/MPL-1.1.html }
25
{ Software distributed under the License is distributed on an "AS IS" basis, }
26
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
27
{ the specific language governing rights and limitations under the License. }
29
{ Alternatively, the contents of this file may be used under the terms of the }
30
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
31
{ provisions of the LGPL License are applicable instead of those above. }
32
{ If you wish to allow use of your version of this file only under the terms }
33
{ of the LGPL License and not to allow others to use your version of this file }
34
{ under the MPL, indicate your decision by deleting the provisions above and }
35
{ replace them with the notice and other provisions required by the LGPL }
36
{ License. If you do not delete the provisions above, a recipient may use }
37
{ your version of this file under either the MPL or the LGPL License. }
39
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
41
{******************************************************************************}
43
// $Id: jwawinsvc.pas,v 1.1 2005/04/04 07:56:11 marco Exp $
50
{$HPPEMIT '#include "WinSvc.h"'}
61
// Service database names
65
SERVICES_ACTIVE_DATABASEW = 'ServicesActive';
66
{$EXTERNALSYM SERVICES_ACTIVE_DATABASEW}
67
SERVICES_FAILED_DATABASEW = 'ServicesFailed';
68
{$EXTERNALSYM SERVICES_FAILED_DATABASEW}
70
SERVICES_ACTIVE_DATABASEA = 'ServicesActive';
71
{$EXTERNALSYM SERVICES_ACTIVE_DATABASEA}
72
SERVICES_FAILED_DATABASEA = 'ServicesFailed';
73
{$EXTERNALSYM SERVICES_FAILED_DATABASEA}
76
// Character to designate that a name is a group
79
SC_GROUP_IDENTIFIERW = '+';
80
{$EXTERNALSYM SC_GROUP_IDENTIFIERW}
81
SC_GROUP_IDENTIFIERA = '+';
82
{$EXTERNALSYM SC_GROUP_IDENTIFIERA}
86
SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEW;
87
{$EXTERNALSYM SERVICES_ACTIVE_DATABASE}
88
SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEW;
89
{$EXTERNALSYM SERVICES_FAILED_DATABASE}
91
SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERW;
92
{$EXTERNALSYM SC_GROUP_IDENTIFIER}
96
SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
97
{$EXTERNALSYM SERVICES_ACTIVE_DATABASE}
98
SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
99
{$EXTERNALSYM SERVICES_FAILED_DATABASE}
101
SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
102
{$EXTERNALSYM SC_GROUP_IDENTIFIER}
107
// Value to indicate no change to an optional parameter
110
SERVICE_NO_CHANGE = $ffffffff;
111
{$EXTERNALSYM SERVICE_NO_CHANGE}
114
// Service State -- for Enum Requests (Bit Mask)
117
SERVICE_ACTIVE = $00000001;
118
{$EXTERNALSYM SERVICE_ACTIVE}
119
SERVICE_INACTIVE = $00000002;
120
{$EXTERNALSYM SERVICE_INACTIVE}
121
SERVICE_STATE_ALL = SERVICE_ACTIVE or SERVICE_INACTIVE;
122
{$EXTERNALSYM SERVICE_STATE_ALL}
128
SERVICE_CONTROL_STOP = $00000001;
129
{$EXTERNALSYM SERVICE_CONTROL_STOP}
130
SERVICE_CONTROL_PAUSE = $00000002;
131
{$EXTERNALSYM SERVICE_CONTROL_PAUSE}
132
SERVICE_CONTROL_CONTINUE = $00000003;
133
{$EXTERNALSYM SERVICE_CONTROL_CONTINUE}
134
SERVICE_CONTROL_INTERROGATE = $00000004;
135
{$EXTERNALSYM SERVICE_CONTROL_INTERROGATE}
136
SERVICE_CONTROL_SHUTDOWN = $00000005;
137
{$EXTERNALSYM SERVICE_CONTROL_SHUTDOWN}
138
SERVICE_CONTROL_PARAMCHANGE = $00000006;
139
{$EXTERNALSYM SERVICE_CONTROL_PARAMCHANGE}
140
SERVICE_CONTROL_NETBINDADD = $00000007;
141
{$EXTERNALSYM SERVICE_CONTROL_NETBINDADD}
142
SERVICE_CONTROL_NETBINDREMOVE = $00000008;
143
{$EXTERNALSYM SERVICE_CONTROL_NETBINDREMOVE}
144
SERVICE_CONTROL_NETBINDENABLE = $00000009;
145
{$EXTERNALSYM SERVICE_CONTROL_NETBINDENABLE}
146
SERVICE_CONTROL_NETBINDDISABLE = $0000000A;
147
{$EXTERNALSYM SERVICE_CONTROL_NETBINDDISABLE}
148
SERVICE_CONTROL_DEVICEEVENT = $0000000B;
149
{$EXTERNALSYM SERVICE_CONTROL_DEVICEEVENT}
150
SERVICE_CONTROL_HARDWAREPROFILECHANGE = $0000000C;
151
{$EXTERNALSYM SERVICE_CONTROL_HARDWAREPROFILECHANGE}
152
SERVICE_CONTROL_POWEREVENT = $0000000D;
153
{$EXTERNALSYM SERVICE_CONTROL_POWEREVENT}
154
SERVICE_CONTROL_SESSIONCHANGE = $0000000E;
155
{$EXTERNALSYM SERVICE_CONTROL_SESSIONCHANGE}
158
// Service State -- for CurrentState
161
SERVICE_STOPPED = $00000001;
162
{$EXTERNALSYM SERVICE_STOPPED}
163
SERVICE_START_PENDING = $00000002;
164
{$EXTERNALSYM SERVICE_START_PENDING}
165
SERVICE_STOP_PENDING = $00000003;
166
{$EXTERNALSYM SERVICE_STOP_PENDING}
167
SERVICE_RUNNING = $00000004;
168
{$EXTERNALSYM SERVICE_RUNNING}
169
SERVICE_CONTINUE_PENDING = $00000005;
170
{$EXTERNALSYM SERVICE_CONTINUE_PENDING}
171
SERVICE_PAUSE_PENDING = $00000006;
172
{$EXTERNALSYM SERVICE_PAUSE_PENDING}
173
SERVICE_PAUSED = $00000007;
174
{$EXTERNALSYM SERVICE_PAUSED}
177
// Controls Accepted (Bit Mask)
180
SERVICE_ACCEPT_STOP = $00000001;
181
{$EXTERNALSYM SERVICE_ACCEPT_STOP}
182
SERVICE_ACCEPT_PAUSE_CONTINUE = $00000002;
183
{$EXTERNALSYM SERVICE_ACCEPT_PAUSE_CONTINUE}
184
SERVICE_ACCEPT_SHUTDOWN = $00000004;
185
{$EXTERNALSYM SERVICE_ACCEPT_SHUTDOWN}
186
SERVICE_ACCEPT_PARAMCHANGE = $00000008;
187
{$EXTERNALSYM SERVICE_ACCEPT_PARAMCHANGE}
188
SERVICE_ACCEPT_NETBINDCHANGE = $00000010;
189
{$EXTERNALSYM SERVICE_ACCEPT_NETBINDCHANGE}
190
SERVICE_ACCEPT_HARDWAREPROFILECHANGE = $00000020;
191
{$EXTERNALSYM SERVICE_ACCEPT_HARDWAREPROFILECHANGE}
192
SERVICE_ACCEPT_POWEREVENT = $00000040;
193
{$EXTERNALSYM SERVICE_ACCEPT_POWEREVENT}
194
SERVICE_ACCEPT_SESSIONCHANGE = $00000080;
195
{$EXTERNALSYM SERVICE_ACCEPT_SESSIONCHANGE}
198
// Service Control Manager object specific access types
201
SC_MANAGER_CONNECT = $0001;
202
{$EXTERNALSYM SC_MANAGER_CONNECT}
203
SC_MANAGER_CREATE_SERVICE = $0002;
204
{$EXTERNALSYM SC_MANAGER_CREATE_SERVICE}
205
SC_MANAGER_ENUMERATE_SERVICE = $0004;
206
{$EXTERNALSYM SC_MANAGER_ENUMERATE_SERVICE}
207
SC_MANAGER_LOCK = $0008;
208
{$EXTERNALSYM SC_MANAGER_LOCK}
209
SC_MANAGER_QUERY_LOCK_STATUS = $0010;
210
{$EXTERNALSYM SC_MANAGER_QUERY_LOCK_STATUS}
211
SC_MANAGER_MODIFY_BOOT_CONFIG = $0020;
212
{$EXTERNALSYM SC_MANAGER_MODIFY_BOOT_CONFIG}
214
SC_MANAGER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
215
SC_MANAGER_CONNECT or
216
SC_MANAGER_CREATE_SERVICE or
217
SC_MANAGER_ENUMERATE_SERVICE or
219
SC_MANAGER_QUERY_LOCK_STATUS or
220
SC_MANAGER_MODIFY_BOOT_CONFIG;
221
{$EXTERNALSYM SC_MANAGER_ALL_ACCESS}
224
// Service object specific access type
227
SERVICE_QUERY_CONFIG = $0001;
228
{$EXTERNALSYM SERVICE_QUERY_CONFIG}
229
SERVICE_CHANGE_CONFIG = $0002;
230
{$EXTERNALSYM SERVICE_CHANGE_CONFIG}
231
SERVICE_QUERY_STATUS = $0004;
232
{$EXTERNALSYM SERVICE_QUERY_STATUS}
233
SERVICE_ENUMERATE_DEPENDENTS = $0008;
234
{$EXTERNALSYM SERVICE_ENUMERATE_DEPENDENTS}
235
SERVICE_START = $0010;
236
{$EXTERNALSYM SERVICE_START}
237
SERVICE_STOP = $0020;
238
{$EXTERNALSYM SERVICE_STOP}
239
SERVICE_PAUSE_CONTINUE = $0040;
240
{$EXTERNALSYM SERVICE_PAUSE_CONTINUE}
241
SERVICE_INTERROGATE = $0080;
242
{$EXTERNALSYM SERVICE_INTERROGATE}
243
SERVICE_USER_DEFINED_CONTROL = $0100;
244
{$EXTERNALSYM SERVICE_USER_DEFINED_CONTROL}
246
SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
247
SERVICE_QUERY_CONFIG or
248
SERVICE_CHANGE_CONFIG or
249
SERVICE_QUERY_STATUS or
250
SERVICE_ENUMERATE_DEPENDENTS or
253
SERVICE_PAUSE_CONTINUE or
254
SERVICE_INTERROGATE or
255
SERVICE_USER_DEFINED_CONTROL;
256
{$EXTERNALSYM SERVICE_ALL_ACCESS}
259
// Service flags for QueryServiceStatusEx
262
SERVICE_RUNS_IN_SYSTEM_PROCESS = $00000001;
263
{$EXTERNALSYM SERVICE_RUNS_IN_SYSTEM_PROCESS}
266
// Info levels for ChangeServiceConfig2 and QueryServiceConfig2
269
SERVICE_CONFIG_DESCRIPTION = 1;
270
{$EXTERNALSYM SERVICE_CONFIG_DESCRIPTION}
271
SERVICE_CONFIG_FAILURE_ACTIONS = 2;
272
{$EXTERNALSYM SERVICE_CONFIG_FAILURE_ACTIONS}
275
// Service description string
279
LPSERVICE_DESCRIPTIONA = ^SERVICE_DESCRIPTIONA;
280
{$EXTERNALSYM LPSERVICE_DESCRIPTIONA}
281
_SERVICE_DESCRIPTIONA = record
282
lpDescription: LPSTR;
284
{$EXTERNALSYM _SERVICE_DESCRIPTIONA}
285
SERVICE_DESCRIPTIONA = _SERVICE_DESCRIPTIONA;
286
{$EXTERNALSYM SERVICE_DESCRIPTIONA}
287
TServiceDescriptionA = SERVICE_DESCRIPTIONA;
288
PServiceDescriptionA = LPSERVICE_DESCRIPTIONA;
291
// Service description string
294
LPSERVICE_DESCRIPTIONW = ^SERVICE_DESCRIPTIONW;
295
{$EXTERNALSYM LPSERVICE_DESCRIPTIONW}
296
_SERVICE_DESCRIPTIONW = record
297
lpDescription: LPWSTR;
299
{$EXTERNALSYM _SERVICE_DESCRIPTIONW}
300
SERVICE_DESCRIPTIONW = _SERVICE_DESCRIPTIONW;
301
{$EXTERNALSYM SERVICE_DESCRIPTIONW}
302
TServiceDescriptionW = SERVICE_DESCRIPTIONW;
303
PServiceDescriptionW = LPSERVICE_DESCRIPTIONW;
306
SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONW;
307
{$EXTERNALSYM SERVICE_DESCRIPTION}
308
LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONW;
309
{$EXTERNALSYM LPSERVICE_DESCRIPTION}
310
TServiceDescription = TServiceDescriptionW;
311
PServiceDescription = PServiceDescriptionW;
313
SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONA;
314
{$EXTERNALSYM SERVICE_DESCRIPTION}
315
LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONA;
316
{$EXTERNALSYM LPSERVICE_DESCRIPTION}
317
TServiceDescription = TServiceDescriptionA;
318
PServiceDescription = PServiceDescriptionA;
322
// Actions to take on service failure
325
_SC_ACTION_TYPE = (SC_ACTION_NONE, SC_ACTION_RESTART, SC_ACTION_REBOOT,
326
SC_ACTION_RUN_COMMAND);
327
{$EXTERNALSYM _SC_ACTION_TYPE}
328
SC_ACTION_TYPE = _SC_ACTION_TYPE;
329
{$EXTERNALSYM SC_ACTION_TYPE}
330
TScActionType = _SC_ACTION_TYPE;
332
LPSC_ACTION = ^SC_ACTION;
333
{$EXTERNALSYM LPSC_ACTION}
335
Type_: SC_ACTION_TYPE;
338
{$EXTERNALSYM _SC_ACTION}
339
SC_ACTION = _SC_ACTION;
340
{$EXTERNALSYM SC_ACTION}
341
TScAction = SC_ACTION;
342
PScAction = LPSC_ACTION;
344
LPSERVICE_FAILURE_ACTIONSA = ^SERVICE_FAILURE_ACTIONSA;
345
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONSA}
346
_SERVICE_FAILURE_ACTIONSA = record
347
dwResetPeriod: DWORD;
351
lpsaActions: LPSC_ACTION;
353
{$EXTERNALSYM _SERVICE_FAILURE_ACTIONSA}
354
SERVICE_FAILURE_ACTIONSA = _SERVICE_FAILURE_ACTIONSA;
355
{$EXTERNALSYM SERVICE_FAILURE_ACTIONSA}
356
TServiceFailureActionsA = SERVICE_FAILURE_ACTIONSA;
357
PServiceFailureActionsA = LPSERVICE_FAILURE_ACTIONSA;
359
LPSERVICE_FAILURE_ACTIONSW = ^SERVICE_FAILURE_ACTIONSW;
360
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONSW}
361
_SERVICE_FAILURE_ACTIONSW = record
362
dwResetPeriod: DWORD;
366
lpsaActions: LPSC_ACTION;
368
{$EXTERNALSYM _SERVICE_FAILURE_ACTIONSW}
369
SERVICE_FAILURE_ACTIONSW = _SERVICE_FAILURE_ACTIONSW;
370
{$EXTERNALSYM SERVICE_FAILURE_ACTIONSW}
371
TServiceFailureActionsW = SERVICE_FAILURE_ACTIONSW;
372
PServiceFailureActionsW = LPSERVICE_FAILURE_ACTIONSW;
375
SERVICE_FAILURE_ACTIONS = SERVICE_FAILURE_ACTIONSW;
376
{$EXTERNALSYM SERVICE_FAILURE_ACTIONS}
377
LPSERVICE_FAILURE_ACTIONS = LPSERVICE_FAILURE_ACTIONSW;
378
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONS}
379
TServiceFailureActions = TServiceFailureActionsW;
380
PServiceFailureActions = PServiceFailureActionsW;
382
SERVICE_FAILURE_ACTIONS = SERVICE_FAILURE_ACTIONSA;
383
{$EXTERNALSYM SERVICE_FAILURE_ACTIONS}
384
LPSERVICE_FAILURE_ACTIONS = LPSERVICE_FAILURE_ACTIONSA;
385
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONS}
386
TServiceFailureActions = TServiceFailureActionsA;
387
PServiceFailureActions = PServiceFailureActionsA;
395
{$EXTERNALSYM SC_HANDLE}
396
LPSC_HANDLE = ^SC_HANDLE;
397
{$EXTERNALSYM LPSC_HANDLE}
399
SERVICE_STATUS_HANDLE = HANDLE;
400
{$EXTERNALSYM SERVICE_STATUS_HANDLE}
403
// Info levels for QueryServiceStatusEx
406
_SC_STATUS_TYPE = (SC_STATUS_PROCESS_INFO);
407
{$EXTERNALSYM _SC_STATUS_TYPE}
408
SC_STATUS_TYPE = _SC_STATUS_TYPE;
409
{$EXTERNALSYM SC_STATUS_TYPE}
412
// Info levels for EnumServicesStatusEx
415
_SC_ENUM_TYPE = (SC_ENUM_PROCESS_INFO);
416
{$EXTERNALSYM _SC_ENUM_TYPE}
417
SC_ENUM_TYPE = _SC_ENUM_TYPE;
418
{$EXTERNALSYM SC_ENUM_TYPE}
421
// Service Status Structures
424
LPSERVICE_STATUS = ^SERVICE_STATUS;
425
{$EXTERNALSYM LPSERVICE_STATUS}
426
_SERVICE_STATUS = record
427
dwServiceType: DWORD;
428
dwCurrentState: DWORD;
429
dwControlsAccepted: DWORD;
430
dwWin32ExitCode: DWORD;
431
dwServiceSpecificExitCode: DWORD;
435
{$EXTERNALSYM _SERVICE_STATUS}
436
SERVICE_STATUS = _SERVICE_STATUS;
437
{$EXTERNALSYM SERVICE_STATUS}
438
TServiceStatus = SERVICE_STATUS;
439
PServiceStatus = LPSERVICE_STATUS;
441
LPSERVICE_STATUS_PROCESS = ^SERVICE_STATUS_PROCESS;
442
{$EXTERNALSYM LPSERVICE_STATUS_PROCESS}
443
_SERVICE_STATUS_PROCESS = record
444
dwServiceType: DWORD;
445
dwCurrentState: DWORD;
446
dwControlsAccepted: DWORD;
447
dwWin32ExitCode: DWORD;
448
dwServiceSpecificExitCode: DWORD;
452
dwServiceFlags: DWORD;
454
{$EXTERNALSYM _SERVICE_STATUS_PROCESS}
455
SERVICE_STATUS_PROCESS = _SERVICE_STATUS_PROCESS;
456
{$EXTERNALSYM SERVICE_STATUS_PROCESS}
457
TServiceStatusProcess = SERVICE_STATUS_PROCESS;
458
PServiceStatusProcess = LPSERVICE_STATUS_PROCESS;
461
// Service Status Enumeration Structure
464
LPENUM_SERVICE_STATUSA = ^ENUM_SERVICE_STATUSA;
465
{$EXTERNALSYM LPENUM_SERVICE_STATUSA}
466
_ENUM_SERVICE_STATUSA = record
467
lpServiceName: LPSTR;
468
lpDisplayName: LPSTR;
469
ServiceStatus: SERVICE_STATUS;
471
{$EXTERNALSYM _ENUM_SERVICE_STATUSA}
472
ENUM_SERVICE_STATUSA = _ENUM_SERVICE_STATUSA;
473
{$EXTERNALSYM ENUM_SERVICE_STATUSA}
474
TEnumServiceStatusA = ENUM_SERVICE_STATUSA;
475
PEnumServiceStatusA = LPENUM_SERVICE_STATUSA;
477
LPENUM_SERVICE_STATUSW = ^ENUM_SERVICE_STATUSW;
478
{$EXTERNALSYM LPENUM_SERVICE_STATUSW}
479
_ENUM_SERVICE_STATUSW = record
480
lpServiceName: LPWSTR;
481
lpDisplayName: LPWSTR;
482
ServiceStatus: SERVICE_STATUS;
484
{$EXTERNALSYM _ENUM_SERVICE_STATUSW}
485
ENUM_SERVICE_STATUSW = _ENUM_SERVICE_STATUSW;
486
{$EXTERNALSYM ENUM_SERVICE_STATUSW}
487
TEnumServiceStatusW = ENUM_SERVICE_STATUSW;
488
PEnumServiceStatusW = LPENUM_SERVICE_STATUSW;
491
ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSW;
492
{$EXTERNALSYM ENUM_SERVICE_STATUS}
493
LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSW;
494
{$EXTERNALSYM LPENUM_SERVICE_STATUS}
495
TEnumServiceStatus = TEnumServiceStatusW;
496
PEnumServiceStatus = PEnumServiceStatusW;
498
ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSA;
499
{$EXTERNALSYM ENUM_SERVICE_STATUS}
500
LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSA;
501
{$EXTERNALSYM LPENUM_SERVICE_STATUS}
502
TEnumServiceStatus = TEnumServiceStatusA;
503
PEnumServiceStatus = PEnumServiceStatusA;
506
LPENUM_SERVICE_STATUS_PROCESSA = ^ENUM_SERVICE_STATUS_PROCESSA;
507
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESSA}
508
_ENUM_SERVICE_STATUS_PROCESSA = record
509
lpServiceName: LPSTR;
510
lpDisplayName: LPSTR;
511
ServiceStatusProcess: SERVICE_STATUS_PROCESS;
513
{$EXTERNALSYM _ENUM_SERVICE_STATUS_PROCESSA}
514
ENUM_SERVICE_STATUS_PROCESSA = _ENUM_SERVICE_STATUS_PROCESSA;
515
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESSA}
516
TEnumServiceStatusProcessA = ENUM_SERVICE_STATUS_PROCESSA;
517
PEnumServiceStatusProcessA = LPENUM_SERVICE_STATUS_PROCESSA;
519
LPENUM_SERVICE_STATUS_PROCESSW = ^ENUM_SERVICE_STATUS_PROCESSW;
520
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESSW}
521
_ENUM_SERVICE_STATUS_PROCESSW = record
522
lpServiceName: LPWSTR;
523
lpDisplayName: LPWSTR;
524
ServiceStatusProcess: SERVICE_STATUS_PROCESS;
526
{$EXTERNALSYM _ENUM_SERVICE_STATUS_PROCESSW}
527
ENUM_SERVICE_STATUS_PROCESSW = _ENUM_SERVICE_STATUS_PROCESSW;
528
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESSW}
529
TEnumServiceStatusProcessW = ENUM_SERVICE_STATUS_PROCESSW;
530
PEnumServiceStatusProcessW = LPENUM_SERVICE_STATUS_PROCESSW;
533
ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSW;
534
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESS}
535
LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSW;
536
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESS}
537
TEnumServiceStatusProcess = TEnumServiceStatusProcessW;
538
PEnumServiceStatusProcess = PEnumServiceStatusProcessW;
540
ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSA;
541
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESS}
542
LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSA;
543
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESS}
544
TEnumServiceStatusProcess = TEnumServiceStatusProcessA;
545
PEnumServiceStatusProcess = PEnumServiceStatusProcessA;
549
// Structures for the Lock API functions
553
{$EXTERNALSYM SC_LOCK}
555
LPQUERY_SERVICE_LOCK_STATUSA = ^QUERY_SERVICE_LOCK_STATUSA;
556
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUSA}
557
_QUERY_SERVICE_LOCK_STATUSA = record
560
dwLockDuration: DWORD;
562
{$EXTERNALSYM _QUERY_SERVICE_LOCK_STATUSA}
563
QUERY_SERVICE_LOCK_STATUSA = _QUERY_SERVICE_LOCK_STATUSA;
564
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUSA}
565
TQueryServiceLockStatusA = QUERY_SERVICE_LOCK_STATUSA;
566
PQueryServiceLockStatusA = LPQUERY_SERVICE_LOCK_STATUSA;
568
LPQUERY_SERVICE_LOCK_STATUSW = ^QUERY_SERVICE_LOCK_STATUSW;
569
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUSW}
570
_QUERY_SERVICE_LOCK_STATUSW = record
573
dwLockDuration: DWORD;
575
{$EXTERNALSYM _QUERY_SERVICE_LOCK_STATUSW}
576
QUERY_SERVICE_LOCK_STATUSW = _QUERY_SERVICE_LOCK_STATUSW;
577
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUSW}
578
TQueryServiceLockStatusW = QUERY_SERVICE_LOCK_STATUSW;
579
PQueryServiceLockStatusW = LPQUERY_SERVICE_LOCK_STATUSW;
582
QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSW;
583
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUS}
584
LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSW;
585
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUS}
586
TQueryServiceLockStatus = TQueryServiceLockStatusW;
587
PQueryServiceLockStatus = PQueryServiceLockStatusW;
589
QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSA;
590
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUS}
591
LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSA;
592
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUS}
593
TQueryServiceLockStatus = TQueryServiceLockStatusA;
594
PQueryServiceLockStatus = PQueryServiceLockStatusA;
598
// Query Service Configuration Structure
601
LPQUERY_SERVICE_CONFIGA = ^QUERY_SERVICE_CONFIGA;
602
{$EXTERNALSYM LPQUERY_SERVICE_CONFIGA}
603
_QUERY_SERVICE_CONFIGA = record
604
dwServiceType: DWORD;
606
dwErrorControl: DWORD;
607
lpBinaryPathName: LPSTR;
608
lpLoadOrderGroup: LPSTR;
610
lpDependencies: LPSTR;
611
lpServiceStartName: LPSTR;
612
lpDisplayName: LPSTR;
614
{$EXTERNALSYM _QUERY_SERVICE_CONFIGA}
615
QUERY_SERVICE_CONFIGA = _QUERY_SERVICE_CONFIGA;
616
{$EXTERNALSYM QUERY_SERVICE_CONFIGA}
617
TQueryServiceConfigA = QUERY_SERVICE_CONFIGA;
618
PQueryServiceConfigA = LPQUERY_SERVICE_CONFIGA;
620
LPQUERY_SERVICE_CONFIGW = ^QUERY_SERVICE_CONFIGW;
621
{$EXTERNALSYM LPQUERY_SERVICE_CONFIGW}
622
_QUERY_SERVICE_CONFIGW = record
623
dwServiceType: DWORD;
625
dwErrorControl: DWORD;
626
lpBinaryPathName: LPWSTR;
627
lpLoadOrderGroup: LPWSTR;
629
lpDependencies: LPWSTR;
630
lpServiceStartName: LPWSTR;
631
lpDisplayName: LPWSTR;
633
{$EXTERNALSYM _QUERY_SERVICE_CONFIGW}
634
QUERY_SERVICE_CONFIGW = _QUERY_SERVICE_CONFIGW;
635
{$EXTERNALSYM QUERY_SERVICE_CONFIGW}
636
TQueryServiceConfigW = QUERY_SERVICE_CONFIGW;
637
PQueryServiceConfigW = LPQUERY_SERVICE_CONFIGW;
640
QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGW;
641
{$EXTERNALSYM QUERY_SERVICE_CONFIG}
642
LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGW;
643
{$EXTERNALSYM LPQUERY_SERVICE_CONFIG}
644
TQueryServiceConfig = TQueryServiceConfigW;
645
PQueryServiceConfig = PQueryServiceConfigW;
647
QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGA;
648
{$EXTERNALSYM QUERY_SERVICE_CONFIG}
649
LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGA;
650
{$EXTERNALSYM LPQUERY_SERVICE_CONFIG}
651
TQueryServiceConfig = TQueryServiceConfigA;
652
PQueryServiceConfig = PQueryServiceConfigA;
656
// Function Prototype for the Service Main Function
660
LPSERVICE_MAIN_FUNCTIONW = procedure(dwNumServicesArgs: DWORD;
661
lpServiceArgVectors: LPWSTR); stdcall;
662
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTIONW}
663
LPSERVICE_MAIN_FUNCTIONA = procedure(dwNumServicesArgs: DWORD;
664
lpServiceArgVectors: LPSTR); stdcall;
665
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTIONA}
667
TServiceMainFunctionA = LPSERVICE_MAIN_FUNCTIONA;
668
TServiceMainFunctionW = LPSERVICE_MAIN_FUNCTIONW;
671
LPSERVICE_MAIN_FUNCTION = LPSERVICE_MAIN_FUNCTIONW;
672
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTION}
673
TServiceMainFunction = LPSERVICE_MAIN_FUNCTIONW;
675
LPSERVICE_MAIN_FUNCTION = LPSERVICE_MAIN_FUNCTIONA;
676
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTION}
677
TServiceMainFunction = LPSERVICE_MAIN_FUNCTIONA;
681
// Service Start Table
684
LPSERVICE_TABLE_ENTRYA = ^SERVICE_TABLE_ENTRYA;
685
{$EXTERNALSYM LPSERVICE_TABLE_ENTRYA}
686
_SERVICE_TABLE_ENTRYA = record
687
lpServiceName: LPSTR;
688
lpServiceProc: LPSERVICE_MAIN_FUNCTIONA;
690
{$EXTERNALSYM _SERVICE_TABLE_ENTRYA}
691
SERVICE_TABLE_ENTRYA = _SERVICE_TABLE_ENTRYA;
692
{$EXTERNALSYM SERVICE_TABLE_ENTRYA}
693
TServiceTableEntryA = SERVICE_TABLE_ENTRYA;
694
PServiceTableEntryA = LPSERVICE_TABLE_ENTRYA;
696
LPSERVICE_TABLE_ENTRYW = ^SERVICE_TABLE_ENTRYW;
697
{$EXTERNALSYM LPSERVICE_TABLE_ENTRYW}
698
_SERVICE_TABLE_ENTRYW = record
699
lpServiceName: LPWSTR;
700
lpServiceProc: LPSERVICE_MAIN_FUNCTIONW;
702
{$EXTERNALSYM _SERVICE_TABLE_ENTRYW}
703
SERVICE_TABLE_ENTRYW = _SERVICE_TABLE_ENTRYW;
704
{$EXTERNALSYM SERVICE_TABLE_ENTRYW}
705
TServiceTableEntryW = SERVICE_TABLE_ENTRYW;
706
PServiceTableEntryW = LPSERVICE_TABLE_ENTRYW;
709
SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYW;
710
LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYW;
711
TServiceTableEntry = TServiceTableEntryW;
712
PServiceTableEntry = PServiceTableEntryW;
714
SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYA;
715
LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYA;
716
TServiceTableEntry = TServiceTableEntryA;
717
PServiceTableEntry = PServiceTableEntryA;
721
// Prototype for the Service Control Handler Function
724
LPHANDLER_FUNCTION = procedure(dwControl: DWORD); stdcall;
725
{$EXTERNALSYM LPHANDLER_FUNCTION}
726
THandlerFunction = LPHANDLER_FUNCTION;
728
LPHANDLER_FUNCTION_EX = function(dwControl, dwEventType: DWORD;
729
lpEventData, lpContext: LPVOID): DWORD; stdcall;
730
{$EXTERNALSYM LPHANDLER_FUNCTION_EX}
731
THandlerFunctionEx = LPHANDLER_FUNCTION_EX;
733
///////////////////////////////////////////////////////////////////////////
734
// API Function Prototypes
735
///////////////////////////////////////////////////////////////////////////
737
function ChangeServiceConfigA(hService: SC_HANDLE; dwServiceType, dwStartType,
738
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCSTR;
739
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
740
lpDisplayName: LPCSTR): BOOL; stdcall;
741
{$EXTERNALSYM ChangeServiceConfigA}
742
function ChangeServiceConfigW(hService: SC_HANDLE; dwServiceType, dwStartType,
743
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCWSTR;
744
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
745
lpDisplayName: LPCWSTR): BOOL; stdcall;
746
{$EXTERNALSYM ChangeServiceConfigW}
747
function ChangeServiceConfig(hService: SC_HANDLE; dwServiceType, dwStartType,
748
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCTSTR;
749
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
750
lpDisplayName: LPCTSTR): BOOL; stdcall;
751
{$EXTERNALSYM ChangeServiceConfig}
753
function ChangeServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWORD;
754
lpInfo: LPVOID): BOOL; stdcall;
755
{$EXTERNALSYM ChangeServiceConfig2A}
756
function ChangeServiceConfig2W(hService: SC_HANDLE; dwInfoLevel: DWORD;
757
lpInfo: LPVOID): BOOL; stdcall;
758
{$EXTERNALSYM ChangeServiceConfig2W}
759
function ChangeServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWORD;
760
lpInfo: LPVOID): BOOL; stdcall;
761
{$EXTERNALSYM ChangeServiceConfig2}
763
function CloseServiceHandle(hSCObject: SC_HANDLE): BOOL; stdcall;
764
{$EXTERNALSYM CloseServiceHandle}
766
function ControlService(hService: SC_HANDLE; dwControl: DWORD;
767
var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
768
{$EXTERNALSYM ControlService}
770
function CreateServiceA(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCSTR;
771
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
772
lpBinaryPathName, lpLoadOrderGroup: LPCSTR; lpdwTagId: LPDWORD;
773
lpDependencies, lpServiceStartName, lpPassword: LPCSTR): SC_HANDLE; stdcall;
774
{$EXTERNALSYM CreateServiceA}
775
function CreateServiceW(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCWSTR;
776
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
777
lpBinaryPathName, lpLoadOrderGroup: LPCWSTR; lpdwTagId: LPDWORD;
778
lpDependencies, lpServiceStartName, lpPassword: LPCWSTR): SC_HANDLE; stdcall;
779
{$EXTERNALSYM CreateServiceW}
780
function CreateService(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCTSTR;
781
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
782
lpBinaryPathName, lpLoadOrderGroup: LPCTSTR; lpdwTagId: LPDWORD;
783
lpDependencies, lpServiceStartName, lpPassword: LPCTSTR): SC_HANDLE; stdcall;
784
{$EXTERNALSYM CreateService}
786
function DeleteService(hService: SC_HANDLE): BOOL; stdcall;
787
{$EXTERNALSYM DeleteService}
789
function EnumDependentServicesA(hService: SC_HANDLE; dwServiceState: DWORD;
790
lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD; var pcbBytesNeeded,
791
lpServicesReturned: DWORD): BOOL; stdcall;
792
{$EXTERNALSYM EnumDependentServicesA}
793
function EnumDependentServicesW(hService: SC_HANDLE; dwServiceState: DWORD;
794
lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD; var pcbBytesNeeded,
795
lpServicesReturned: DWORD): BOOL; stdcall;
796
{$EXTERNALSYM EnumDependentServicesW}
797
function EnumDependentServices(hService: SC_HANDLE; dwServiceState: DWORD;
798
lpServices: LPENUM_SERVICE_STATUS; cbBufSize: DWORD; var pcbBytesNeeded,
799
lpServicesReturned: DWORD): BOOL; stdcall;
800
{$EXTERNALSYM EnumDependentServices}
802
function EnumServicesStatusA(hSCManager: SC_HANDLE; dwServiceType: DWORD;
803
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD;
804
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
805
{$EXTERNALSYM EnumServicesStatusA}
806
function EnumServicesStatusW(hSCManager: SC_HANDLE; dwServiceType: DWORD;
807
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD;
808
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
809
{$EXTERNALSYM EnumServicesStatusW}
810
function EnumServicesStatus(hSCManager: SC_HANDLE; dwServiceType: DWORD;
811
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUS; cbBufSize: DWORD;
812
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
813
{$EXTERNALSYM EnumServicesStatus}
815
function EnumServicesStatusExA(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
816
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
817
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
818
pszGroupName: LPCSTR): BOOL; stdcall;
819
{$EXTERNALSYM EnumServicesStatusExA}
820
function EnumServicesStatusExW(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
821
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
822
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
823
pszGroupName: LPCWSTR): BOOL; stdcall;
824
{$EXTERNALSYM EnumServicesStatusExW}
825
function EnumServicesStatusEx(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
826
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
827
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
828
pszGroupName: LPCTSTR): BOOL; stdcall;
829
{$EXTERNALSYM EnumServicesStatusEx}
831
function GetServiceKeyNameA(hSCManager: SC_HANDLE; lpDisplayName: LPCSTR;
832
lpServiceName: LPSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
833
{$EXTERNALSYM GetServiceKeyNameA}
834
function GetServiceKeyNameW(hSCManager: SC_HANDLE; lpDisplayName: LPCWSTR;
835
lpServiceName: LPWSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
836
{$EXTERNALSYM GetServiceKeyNameW}
837
function GetServiceKeyName(hSCManager: SC_HANDLE; lpDisplayName: LPCTSTR;
838
lpServiceName: LPTSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
839
{$EXTERNALSYM GetServiceKeyName}
841
function GetServiceDisplayNameA(hSCManager: SC_HANDLE; lpServiceName: LPCSTR;
842
lpDisplayName: LPSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
843
{$EXTERNALSYM GetServiceDisplayNameA}
844
function GetServiceDisplayNameW(hSCManager: SC_HANDLE; lpServiceName: LPCWSTR;
845
lpDisplayName: LPWSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
846
{$EXTERNALSYM GetServiceDisplayNameW}
847
function GetServiceDisplayName(hSCManager: SC_HANDLE; lpServiceName: LPCTSTR;
848
lpDisplayName: LPTSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
849
{$EXTERNALSYM GetServiceDisplayName}
851
function LockServiceDatabase(hSCManager: SC_HANDLE): SC_LOCK; stdcall;
852
{$EXTERNALSYM LockServiceDatabase}
854
function NotifyBootConfigStatus(BootAcceptable: BOOL): BOOL; stdcall;
855
{$EXTERNALSYM NotifyBootConfigStatus}
857
function OpenSCManagerA(lpMachineName: LPCSTR; lpDatabaseName: LPCSTR;
858
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
859
{$EXTERNALSYM OpenSCManagerA}
860
function OpenSCManagerW(lpMachineName: LPCWSTR; lpDatabaseName: LPCWSTR;
861
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
862
{$EXTERNALSYM OpenSCManagerW}
863
function OpenSCManager(lpMachineName: LPCTSTR; lpDatabaseName: LPCTSTR;
864
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
865
{$EXTERNALSYM OpenSCManager}
867
function OpenServiceA(hSCManager: SC_HANDLE; lpServiceName: LPCSTR;
868
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
869
{$EXTERNALSYM OpenServiceA}
870
function OpenServiceW(hSCManager: SC_HANDLE; lpServiceName: LPCWSTR;
871
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
872
{$EXTERNALSYM OpenServiceW}
873
function OpenService(hSCManager: SC_HANDLE; lpServiceName: LPCTSTR;
874
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
875
{$EXTERNALSYM OpenService}
877
function QueryServiceConfigA(hService: SC_HANDLE;
878
lpServiceConfig: LPQUERY_SERVICE_CONFIGA; cbBufSize: DWORD;
879
var pcbBytesNeeded: DWORD): BOOL; stdcall;
880
{$EXTERNALSYM QueryServiceConfigA}
881
function QueryServiceConfigW(hService: SC_HANDLE;
882
lpServiceConfig: LPQUERY_SERVICE_CONFIGW; cbBufSize: DWORD;
883
var pcbBytesNeeded: DWORD): BOOL; stdcall;
884
{$EXTERNALSYM QueryServiceConfigW}
885
function QueryServiceConfig(hService: SC_HANDLE;
886
lpServiceConfig: LPQUERY_SERVICE_CONFIG; cbBufSize: DWORD;
887
var pcbBytesNeeded: DWORD): BOOL; stdcall;
888
{$EXTERNALSYM QueryServiceConfig}
890
function QueryServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWORD;
891
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
892
{$EXTERNALSYM QueryServiceConfig2A}
893
function QueryServiceConfig2W(hService: SC_HANDLE; dwInfoLevel: DWORD;
894
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
895
{$EXTERNALSYM QueryServiceConfig2W}
896
function QueryServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWORD;
897
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
898
{$EXTERNALSYM QueryServiceConfig2}
900
function QueryServiceLockStatusA(hSCManager: SC_HANDLE;
901
lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSA; cbBufSize: DWORD;
902
var pcbBytesNeeded: DWORD): BOOL; stdcall;
903
{$EXTERNALSYM QueryServiceLockStatusA}
904
function QueryServiceLockStatusW(hSCManager: SC_HANDLE;
905
lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSW; cbBufSize: DWORD;
906
var pcbBytesNeeded: DWORD): BOOL; stdcall;
907
{$EXTERNALSYM QueryServiceLockStatusW}
908
function QueryServiceLockStatus(hSCManager: SC_HANDLE;
909
lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS; cbBufSize: DWORD;
910
var pcbBytesNeeded: DWORD): BOOL; stdcall;
911
{$EXTERNALSYM QueryServiceLockStatus}
913
function QueryServiceObjectSecurity(hService: SC_HANDLE;
914
dwSecurityInformation: SECURITY_INFORMATION;
915
var lpSecurityDescriptor: SECURITY_DESCRIPTOR; cbBufSize: DWORD;
916
var pcbBytesNeeded: DWORD): BOOL; stdcall;
917
{$EXTERNALSYM QueryServiceObjectSecurity}
919
function QueryServiceStatus(hService: SC_HANDLE;
920
var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
921
{$EXTERNALSYM QueryServiceStatus}
923
function QueryServiceStatusEx(hService: SC_HANDLE; InfoLevel: SC_STATUS_TYPE;
924
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
925
{$EXTERNALSYM QueryServiceStatusEx}
927
function RegisterServiceCtrlHandlerA(lpServiceName: LPCSTR;
928
lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE; stdcall;
929
{$EXTERNALSYM RegisterServiceCtrlHandlerA}
930
function RegisterServiceCtrlHandlerW(lpServiceName: LPCWSTR;
931
lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE; stdcall;
932
{$EXTERNALSYM RegisterServiceCtrlHandlerW}
933
function RegisterServiceCtrlHandler(lpServiceName: LPCTSTR;
934
lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE; stdcall;
935
{$EXTERNALSYM RegisterServiceCtrlHandler}
937
function RegisterServiceCtrlHandlerExA(lpServiceName: LPCSTR;
938
lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;
939
{$EXTERNALSYM RegisterServiceCtrlHandlerExA}
940
function RegisterServiceCtrlHandlerExW(lpServiceName: LPCWSTR;
941
lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;
942
{$EXTERNALSYM RegisterServiceCtrlHandlerExW}
943
function RegisterServiceCtrlHandlerEx(lpServiceName: LPCTSTR;
944
lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;
945
{$EXTERNALSYM RegisterServiceCtrlHandlerEx}
947
// 9/4/2002 Changed last parameter from const to pointer - reported by James Ots.
949
function SetServiceObjectSecurity(hService: SC_HANDLE;
950
dwSecurityInformation: SECURITY_INFORMATION;
951
lpSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
952
{$EXTERNALSYM SetServiceObjectSecurity}
954
function SetServiceStatus(hServiceStatus: SERVICE_STATUS_HANDLE;
955
const lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
956
{$EXTERNALSYM SetServiceStatus}
958
function StartServiceCtrlDispatcherA(lpServiceStartTable: LPSERVICE_TABLE_ENTRYA): BOOL; stdcall;
959
{$EXTERNALSYM StartServiceCtrlDispatcherA}
960
function StartServiceCtrlDispatcherW(lpServiceStartTable: LPSERVICE_TABLE_ENTRYW): BOOL; stdcall;
961
{$EXTERNALSYM StartServiceCtrlDispatcherW}
962
function StartServiceCtrlDispatcher(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): BOOL; stdcall;
963
{$EXTERNALSYM StartServiceCtrlDispatcher}
965
function StartServiceA(hService: SC_HANDLE; dwNumServiceArgs: DWORD;
966
lpServiceArgVectors: LPCSTR): BOOL; stdcall;
967
{$EXTERNALSYM StartServiceA}
968
function StartServiceW(hService: SC_HANDLE; dwNumServiceArgs: DWORD;
969
lpServiceArgVectors: LPCWSTR): BOOL; stdcall;
970
{$EXTERNALSYM StartServiceW}
971
function StartService(hService: SC_HANDLE; dwNumServiceArgs: DWORD;
972
lpServiceArgVectors: LPCTSTR): BOOL; stdcall;
973
{$EXTERNALSYM StartService}
975
function UnlockServiceDatabase(ScLock: SC_LOCK): BOOL; stdcall;
976
{$EXTERNALSYM UnlockServiceDatabase}
981
advapi32 = 'advapi32.dll';
988
{$IFDEF DYNAMIC_LINK}
991
_ChangeServiceConfigA: Pointer;
993
function ChangeServiceConfigA;
995
GetProcedureAddress(_ChangeServiceConfigA, advapi32, 'ChangeServiceConfigA');
999
JMP [_ChangeServiceConfigA]
1004
_ChangeServiceConfigW: Pointer;
1006
function ChangeServiceConfigW;
1008
GetProcedureAddress(_ChangeServiceConfigW, advapi32, 'ChangeServiceConfigW');
1012
JMP [_ChangeServiceConfigW]
1017
_ChangeServiceConfig: Pointer;
1019
function ChangeServiceConfig;
1021
GetProcedureAddress(_ChangeServiceConfig, advapi32, 'ChangeServiceConfig' + AWSuffix);
1025
JMP [_ChangeServiceConfig]
1030
_ChangeServiceConfig2A: Pointer;
1032
function ChangeServiceConfig2A;
1034
GetProcedureAddress(_ChangeServiceConfig2A, advapi32, 'ChangeServiceConfig2A');
1038
JMP [_ChangeServiceConfig2A]
1043
_ChangeServiceConfig2W: Pointer;
1045
function ChangeServiceConfig2W;
1047
GetProcedureAddress(_ChangeServiceConfig2W, advapi32, 'ChangeServiceConfig2W');
1051
JMP [_ChangeServiceConfig2W]
1056
_ChangeServiceConfig2: Pointer;
1058
function ChangeServiceConfig2;
1060
GetProcedureAddress(_ChangeServiceConfig2, advapi32, 'ChangeServiceConfig2' + AWSuffix);
1064
JMP [_ChangeServiceConfig2]
1069
_CloseServiceHandle: Pointer;
1071
function CloseServiceHandle;
1073
GetProcedureAddress(_CloseServiceHandle, advapi32, 'CloseServiceHandle');
1077
JMP [_CloseServiceHandle]
1082
_ControlService: Pointer;
1084
function ControlService;
1086
GetProcedureAddress(_ControlService, advapi32, 'ControlService');
1090
JMP [_ControlService]
1095
_CreateServiceA: Pointer;
1097
function CreateServiceA;
1099
GetProcedureAddress(_CreateServiceA, advapi32, 'CreateServiceA');
1103
JMP [_CreateServiceA]
1108
_CreateServiceW: Pointer;
1110
function CreateServiceW;
1112
GetProcedureAddress(_CreateServiceW, advapi32, 'CreateServiceW');
1116
JMP [_CreateServiceW]
1121
_CreateService: Pointer;
1123
function CreateService;
1125
GetProcedureAddress(_CreateService, advapi32, 'CreateService' + AWSuffix);
1129
JMP [_CreateService]
1134
_DeleteService: Pointer;
1136
function DeleteService;
1138
GetProcedureAddress(_DeleteService, advapi32, 'DeleteService');
1142
JMP [_DeleteService]
1147
_EnumDependentServicesA: Pointer;
1149
function EnumDependentServicesA;
1151
GetProcedureAddress(_EnumDependentServicesA, advapi32, 'EnumDependentServicesA');
1155
JMP [_EnumDependentServicesA]
1160
_EnumDependentServicesW: Pointer;
1162
function EnumDependentServicesW;
1164
GetProcedureAddress(_EnumDependentServicesW, advapi32, 'EnumDependentServicesW');
1168
JMP [_EnumDependentServicesW]
1173
_EnumDependentServices: Pointer;
1175
function EnumDependentServices;
1177
GetProcedureAddress(_EnumDependentServices, advapi32, 'EnumDependentServices' + AWSuffix);
1181
JMP [_EnumDependentServices]
1186
_EnumServicesStatusA: Pointer;
1188
function EnumServicesStatusA;
1190
GetProcedureAddress(_EnumServicesStatusA, advapi32, 'EnumServicesStatusA');
1194
JMP [_EnumServicesStatusA]
1199
_EnumServicesStatusW: Pointer;
1201
function EnumServicesStatusW;
1203
GetProcedureAddress(_EnumServicesStatusW, advapi32, 'EnumServicesStatusW');
1207
JMP [_EnumServicesStatusW]
1212
_EnumServicesStatus: Pointer;
1214
function EnumServicesStatus;
1216
GetProcedureAddress(_EnumServicesStatus, advapi32, 'EnumServicesStatus' + AWSuffix);
1220
JMP [_EnumServicesStatus]
1225
_EnumServicesStatusExA: Pointer;
1227
function EnumServicesStatusExA;
1229
GetProcedureAddress(_EnumServicesStatusExA, advapi32, 'EnumServicesStatusExA');
1233
JMP [_EnumServicesStatusExA]
1238
_EnumServicesStatusExW: Pointer;
1240
function EnumServicesStatusExW;
1242
GetProcedureAddress(_EnumServicesStatusExW, advapi32, 'EnumServicesStatusExW');
1246
JMP [_EnumServicesStatusExW]
1251
_EnumServicesStatusEx: Pointer;
1253
function EnumServicesStatusEx;
1255
GetProcedureAddress(_EnumServicesStatusEx, advapi32, 'EnumServicesStatusEx' + AWSuffix);
1259
JMP [_EnumServicesStatusEx]
1264
_GetServiceKeyNameA: Pointer;
1266
function GetServiceKeyNameA;
1268
GetProcedureAddress(_GetServiceKeyNameA, advapi32, 'GetServiceKeyNameA');
1272
JMP [_GetServiceKeyNameA]
1277
_GetServiceKeyNameW: Pointer;
1279
function GetServiceKeyNameW;
1281
GetProcedureAddress(_GetServiceKeyNameW, advapi32, 'GetServiceKeyNameW');
1285
JMP [_GetServiceKeyNameW]
1290
_GetServiceKeyName: Pointer;
1292
function GetServiceKeyName;
1294
GetProcedureAddress(_GetServiceKeyName, advapi32, 'GetServiceKeyName' + AWSuffix);
1298
JMP [_GetServiceKeyName]
1303
_GetServiceDisplayNameA: Pointer;
1305
function GetServiceDisplayNameA;
1307
GetProcedureAddress(_GetServiceDisplayNameA, advapi32, 'GetServiceDisplayNameA');
1311
JMP [_GetServiceDisplayNameA]
1316
_GetServiceDisplayNameW: Pointer;
1318
function GetServiceDisplayNameW;
1320
GetProcedureAddress(_GetServiceDisplayNameW, advapi32, 'GetServiceDisplayNameW');
1324
JMP [_GetServiceDisplayNameW]
1329
_GetServiceDisplayName: Pointer;
1331
function GetServiceDisplayName;
1333
GetProcedureAddress(_GetServiceDisplayName, advapi32, 'GetServiceDisplayName' + AWSuffix);
1337
JMP [_GetServiceDisplayName]
1342
_LockServiceDatabase: Pointer;
1344
function LockServiceDatabase;
1346
GetProcedureAddress(_LockServiceDatabase, advapi32, 'LockServiceDatabase');
1350
JMP [_LockServiceDatabase]
1355
_NotifyBootConfigStatus: Pointer;
1357
function NotifyBootConfigStatus;
1359
GetProcedureAddress(_NotifyBootConfigStatus, advapi32, 'NotifyBootConfigStatus');
1363
JMP [_NotifyBootConfigStatus]
1368
_OpenSCManagerA: Pointer;
1370
function OpenSCManagerA;
1372
GetProcedureAddress(_OpenSCManagerA, advapi32, 'OpenSCManagerA');
1376
JMP [_OpenSCManagerA]
1381
_OpenSCManagerW: Pointer;
1383
function OpenSCManagerW;
1385
GetProcedureAddress(_OpenSCManagerW, advapi32, 'OpenSCManagerW');
1389
JMP [_OpenSCManagerW]
1394
_OpenSCManager: Pointer;
1396
function OpenSCManager;
1398
GetProcedureAddress(_OpenSCManager, advapi32, 'OpenSCManager' + AWSuffix);
1402
JMP [_OpenSCManager]
1407
_OpenServiceA: Pointer;
1409
function OpenServiceA;
1411
GetProcedureAddress(_OpenServiceA, advapi32, 'OpenServiceA');
1420
_OpenServiceW: Pointer;
1422
function OpenServiceW;
1424
GetProcedureAddress(_OpenServiceW, advapi32, 'OpenServiceW');
1433
_OpenService: Pointer;
1435
function OpenService;
1437
GetProcedureAddress(_OpenService, advapi32, 'OpenService' + AWSuffix);
1446
_QueryServiceConfigA: Pointer;
1448
function QueryServiceConfigA;
1450
GetProcedureAddress(_QueryServiceConfigA, advapi32, 'QueryServiceConfigA');
1454
JMP [_QueryServiceConfigA]
1459
_QueryServiceConfigW: Pointer;
1461
function QueryServiceConfigW;
1463
GetProcedureAddress(_QueryServiceConfigW, advapi32, 'QueryServiceConfigW');
1467
JMP [_QueryServiceConfigW]
1472
_QueryServiceConfig: Pointer;
1474
function QueryServiceConfig;
1476
GetProcedureAddress(_QueryServiceConfig, advapi32, 'QueryServiceConfig' + AWSuffix);
1480
JMP [_QueryServiceConfig]
1485
_QueryServiceConfig2A: Pointer;
1487
function QueryServiceConfig2A;
1489
GetProcedureAddress(_QueryServiceConfig2A, advapi32, 'QueryServiceConfig2A');
1493
JMP [_QueryServiceConfig2A]
1498
_QueryServiceConfig2W: Pointer;
1500
function QueryServiceConfig2W;
1502
GetProcedureAddress(_QueryServiceConfig2W, advapi32, 'QueryServiceConfig2W');
1506
JMP [_QueryServiceConfig2W]
1511
_QueryServiceConfig2: Pointer;
1513
function QueryServiceConfig2;
1515
GetProcedureAddress(_QueryServiceConfig2, advapi32, 'QueryServiceConfig2' + AWSuffix);
1519
JMP [_QueryServiceConfig2]
1524
_QueryServiceLockStatusA: Pointer;
1526
function QueryServiceLockStatusA;
1528
GetProcedureAddress(_QueryServiceLockStatusA, advapi32, 'QueryServiceLockStatusA');
1532
JMP [_QueryServiceLockStatusA]
1537
_QueryServiceLockStatusW: Pointer;
1539
function QueryServiceLockStatusW;
1541
GetProcedureAddress(_QueryServiceLockStatusW, advapi32, 'QueryServiceLockStatusW');
1545
JMP [_QueryServiceLockStatusW]
1550
_QueryServiceLockStatus: Pointer;
1552
function QueryServiceLockStatus;
1554
GetProcedureAddress(_QueryServiceLockStatus, advapi32, 'QueryServiceLockStatus' + AWSuffix);
1558
JMP [_QueryServiceLockStatus]
1563
_QueryServiceObjectSecurity: Pointer;
1565
function QueryServiceObjectSecurity;
1567
GetProcedureAddress(_QueryServiceObjectSecurity, advapi32, 'QueryServiceObjectSecurity');
1571
JMP [_QueryServiceObjectSecurity]
1576
_QueryServiceStatus: Pointer;
1578
function QueryServiceStatus;
1580
GetProcedureAddress(_QueryServiceStatus, advapi32, 'QueryServiceStatus');
1584
JMP [_QueryServiceStatus]
1589
_QueryServiceStatusEx: Pointer;
1591
function QueryServiceStatusEx;
1593
GetProcedureAddress(_QueryServiceStatusEx, advapi32, 'QueryServiceStatusEx');
1597
JMP [_QueryServiceStatusEx]
1602
_RegisterServiceCtrlHandlerA: Pointer;
1604
function RegisterServiceCtrlHandlerA;
1606
GetProcedureAddress(_RegisterServiceCtrlHandlerA, advapi32, 'RegisterServiceCtrlHandlerA');
1610
JMP [_RegisterServiceCtrlHandlerA]
1615
_RegisterServiceCtrlHandlerW: Pointer;
1617
function RegisterServiceCtrlHandlerW;
1619
GetProcedureAddress(_RegisterServiceCtrlHandlerW, advapi32, 'RegisterServiceCtrlHandlerW');
1623
JMP [_RegisterServiceCtrlHandlerW]
1628
_RegisterServiceCtrlHandler: Pointer;
1630
function RegisterServiceCtrlHandler;
1632
GetProcedureAddress(_RegisterServiceCtrlHandler, advapi32, 'RegisterServiceCtrlHandler' + AWSuffix);
1636
JMP [_RegisterServiceCtrlHandler]
1641
_RegisterServiceCtrlHandlerExA: Pointer;
1643
function RegisterServiceCtrlHandlerExA;
1645
GetProcedureAddress(_RegisterServiceCtrlHandlerExA, advapi32, 'RegisterServiceCtrlHandlerExA');
1649
JMP [_RegisterServiceCtrlHandlerExA]
1654
_RegisterServiceCtrlHandlerExW: Pointer;
1656
function RegisterServiceCtrlHandlerExW;
1658
GetProcedureAddress(_RegisterServiceCtrlHandlerExW, advapi32, 'RegisterServiceCtrlHandlerExW');
1662
JMP [_RegisterServiceCtrlHandlerExW]
1667
_RegisterServiceCtrlHandlerEx: Pointer;
1669
function RegisterServiceCtrlHandlerEx;
1671
GetProcedureAddress(_RegisterServiceCtrlHandlerEx, advapi32, 'RegisterServiceCtrlHandlerEx' + AWSuffix);
1675
JMP [_RegisterServiceCtrlHandlerEx]
1680
_SetServiceObjectSecurity: Pointer;
1682
function SetServiceObjectSecurity;
1684
GetProcedureAddress(_SetServiceObjectSecurity, advapi32, 'SetServiceObjectSecurity');
1688
JMP [_SetServiceObjectSecurity]
1693
_SetServiceStatus: Pointer;
1695
function SetServiceStatus;
1697
GetProcedureAddress(_SetServiceStatus, advapi32, 'SetServiceStatus');
1701
JMP [_SetServiceStatus]
1706
_StartServiceCtrlDispatcherA: Pointer;
1708
function StartServiceCtrlDispatcherA;
1710
GetProcedureAddress(_StartServiceCtrlDispatcherA, advapi32, 'StartServiceCtrlDispatcherA');
1714
JMP [_StartServiceCtrlDispatcherA]
1719
_StartServiceCtrlDispatcherW: Pointer;
1721
function StartServiceCtrlDispatcherW;
1723
GetProcedureAddress(_StartServiceCtrlDispatcherW, advapi32, 'StartServiceCtrlDispatcherW');
1727
JMP [_StartServiceCtrlDispatcherW]
1732
_StartServiceCtrlDispatcher: Pointer;
1734
function StartServiceCtrlDispatcher;
1736
GetProcedureAddress(_StartServiceCtrlDispatcher, advapi32, 'StartServiceCtrlDispatcher' + AWSuffix);
1740
JMP [_StartServiceCtrlDispatcher]
1745
_StartServiceA: Pointer;
1747
function StartServiceA;
1749
GetProcedureAddress(_StartServiceA, advapi32, 'StartServiceA');
1753
JMP [_StartServiceA]
1758
_StartServiceW: Pointer;
1760
function StartServiceW;
1762
GetProcedureAddress(_StartServiceW, advapi32, 'StartServiceW');
1766
JMP [_StartServiceW]
1771
_StartService: Pointer;
1773
function StartService;
1775
GetProcedureAddress(_StartService, advapi32, 'StartService' + AWSuffix);
1784
_UnlockServiceDatabase: Pointer;
1786
function UnlockServiceDatabase;
1788
GetProcedureAddress(_UnlockServiceDatabase, advapi32, 'UnlockServiceDatabase');
1792
JMP [_UnlockServiceDatabase]
1798
function ChangeServiceConfigA; external advapi32 name 'ChangeServiceConfigA';
1799
function ChangeServiceConfigW; external advapi32 name 'ChangeServiceConfigW';
1800
function ChangeServiceConfig; external advapi32 name 'ChangeServiceConfig' + AWSuffix;
1801
function ChangeServiceConfig2A; external advapi32 name 'ChangeServiceConfig2A';
1802
function ChangeServiceConfig2W; external advapi32 name 'ChangeServiceConfig2W';
1803
function ChangeServiceConfig2; external advapi32 name 'ChangeServiceConfig2' + AWSuffix;
1804
function CloseServiceHandle; external advapi32 name 'CloseServiceHandle';
1805
function ControlService; external advapi32 name 'ControlService';
1806
function CreateServiceA; external advapi32 name 'CreateServiceA';
1807
function CreateServiceW; external advapi32 name 'CreateServiceW';
1808
function CreateService; external advapi32 name 'CreateService' + AWSuffix;
1809
function DeleteService; external advapi32 name 'DeleteService';
1810
function EnumDependentServicesA; external advapi32 name 'EnumDependentServicesA';
1811
function EnumDependentServicesW; external advapi32 name 'EnumDependentServicesW';
1812
function EnumDependentServices; external advapi32 name 'EnumDependentServices' + AWSuffix;
1813
function EnumServicesStatusA; external advapi32 name 'EnumServicesStatusA';
1814
function EnumServicesStatusW; external advapi32 name 'EnumServicesStatusW';
1815
function EnumServicesStatus; external advapi32 name 'EnumServicesStatus' + AWSuffix;
1816
function EnumServicesStatusExA; external advapi32 name 'EnumServicesStatusExA';
1817
function EnumServicesStatusExW; external advapi32 name 'EnumServicesStatusExW';
1818
function EnumServicesStatusEx; external advapi32 name 'EnumServicesStatusEx' + AWSuffix;
1819
function GetServiceKeyNameA; external advapi32 name 'GetServiceKeyNameA';
1820
function GetServiceKeyNameW; external advapi32 name 'GetServiceKeyNameW';
1821
function GetServiceKeyName; external advapi32 name 'GetServiceKeyName' + AWSuffix;
1822
function GetServiceDisplayNameA; external advapi32 name 'GetServiceDisplayNameA';
1823
function GetServiceDisplayNameW; external advapi32 name 'GetServiceDisplayNameW';
1824
function GetServiceDisplayName; external advapi32 name 'GetServiceDisplayName' + AWSuffix;
1825
function LockServiceDatabase; external advapi32 name 'LockServiceDatabase';
1826
function NotifyBootConfigStatus; external advapi32 name 'NotifyBootConfigStatus';
1827
function OpenSCManagerA; external advapi32 name 'OpenSCManagerA';
1828
function OpenSCManagerW; external advapi32 name 'OpenSCManagerW';
1829
function OpenSCManager; external advapi32 name 'OpenSCManager' + AWSuffix;
1830
function OpenServiceA; external advapi32 name 'OpenServiceA';
1831
function OpenServiceW; external advapi32 name 'OpenServiceW';
1832
function OpenService; external advapi32 name 'OpenService' + AWSuffix;
1833
function QueryServiceConfigA; external advapi32 name 'QueryServiceConfigA';
1834
function QueryServiceConfigW; external advapi32 name 'QueryServiceConfigW';
1835
function QueryServiceConfig; external advapi32 name 'QueryServiceConfig' + AWSuffix;
1836
function QueryServiceConfig2A; external advapi32 name 'QueryServiceConfig2A';
1837
function QueryServiceConfig2W; external advapi32 name 'QueryServiceConfig2W';
1838
function QueryServiceConfig2; external advapi32 name 'QueryServiceConfig2' + AWSuffix;
1839
function QueryServiceLockStatusA; external advapi32 name 'QueryServiceLockStatusA';
1840
function QueryServiceLockStatusW; external advapi32 name 'QueryServiceLockStatusW';
1841
function QueryServiceLockStatus; external advapi32 name 'QueryServiceLockStatus' + AWSuffix;
1842
function QueryServiceObjectSecurity; external advapi32 name 'QueryServiceObjectSecurity';
1843
function QueryServiceStatus; external advapi32 name 'QueryServiceStatus';
1844
function QueryServiceStatusEx; external advapi32 name 'QueryServiceStatusEx';
1845
function RegisterServiceCtrlHandlerA; external advapi32 name 'RegisterServiceCtrlHandlerA';
1846
function RegisterServiceCtrlHandlerW; external advapi32 name 'RegisterServiceCtrlHandlerW';
1847
function RegisterServiceCtrlHandler; external advapi32 name 'RegisterServiceCtrlHandler' + AWSuffix;
1848
function RegisterServiceCtrlHandlerExA; external advapi32 name 'RegisterServiceCtrlHandlerExA';
1849
function RegisterServiceCtrlHandlerExW; external advapi32 name 'RegisterServiceCtrlHandlerExW';
1850
function RegisterServiceCtrlHandlerEx; external advapi32 name 'RegisterServiceCtrlHandlerEx' + AWSuffix;
1851
function SetServiceObjectSecurity; external advapi32 name 'SetServiceObjectSecurity';
1852
function SetServiceStatus; external advapi32 name 'SetServiceStatus';
1853
function StartServiceCtrlDispatcherA; external advapi32 name 'StartServiceCtrlDispatcherA';
1854
function StartServiceCtrlDispatcherW; external advapi32 name 'StartServiceCtrlDispatcherW';
1855
function StartServiceCtrlDispatcher; external advapi32 name 'StartServiceCtrlDispatcher' + AWSuffix;
1856
function StartServiceA; external advapi32 name 'StartServiceA';
1857
function StartServiceW; external advapi32 name 'StartServiceW';
1858
function StartService; external advapi32 name 'StartService' + AWSuffix;
1859
function UnlockServiceDatabase; external advapi32 name 'UnlockServiceDatabase';
1861
{$ENDIF DYNAMIC_LINK}
1
{******************************************************************************}
3
{ Services API interface Unit for Object Pascal }
5
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
6
{ Corporation. All Rights Reserved. }
8
{ The original file is: winsvc.h, released June 2000. The original Pascal }
9
{ code is: WinSvc.pas, released December 2000. The initial developer of the }
10
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
12
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
13
{ Marcel van Brakel. All Rights Reserved. }
15
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
17
{ You may retrieve the latest version of this file at the Project JEDI }
18
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
20
{ The contents of this file are used with permission, subject to the Mozilla }
21
{ Public License Version 1.1 (the "License"); you may not use this file except }
22
{ in compliance with the License. You may obtain a copy of the License at }
23
{ http://www.mozilla.org/MPL/MPL-1.1.html }
25
{ Software distributed under the License is distributed on an "AS IS" basis, }
26
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
27
{ the specific language governing rights and limitations under the License. }
29
{ Alternatively, the contents of this file may be used under the terms of the }
30
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
31
{ provisions of the LGPL License are applicable instead of those above. }
32
{ If you wish to allow use of your version of this file only under the terms }
33
{ of the LGPL License and not to allow others to use your version of this file }
34
{ under the MPL, indicate your decision by deleting the provisions above and }
35
{ replace them with the notice and other provisions required by the LGPL }
36
{ License. If you do not delete the provisions above, a recipient may use }
37
{ your version of this file under either the MPL or the LGPL License. }
39
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
41
{******************************************************************************}
49
{$HPPEMIT '#include "WinSvc.h"'}
60
// Service database names
64
SERVICES_ACTIVE_DATABASEW = 'ServicesActive';
65
{$EXTERNALSYM SERVICES_ACTIVE_DATABASEW}
66
SERVICES_FAILED_DATABASEW = 'ServicesFailed';
67
{$EXTERNALSYM SERVICES_FAILED_DATABASEW}
69
SERVICES_ACTIVE_DATABASEA = 'ServicesActive';
70
{$EXTERNALSYM SERVICES_ACTIVE_DATABASEA}
71
SERVICES_FAILED_DATABASEA = 'ServicesFailed';
72
{$EXTERNALSYM SERVICES_FAILED_DATABASEA}
75
// Character to designate that a name is a group
78
SC_GROUP_IDENTIFIERW = '+';
79
{$EXTERNALSYM SC_GROUP_IDENTIFIERW}
80
SC_GROUP_IDENTIFIERA = '+';
81
{$EXTERNALSYM SC_GROUP_IDENTIFIERA}
85
SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEW;
86
{$EXTERNALSYM SERVICES_ACTIVE_DATABASE}
87
SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEW;
88
{$EXTERNALSYM SERVICES_FAILED_DATABASE}
90
SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERW;
91
{$EXTERNALSYM SC_GROUP_IDENTIFIER}
95
SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
96
{$EXTERNALSYM SERVICES_ACTIVE_DATABASE}
97
SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
98
{$EXTERNALSYM SERVICES_FAILED_DATABASE}
100
SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
101
{$EXTERNALSYM SC_GROUP_IDENTIFIER}
106
// Value to indicate no change to an optional parameter
109
SERVICE_NO_CHANGE = $ffffffff;
110
{$EXTERNALSYM SERVICE_NO_CHANGE}
113
// Service State -- for Enum Requests (Bit Mask)
116
SERVICE_ACTIVE = $00000001;
117
{$EXTERNALSYM SERVICE_ACTIVE}
118
SERVICE_INACTIVE = $00000002;
119
{$EXTERNALSYM SERVICE_INACTIVE}
120
SERVICE_STATE_ALL = SERVICE_ACTIVE or SERVICE_INACTIVE;
121
{$EXTERNALSYM SERVICE_STATE_ALL}
127
SERVICE_CONTROL_STOP = $00000001;
128
{$EXTERNALSYM SERVICE_CONTROL_STOP}
129
SERVICE_CONTROL_PAUSE = $00000002;
130
{$EXTERNALSYM SERVICE_CONTROL_PAUSE}
131
SERVICE_CONTROL_CONTINUE = $00000003;
132
{$EXTERNALSYM SERVICE_CONTROL_CONTINUE}
133
SERVICE_CONTROL_INTERROGATE = $00000004;
134
{$EXTERNALSYM SERVICE_CONTROL_INTERROGATE}
135
SERVICE_CONTROL_SHUTDOWN = $00000005;
136
{$EXTERNALSYM SERVICE_CONTROL_SHUTDOWN}
137
SERVICE_CONTROL_PARAMCHANGE = $00000006;
138
{$EXTERNALSYM SERVICE_CONTROL_PARAMCHANGE}
139
SERVICE_CONTROL_NETBINDADD = $00000007;
140
{$EXTERNALSYM SERVICE_CONTROL_NETBINDADD}
141
SERVICE_CONTROL_NETBINDREMOVE = $00000008;
142
{$EXTERNALSYM SERVICE_CONTROL_NETBINDREMOVE}
143
SERVICE_CONTROL_NETBINDENABLE = $00000009;
144
{$EXTERNALSYM SERVICE_CONTROL_NETBINDENABLE}
145
SERVICE_CONTROL_NETBINDDISABLE = $0000000A;
146
{$EXTERNALSYM SERVICE_CONTROL_NETBINDDISABLE}
147
SERVICE_CONTROL_DEVICEEVENT = $0000000B;
148
{$EXTERNALSYM SERVICE_CONTROL_DEVICEEVENT}
149
SERVICE_CONTROL_HARDWAREPROFILECHANGE = $0000000C;
150
{$EXTERNALSYM SERVICE_CONTROL_HARDWAREPROFILECHANGE}
151
SERVICE_CONTROL_POWEREVENT = $0000000D;
152
{$EXTERNALSYM SERVICE_CONTROL_POWEREVENT}
153
SERVICE_CONTROL_SESSIONCHANGE = $0000000E;
154
{$EXTERNALSYM SERVICE_CONTROL_SESSIONCHANGE}
157
// Service State -- for CurrentState
160
SERVICE_STOPPED = $00000001;
161
{$EXTERNALSYM SERVICE_STOPPED}
162
SERVICE_START_PENDING = $00000002;
163
{$EXTERNALSYM SERVICE_START_PENDING}
164
SERVICE_STOP_PENDING = $00000003;
165
{$EXTERNALSYM SERVICE_STOP_PENDING}
166
SERVICE_RUNNING = $00000004;
167
{$EXTERNALSYM SERVICE_RUNNING}
168
SERVICE_CONTINUE_PENDING = $00000005;
169
{$EXTERNALSYM SERVICE_CONTINUE_PENDING}
170
SERVICE_PAUSE_PENDING = $00000006;
171
{$EXTERNALSYM SERVICE_PAUSE_PENDING}
172
SERVICE_PAUSED = $00000007;
173
{$EXTERNALSYM SERVICE_PAUSED}
176
// Controls Accepted (Bit Mask)
179
SERVICE_ACCEPT_STOP = $00000001;
180
{$EXTERNALSYM SERVICE_ACCEPT_STOP}
181
SERVICE_ACCEPT_PAUSE_CONTINUE = $00000002;
182
{$EXTERNALSYM SERVICE_ACCEPT_PAUSE_CONTINUE}
183
SERVICE_ACCEPT_SHUTDOWN = $00000004;
184
{$EXTERNALSYM SERVICE_ACCEPT_SHUTDOWN}
185
SERVICE_ACCEPT_PARAMCHANGE = $00000008;
186
{$EXTERNALSYM SERVICE_ACCEPT_PARAMCHANGE}
187
SERVICE_ACCEPT_NETBINDCHANGE = $00000010;
188
{$EXTERNALSYM SERVICE_ACCEPT_NETBINDCHANGE}
189
SERVICE_ACCEPT_HARDWAREPROFILECHANGE = $00000020;
190
{$EXTERNALSYM SERVICE_ACCEPT_HARDWAREPROFILECHANGE}
191
SERVICE_ACCEPT_POWEREVENT = $00000040;
192
{$EXTERNALSYM SERVICE_ACCEPT_POWEREVENT}
193
SERVICE_ACCEPT_SESSIONCHANGE = $00000080;
194
{$EXTERNALSYM SERVICE_ACCEPT_SESSIONCHANGE}
197
// Service Control Manager object specific access types
200
SC_MANAGER_CONNECT = $0001;
201
{$EXTERNALSYM SC_MANAGER_CONNECT}
202
SC_MANAGER_CREATE_SERVICE = $0002;
203
{$EXTERNALSYM SC_MANAGER_CREATE_SERVICE}
204
SC_MANAGER_ENUMERATE_SERVICE = $0004;
205
{$EXTERNALSYM SC_MANAGER_ENUMERATE_SERVICE}
206
SC_MANAGER_LOCK = $0008;
207
{$EXTERNALSYM SC_MANAGER_LOCK}
208
SC_MANAGER_QUERY_LOCK_STATUS = $0010;
209
{$EXTERNALSYM SC_MANAGER_QUERY_LOCK_STATUS}
210
SC_MANAGER_MODIFY_BOOT_CONFIG = $0020;
211
{$EXTERNALSYM SC_MANAGER_MODIFY_BOOT_CONFIG}
213
SC_MANAGER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
214
SC_MANAGER_CONNECT or
215
SC_MANAGER_CREATE_SERVICE or
216
SC_MANAGER_ENUMERATE_SERVICE or
218
SC_MANAGER_QUERY_LOCK_STATUS or
219
SC_MANAGER_MODIFY_BOOT_CONFIG;
220
{$EXTERNALSYM SC_MANAGER_ALL_ACCESS}
223
// Service object specific access type
226
SERVICE_QUERY_CONFIG = $0001;
227
{$EXTERNALSYM SERVICE_QUERY_CONFIG}
228
SERVICE_CHANGE_CONFIG = $0002;
229
{$EXTERNALSYM SERVICE_CHANGE_CONFIG}
230
SERVICE_QUERY_STATUS = $0004;
231
{$EXTERNALSYM SERVICE_QUERY_STATUS}
232
SERVICE_ENUMERATE_DEPENDENTS = $0008;
233
{$EXTERNALSYM SERVICE_ENUMERATE_DEPENDENTS}
234
SERVICE_START = $0010;
235
{$EXTERNALSYM SERVICE_START}
236
SERVICE_STOP = $0020;
237
{$EXTERNALSYM SERVICE_STOP}
238
SERVICE_PAUSE_CONTINUE = $0040;
239
{$EXTERNALSYM SERVICE_PAUSE_CONTINUE}
240
SERVICE_INTERROGATE = $0080;
241
{$EXTERNALSYM SERVICE_INTERROGATE}
242
SERVICE_USER_DEFINED_CONTROL = $0100;
243
{$EXTERNALSYM SERVICE_USER_DEFINED_CONTROL}
245
SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
246
SERVICE_QUERY_CONFIG or
247
SERVICE_CHANGE_CONFIG or
248
SERVICE_QUERY_STATUS or
249
SERVICE_ENUMERATE_DEPENDENTS or
252
SERVICE_PAUSE_CONTINUE or
253
SERVICE_INTERROGATE or
254
SERVICE_USER_DEFINED_CONTROL;
255
{$EXTERNALSYM SERVICE_ALL_ACCESS}
258
// Service flags for QueryServiceStatusEx
261
SERVICE_RUNS_IN_SYSTEM_PROCESS = $00000001;
262
{$EXTERNALSYM SERVICE_RUNS_IN_SYSTEM_PROCESS}
265
// Info levels for ChangeServiceConfig2 and QueryServiceConfig2
268
SERVICE_CONFIG_DESCRIPTION = 1;
269
{$EXTERNALSYM SERVICE_CONFIG_DESCRIPTION}
270
SERVICE_CONFIG_FAILURE_ACTIONS = 2;
271
{$EXTERNALSYM SERVICE_CONFIG_FAILURE_ACTIONS}
274
// Service description string
278
LPSERVICE_DESCRIPTIONA = ^SERVICE_DESCRIPTIONA;
279
{$EXTERNALSYM LPSERVICE_DESCRIPTIONA}
280
_SERVICE_DESCRIPTIONA = record
281
lpDescription: LPSTR;
283
{$EXTERNALSYM _SERVICE_DESCRIPTIONA}
284
SERVICE_DESCRIPTIONA = _SERVICE_DESCRIPTIONA;
285
{$EXTERNALSYM SERVICE_DESCRIPTIONA}
286
TServiceDescriptionA = SERVICE_DESCRIPTIONA;
287
PServiceDescriptionA = LPSERVICE_DESCRIPTIONA;
290
// Service description string
293
LPSERVICE_DESCRIPTIONW = ^SERVICE_DESCRIPTIONW;
294
{$EXTERNALSYM LPSERVICE_DESCRIPTIONW}
295
_SERVICE_DESCRIPTIONW = record
296
lpDescription: LPWSTR;
298
{$EXTERNALSYM _SERVICE_DESCRIPTIONW}
299
SERVICE_DESCRIPTIONW = _SERVICE_DESCRIPTIONW;
300
{$EXTERNALSYM SERVICE_DESCRIPTIONW}
301
TServiceDescriptionW = SERVICE_DESCRIPTIONW;
302
PServiceDescriptionW = LPSERVICE_DESCRIPTIONW;
305
SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONW;
306
{$EXTERNALSYM SERVICE_DESCRIPTION}
307
LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONW;
308
{$EXTERNALSYM LPSERVICE_DESCRIPTION}
309
TServiceDescription = TServiceDescriptionW;
310
PServiceDescription = PServiceDescriptionW;
312
SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONA;
313
{$EXTERNALSYM SERVICE_DESCRIPTION}
314
LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONA;
315
{$EXTERNALSYM LPSERVICE_DESCRIPTION}
316
TServiceDescription = TServiceDescriptionA;
317
PServiceDescription = PServiceDescriptionA;
321
// Actions to take on service failure
324
_SC_ACTION_TYPE = (SC_ACTION_NONE, SC_ACTION_RESTART, SC_ACTION_REBOOT,
325
SC_ACTION_RUN_COMMAND);
326
{$EXTERNALSYM _SC_ACTION_TYPE}
327
SC_ACTION_TYPE = _SC_ACTION_TYPE;
328
{$EXTERNALSYM SC_ACTION_TYPE}
329
TScActionType = _SC_ACTION_TYPE;
331
LPSC_ACTION = ^SC_ACTION;
332
{$EXTERNALSYM LPSC_ACTION}
334
Type_: SC_ACTION_TYPE;
337
{$EXTERNALSYM _SC_ACTION}
338
SC_ACTION = _SC_ACTION;
339
{$EXTERNALSYM SC_ACTION}
340
TScAction = SC_ACTION;
341
PScAction = LPSC_ACTION;
343
LPSERVICE_FAILURE_ACTIONSA = ^SERVICE_FAILURE_ACTIONSA;
344
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONSA}
345
_SERVICE_FAILURE_ACTIONSA = record
346
dwResetPeriod: DWORD;
350
lpsaActions: LPSC_ACTION;
352
{$EXTERNALSYM _SERVICE_FAILURE_ACTIONSA}
353
SERVICE_FAILURE_ACTIONSA = _SERVICE_FAILURE_ACTIONSA;
354
{$EXTERNALSYM SERVICE_FAILURE_ACTIONSA}
355
TServiceFailureActionsA = SERVICE_FAILURE_ACTIONSA;
356
PServiceFailureActionsA = LPSERVICE_FAILURE_ACTIONSA;
358
LPSERVICE_FAILURE_ACTIONSW = ^SERVICE_FAILURE_ACTIONSW;
359
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONSW}
360
_SERVICE_FAILURE_ACTIONSW = record
361
dwResetPeriod: DWORD;
365
lpsaActions: LPSC_ACTION;
367
{$EXTERNALSYM _SERVICE_FAILURE_ACTIONSW}
368
SERVICE_FAILURE_ACTIONSW = _SERVICE_FAILURE_ACTIONSW;
369
{$EXTERNALSYM SERVICE_FAILURE_ACTIONSW}
370
TServiceFailureActionsW = SERVICE_FAILURE_ACTIONSW;
371
PServiceFailureActionsW = LPSERVICE_FAILURE_ACTIONSW;
374
SERVICE_FAILURE_ACTIONS = SERVICE_FAILURE_ACTIONSW;
375
{$EXTERNALSYM SERVICE_FAILURE_ACTIONS}
376
LPSERVICE_FAILURE_ACTIONS = LPSERVICE_FAILURE_ACTIONSW;
377
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONS}
378
TServiceFailureActions = TServiceFailureActionsW;
379
PServiceFailureActions = PServiceFailureActionsW;
381
SERVICE_FAILURE_ACTIONS = SERVICE_FAILURE_ACTIONSA;
382
{$EXTERNALSYM SERVICE_FAILURE_ACTIONS}
383
LPSERVICE_FAILURE_ACTIONS = LPSERVICE_FAILURE_ACTIONSA;
384
{$EXTERNALSYM LPSERVICE_FAILURE_ACTIONS}
385
TServiceFailureActions = TServiceFailureActionsA;
386
PServiceFailureActions = PServiceFailureActionsA;
394
{$EXTERNALSYM SC_HANDLE}
395
LPSC_HANDLE = ^SC_HANDLE;
396
{$EXTERNALSYM LPSC_HANDLE}
398
SERVICE_STATUS_HANDLE = HANDLE;
399
{$EXTERNALSYM SERVICE_STATUS_HANDLE}
402
// Info levels for QueryServiceStatusEx
405
_SC_STATUS_TYPE = (SC_STATUS_PROCESS_INFO);
406
{$EXTERNALSYM _SC_STATUS_TYPE}
407
SC_STATUS_TYPE = _SC_STATUS_TYPE;
408
{$EXTERNALSYM SC_STATUS_TYPE}
411
// Info levels for EnumServicesStatusEx
414
_SC_ENUM_TYPE = (SC_ENUM_PROCESS_INFO);
415
{$EXTERNALSYM _SC_ENUM_TYPE}
416
SC_ENUM_TYPE = _SC_ENUM_TYPE;
417
{$EXTERNALSYM SC_ENUM_TYPE}
420
// Service Status Structures
423
LPSERVICE_STATUS = ^SERVICE_STATUS;
424
{$EXTERNALSYM LPSERVICE_STATUS}
425
_SERVICE_STATUS = record
426
dwServiceType: DWORD;
427
dwCurrentState: DWORD;
428
dwControlsAccepted: DWORD;
429
dwWin32ExitCode: DWORD;
430
dwServiceSpecificExitCode: DWORD;
434
{$EXTERNALSYM _SERVICE_STATUS}
435
SERVICE_STATUS = _SERVICE_STATUS;
436
{$EXTERNALSYM SERVICE_STATUS}
437
TServiceStatus = SERVICE_STATUS;
438
PServiceStatus = LPSERVICE_STATUS;
440
LPSERVICE_STATUS_PROCESS = ^SERVICE_STATUS_PROCESS;
441
{$EXTERNALSYM LPSERVICE_STATUS_PROCESS}
442
_SERVICE_STATUS_PROCESS = record
443
dwServiceType: DWORD;
444
dwCurrentState: DWORD;
445
dwControlsAccepted: DWORD;
446
dwWin32ExitCode: DWORD;
447
dwServiceSpecificExitCode: DWORD;
451
dwServiceFlags: DWORD;
453
{$EXTERNALSYM _SERVICE_STATUS_PROCESS}
454
SERVICE_STATUS_PROCESS = _SERVICE_STATUS_PROCESS;
455
{$EXTERNALSYM SERVICE_STATUS_PROCESS}
456
TServiceStatusProcess = SERVICE_STATUS_PROCESS;
457
PServiceStatusProcess = LPSERVICE_STATUS_PROCESS;
460
// Service Status Enumeration Structure
463
LPENUM_SERVICE_STATUSA = ^ENUM_SERVICE_STATUSA;
464
{$EXTERNALSYM LPENUM_SERVICE_STATUSA}
465
_ENUM_SERVICE_STATUSA = record
466
lpServiceName: LPSTR;
467
lpDisplayName: LPSTR;
468
ServiceStatus: SERVICE_STATUS;
470
{$EXTERNALSYM _ENUM_SERVICE_STATUSA}
471
ENUM_SERVICE_STATUSA = _ENUM_SERVICE_STATUSA;
472
{$EXTERNALSYM ENUM_SERVICE_STATUSA}
473
TEnumServiceStatusA = ENUM_SERVICE_STATUSA;
474
PEnumServiceStatusA = LPENUM_SERVICE_STATUSA;
476
LPENUM_SERVICE_STATUSW = ^ENUM_SERVICE_STATUSW;
477
{$EXTERNALSYM LPENUM_SERVICE_STATUSW}
478
_ENUM_SERVICE_STATUSW = record
479
lpServiceName: LPWSTR;
480
lpDisplayName: LPWSTR;
481
ServiceStatus: SERVICE_STATUS;
483
{$EXTERNALSYM _ENUM_SERVICE_STATUSW}
484
ENUM_SERVICE_STATUSW = _ENUM_SERVICE_STATUSW;
485
{$EXTERNALSYM ENUM_SERVICE_STATUSW}
486
TEnumServiceStatusW = ENUM_SERVICE_STATUSW;
487
PEnumServiceStatusW = LPENUM_SERVICE_STATUSW;
490
ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSW;
491
{$EXTERNALSYM ENUM_SERVICE_STATUS}
492
LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSW;
493
{$EXTERNALSYM LPENUM_SERVICE_STATUS}
494
TEnumServiceStatus = TEnumServiceStatusW;
495
PEnumServiceStatus = PEnumServiceStatusW;
497
ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSA;
498
{$EXTERNALSYM ENUM_SERVICE_STATUS}
499
LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSA;
500
{$EXTERNALSYM LPENUM_SERVICE_STATUS}
501
TEnumServiceStatus = TEnumServiceStatusA;
502
PEnumServiceStatus = PEnumServiceStatusA;
505
LPENUM_SERVICE_STATUS_PROCESSA = ^ENUM_SERVICE_STATUS_PROCESSA;
506
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESSA}
507
_ENUM_SERVICE_STATUS_PROCESSA = record
508
lpServiceName: LPSTR;
509
lpDisplayName: LPSTR;
510
ServiceStatusProcess: SERVICE_STATUS_PROCESS;
512
{$EXTERNALSYM _ENUM_SERVICE_STATUS_PROCESSA}
513
ENUM_SERVICE_STATUS_PROCESSA = _ENUM_SERVICE_STATUS_PROCESSA;
514
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESSA}
515
TEnumServiceStatusProcessA = ENUM_SERVICE_STATUS_PROCESSA;
516
PEnumServiceStatusProcessA = LPENUM_SERVICE_STATUS_PROCESSA;
518
LPENUM_SERVICE_STATUS_PROCESSW = ^ENUM_SERVICE_STATUS_PROCESSW;
519
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESSW}
520
_ENUM_SERVICE_STATUS_PROCESSW = record
521
lpServiceName: LPWSTR;
522
lpDisplayName: LPWSTR;
523
ServiceStatusProcess: SERVICE_STATUS_PROCESS;
525
{$EXTERNALSYM _ENUM_SERVICE_STATUS_PROCESSW}
526
ENUM_SERVICE_STATUS_PROCESSW = _ENUM_SERVICE_STATUS_PROCESSW;
527
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESSW}
528
TEnumServiceStatusProcessW = ENUM_SERVICE_STATUS_PROCESSW;
529
PEnumServiceStatusProcessW = LPENUM_SERVICE_STATUS_PROCESSW;
532
ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSW;
533
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESS}
534
LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSW;
535
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESS}
536
TEnumServiceStatusProcess = TEnumServiceStatusProcessW;
537
PEnumServiceStatusProcess = PEnumServiceStatusProcessW;
539
ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSA;
540
{$EXTERNALSYM ENUM_SERVICE_STATUS_PROCESS}
541
LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSA;
542
{$EXTERNALSYM LPENUM_SERVICE_STATUS_PROCESS}
543
TEnumServiceStatusProcess = TEnumServiceStatusProcessA;
544
PEnumServiceStatusProcess = PEnumServiceStatusProcessA;
548
// Structures for the Lock API functions
552
{$EXTERNALSYM SC_LOCK}
554
LPQUERY_SERVICE_LOCK_STATUSA = ^QUERY_SERVICE_LOCK_STATUSA;
555
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUSA}
556
_QUERY_SERVICE_LOCK_STATUSA = record
559
dwLockDuration: DWORD;
561
{$EXTERNALSYM _QUERY_SERVICE_LOCK_STATUSA}
562
QUERY_SERVICE_LOCK_STATUSA = _QUERY_SERVICE_LOCK_STATUSA;
563
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUSA}
564
TQueryServiceLockStatusA = QUERY_SERVICE_LOCK_STATUSA;
565
PQueryServiceLockStatusA = LPQUERY_SERVICE_LOCK_STATUSA;
567
LPQUERY_SERVICE_LOCK_STATUSW = ^QUERY_SERVICE_LOCK_STATUSW;
568
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUSW}
569
_QUERY_SERVICE_LOCK_STATUSW = record
572
dwLockDuration: DWORD;
574
{$EXTERNALSYM _QUERY_SERVICE_LOCK_STATUSW}
575
QUERY_SERVICE_LOCK_STATUSW = _QUERY_SERVICE_LOCK_STATUSW;
576
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUSW}
577
TQueryServiceLockStatusW = QUERY_SERVICE_LOCK_STATUSW;
578
PQueryServiceLockStatusW = LPQUERY_SERVICE_LOCK_STATUSW;
581
QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSW;
582
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUS}
583
LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSW;
584
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUS}
585
TQueryServiceLockStatus = TQueryServiceLockStatusW;
586
PQueryServiceLockStatus = PQueryServiceLockStatusW;
588
QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSA;
589
{$EXTERNALSYM QUERY_SERVICE_LOCK_STATUS}
590
LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSA;
591
{$EXTERNALSYM LPQUERY_SERVICE_LOCK_STATUS}
592
TQueryServiceLockStatus = TQueryServiceLockStatusA;
593
PQueryServiceLockStatus = PQueryServiceLockStatusA;
597
// Query Service Configuration Structure
600
LPQUERY_SERVICE_CONFIGA = ^QUERY_SERVICE_CONFIGA;
601
{$EXTERNALSYM LPQUERY_SERVICE_CONFIGA}
602
_QUERY_SERVICE_CONFIGA = record
603
dwServiceType: DWORD;
605
dwErrorControl: DWORD;
606
lpBinaryPathName: LPSTR;
607
lpLoadOrderGroup: LPSTR;
609
lpDependencies: LPSTR;
610
lpServiceStartName: LPSTR;
611
lpDisplayName: LPSTR;
613
{$EXTERNALSYM _QUERY_SERVICE_CONFIGA}
614
QUERY_SERVICE_CONFIGA = _QUERY_SERVICE_CONFIGA;
615
{$EXTERNALSYM QUERY_SERVICE_CONFIGA}
616
TQueryServiceConfigA = QUERY_SERVICE_CONFIGA;
617
PQueryServiceConfigA = LPQUERY_SERVICE_CONFIGA;
619
LPQUERY_SERVICE_CONFIGW = ^QUERY_SERVICE_CONFIGW;
620
{$EXTERNALSYM LPQUERY_SERVICE_CONFIGW}
621
_QUERY_SERVICE_CONFIGW = record
622
dwServiceType: DWORD;
624
dwErrorControl: DWORD;
625
lpBinaryPathName: LPWSTR;
626
lpLoadOrderGroup: LPWSTR;
628
lpDependencies: LPWSTR;
629
lpServiceStartName: LPWSTR;
630
lpDisplayName: LPWSTR;
632
{$EXTERNALSYM _QUERY_SERVICE_CONFIGW}
633
QUERY_SERVICE_CONFIGW = _QUERY_SERVICE_CONFIGW;
634
{$EXTERNALSYM QUERY_SERVICE_CONFIGW}
635
TQueryServiceConfigW = QUERY_SERVICE_CONFIGW;
636
PQueryServiceConfigW = LPQUERY_SERVICE_CONFIGW;
639
QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGW;
640
{$EXTERNALSYM QUERY_SERVICE_CONFIG}
641
LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGW;
642
{$EXTERNALSYM LPQUERY_SERVICE_CONFIG}
643
TQueryServiceConfig = TQueryServiceConfigW;
644
PQueryServiceConfig = PQueryServiceConfigW;
646
QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGA;
647
{$EXTERNALSYM QUERY_SERVICE_CONFIG}
648
LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGA;
649
{$EXTERNALSYM LPQUERY_SERVICE_CONFIG}
650
TQueryServiceConfig = TQueryServiceConfigA;
651
PQueryServiceConfig = PQueryServiceConfigA;
655
// Function Prototype for the Service Main Function
659
LPSERVICE_MAIN_FUNCTIONW = procedure(dwNumServicesArgs: DWORD;
660
lpServiceArgVectors: LPWSTR); stdcall;
661
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTIONW}
662
LPSERVICE_MAIN_FUNCTIONA = procedure(dwNumServicesArgs: DWORD;
663
lpServiceArgVectors: LPSTR); stdcall;
664
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTIONA}
666
TServiceMainFunctionA = LPSERVICE_MAIN_FUNCTIONA;
667
TServiceMainFunctionW = LPSERVICE_MAIN_FUNCTIONW;
670
LPSERVICE_MAIN_FUNCTION = LPSERVICE_MAIN_FUNCTIONW;
671
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTION}
672
TServiceMainFunction = LPSERVICE_MAIN_FUNCTIONW;
674
LPSERVICE_MAIN_FUNCTION = LPSERVICE_MAIN_FUNCTIONA;
675
{$EXTERNALSYM LPSERVICE_MAIN_FUNCTION}
676
TServiceMainFunction = LPSERVICE_MAIN_FUNCTIONA;
680
// Service Start Table
683
LPSERVICE_TABLE_ENTRYA = ^SERVICE_TABLE_ENTRYA;
684
{$EXTERNALSYM LPSERVICE_TABLE_ENTRYA}
685
_SERVICE_TABLE_ENTRYA = record
686
lpServiceName: LPSTR;
687
lpServiceProc: LPSERVICE_MAIN_FUNCTIONA;
689
{$EXTERNALSYM _SERVICE_TABLE_ENTRYA}
690
SERVICE_TABLE_ENTRYA = _SERVICE_TABLE_ENTRYA;
691
{$EXTERNALSYM SERVICE_TABLE_ENTRYA}
692
TServiceTableEntryA = SERVICE_TABLE_ENTRYA;
693
PServiceTableEntryA = LPSERVICE_TABLE_ENTRYA;
695
LPSERVICE_TABLE_ENTRYW = ^SERVICE_TABLE_ENTRYW;
696
{$EXTERNALSYM LPSERVICE_TABLE_ENTRYW}
697
_SERVICE_TABLE_ENTRYW = record
698
lpServiceName: LPWSTR;
699
lpServiceProc: LPSERVICE_MAIN_FUNCTIONW;
701
{$EXTERNALSYM _SERVICE_TABLE_ENTRYW}
702
SERVICE_TABLE_ENTRYW = _SERVICE_TABLE_ENTRYW;
703
{$EXTERNALSYM SERVICE_TABLE_ENTRYW}
704
TServiceTableEntryW = SERVICE_TABLE_ENTRYW;
705
PServiceTableEntryW = LPSERVICE_TABLE_ENTRYW;
708
SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYW;
709
LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYW;
710
TServiceTableEntry = TServiceTableEntryW;
711
PServiceTableEntry = PServiceTableEntryW;
713
SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYA;
714
LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYA;
715
TServiceTableEntry = TServiceTableEntryA;
716
PServiceTableEntry = PServiceTableEntryA;
720
// Prototype for the Service Control Handler Function
723
LPHANDLER_FUNCTION = procedure(dwControl: DWORD); stdcall;
724
{$EXTERNALSYM LPHANDLER_FUNCTION}
725
THandlerFunction = LPHANDLER_FUNCTION;
727
LPHANDLER_FUNCTION_EX = function(dwControl, dwEventType: DWORD;
728
lpEventData, lpContext: LPVOID): DWORD; stdcall;
729
{$EXTERNALSYM LPHANDLER_FUNCTION_EX}
730
THandlerFunctionEx = LPHANDLER_FUNCTION_EX;
732
///////////////////////////////////////////////////////////////////////////
733
// API Function Prototypes
734
///////////////////////////////////////////////////////////////////////////
736
function ChangeServiceConfigA(hService: SC_HANDLE; dwServiceType, dwStartType,
737
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCSTR;
738
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
739
lpDisplayName: LPCSTR): BOOL; stdcall;
740
{$EXTERNALSYM ChangeServiceConfigA}
741
function ChangeServiceConfigW(hService: SC_HANDLE; dwServiceType, dwStartType,
742
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCWSTR;
743
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
744
lpDisplayName: LPCWSTR): BOOL; stdcall;
745
{$EXTERNALSYM ChangeServiceConfigW}
746
function ChangeServiceConfig(hService: SC_HANDLE; dwServiceType, dwStartType,
747
dwErrorControl: DWORD; lpBinaryPathName, lpLoadOrderGroup: LPCTSTR;
748
lpdwTagId: LPDWORD; lpDependencies, lpServiceStartName, lpPassword,
749
lpDisplayName: LPCTSTR): BOOL; stdcall;
750
{$EXTERNALSYM ChangeServiceConfig}
752
function ChangeServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWORD;
753
lpInfo: LPVOID): BOOL; stdcall;
754
{$EXTERNALSYM ChangeServiceConfig2A}
755
function ChangeServiceConfig2W(hService: SC_HANDLE; dwInfoLevel: DWORD;
756
lpInfo: LPVOID): BOOL; stdcall;
757
{$EXTERNALSYM ChangeServiceConfig2W}
758
function ChangeServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWORD;
759
lpInfo: LPVOID): BOOL; stdcall;
760
{$EXTERNALSYM ChangeServiceConfig2}
762
function CloseServiceHandle(hSCObject: SC_HANDLE): BOOL; stdcall;
763
{$EXTERNALSYM CloseServiceHandle}
765
function ControlService(hService: SC_HANDLE; dwControl: DWORD;
766
var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
767
{$EXTERNALSYM ControlService}
769
function CreateServiceA(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCSTR;
770
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
771
lpBinaryPathName, lpLoadOrderGroup: LPCSTR; lpdwTagId: LPDWORD;
772
lpDependencies, lpServiceStartName, lpPassword: LPCSTR): SC_HANDLE; stdcall;
773
{$EXTERNALSYM CreateServiceA}
774
function CreateServiceW(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCWSTR;
775
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
776
lpBinaryPathName, lpLoadOrderGroup: LPCWSTR; lpdwTagId: LPDWORD;
777
lpDependencies, lpServiceStartName, lpPassword: LPCWSTR): SC_HANDLE; stdcall;
778
{$EXTERNALSYM CreateServiceW}
779
function CreateService(hSCManager: SC_HANDLE; lpServiceName, lpDisplayName: LPCTSTR;
780
dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl: DWORD;
781
lpBinaryPathName, lpLoadOrderGroup: LPCTSTR; lpdwTagId: LPDWORD;
782
lpDependencies, lpServiceStartName, lpPassword: LPCTSTR): SC_HANDLE; stdcall;
783
{$EXTERNALSYM CreateService}
785
function DeleteService(hService: SC_HANDLE): BOOL; stdcall;
786
{$EXTERNALSYM DeleteService}
788
function EnumDependentServicesA(hService: SC_HANDLE; dwServiceState: DWORD;
789
lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD; var pcbBytesNeeded,
790
lpServicesReturned: DWORD): BOOL; stdcall;
791
{$EXTERNALSYM EnumDependentServicesA}
792
function EnumDependentServicesW(hService: SC_HANDLE; dwServiceState: DWORD;
793
lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD; var pcbBytesNeeded,
794
lpServicesReturned: DWORD): BOOL; stdcall;
795
{$EXTERNALSYM EnumDependentServicesW}
796
function EnumDependentServices(hService: SC_HANDLE; dwServiceState: DWORD;
797
lpServices: LPENUM_SERVICE_STATUS; cbBufSize: DWORD; var pcbBytesNeeded,
798
lpServicesReturned: DWORD): BOOL; stdcall;
799
{$EXTERNALSYM EnumDependentServices}
801
function EnumServicesStatusA(hSCManager: SC_HANDLE; dwServiceType: DWORD;
802
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSA; cbBufSize: DWORD;
803
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
804
{$EXTERNALSYM EnumServicesStatusA}
805
function EnumServicesStatusW(hSCManager: SC_HANDLE; dwServiceType: DWORD;
806
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUSW; cbBufSize: DWORD;
807
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
808
{$EXTERNALSYM EnumServicesStatusW}
809
function EnumServicesStatus(hSCManager: SC_HANDLE; dwServiceType: DWORD;
810
dwServiceState: DWORD; lpServices: LPENUM_SERVICE_STATUS; cbBufSize: DWORD;
811
var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD): BOOL; stdcall;
812
{$EXTERNALSYM EnumServicesStatus}
814
function EnumServicesStatusExA(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
815
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
816
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
817
pszGroupName: LPCSTR): BOOL; stdcall;
818
{$EXTERNALSYM EnumServicesStatusExA}
819
function EnumServicesStatusExW(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
820
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
821
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
822
pszGroupName: LPCWSTR): BOOL; stdcall;
823
{$EXTERNALSYM EnumServicesStatusExW}
824
function EnumServicesStatusEx(hSCManager: SC_HANDLE; InfoLevel: SC_ENUM_TYPE;
825
dwServiceType: DWORD; dwServiceState: DWORD; lpServices: LPBYTE;
826
cbBufSize: DWORD; var pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
827
pszGroupName: LPCTSTR): BOOL; stdcall;
828
{$EXTERNALSYM EnumServicesStatusEx}
830
function GetServiceKeyNameA(hSCManager: SC_HANDLE; lpDisplayName: LPCSTR;
831
lpServiceName: LPSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
832
{$EXTERNALSYM GetServiceKeyNameA}
833
function GetServiceKeyNameW(hSCManager: SC_HANDLE; lpDisplayName: LPCWSTR;
834
lpServiceName: LPWSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
835
{$EXTERNALSYM GetServiceKeyNameW}
836
function GetServiceKeyName(hSCManager: SC_HANDLE; lpDisplayName: LPCTSTR;
837
lpServiceName: LPTSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
838
{$EXTERNALSYM GetServiceKeyName}
840
function GetServiceDisplayNameA(hSCManager: SC_HANDLE; lpServiceName: LPCSTR;
841
lpDisplayName: LPSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
842
{$EXTERNALSYM GetServiceDisplayNameA}
843
function GetServiceDisplayNameW(hSCManager: SC_HANDLE; lpServiceName: LPCWSTR;
844
lpDisplayName: LPWSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
845
{$EXTERNALSYM GetServiceDisplayNameW}
846
function GetServiceDisplayName(hSCManager: SC_HANDLE; lpServiceName: LPCTSTR;
847
lpDisplayName: LPTSTR; var lpcchBuffer: DWORD): BOOL; stdcall;
848
{$EXTERNALSYM GetServiceDisplayName}
850
function LockServiceDatabase(hSCManager: SC_HANDLE): SC_LOCK; stdcall;
851
{$EXTERNALSYM LockServiceDatabase}
853
function NotifyBootConfigStatus(BootAcceptable: BOOL): BOOL; stdcall;
854
{$EXTERNALSYM NotifyBootConfigStatus}
856
function OpenSCManagerA(lpMachineName: LPCSTR; lpDatabaseName: LPCSTR;
857
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
858
{$EXTERNALSYM OpenSCManagerA}
859
function OpenSCManagerW(lpMachineName: LPCWSTR; lpDatabaseName: LPCWSTR;
860
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
861
{$EXTERNALSYM OpenSCManagerW}
862
function OpenSCManager(lpMachineName: LPCTSTR; lpDatabaseName: LPCTSTR;
863
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
864
{$EXTERNALSYM OpenSCManager}
866
function OpenServiceA(hSCManager: SC_HANDLE; lpServiceName: LPCSTR;
867
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
868
{$EXTERNALSYM OpenServiceA}
869
function OpenServiceW(hSCManager: SC_HANDLE; lpServiceName: LPCWSTR;
870
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
871
{$EXTERNALSYM OpenServiceW}
872
function OpenService(hSCManager: SC_HANDLE; lpServiceName: LPCTSTR;
873
dwDesiredAccess: DWORD): SC_HANDLE; stdcall;
874
{$EXTERNALSYM OpenService}
876
function QueryServiceConfigA(hService: SC_HANDLE;
877
lpServiceConfig: LPQUERY_SERVICE_CONFIGA; cbBufSize: DWORD;
878
var pcbBytesNeeded: DWORD): BOOL; stdcall;
879
{$EXTERNALSYM QueryServiceConfigA}
880
function QueryServiceConfigW(hService: SC_HANDLE;
881
lpServiceConfig: LPQUERY_SERVICE_CONFIGW; cbBufSize: DWORD;
882
var pcbBytesNeeded: DWORD): BOOL; stdcall;
883
{$EXTERNALSYM QueryServiceConfigW}
884
function QueryServiceConfig(hService: SC_HANDLE;
885
lpServiceConfig: LPQUERY_SERVICE_CONFIG; cbBufSize: DWORD;
886
var pcbBytesNeeded: DWORD): BOOL; stdcall;
887
{$EXTERNALSYM QueryServiceConfig}
889
function QueryServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWORD;
890
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
891
{$EXTERNALSYM QueryServiceConfig2A}
892
function QueryServiceConfig2W(hService: SC_HANDLE; dwInfoLevel: DWORD;
893
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
894
{$EXTERNALSYM QueryServiceConfig2W}
895
function QueryServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWORD;
896
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
897
{$EXTERNALSYM QueryServiceConfig2}
899
function QueryServiceLockStatusA(hSCManager: SC_HANDLE;
900
lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSA; cbBufSize: DWORD;
901
var pcbBytesNeeded: DWORD): BOOL; stdcall;
902
{$EXTERNALSYM QueryServiceLockStatusA}
903
function QueryServiceLockStatusW(hSCManager: SC_HANDLE;
904
lpLockStatus: LPQUERY_SERVICE_LOCK_STATUSW; cbBufSize: DWORD;
905
var pcbBytesNeeded: DWORD): BOOL; stdcall;
906
{$EXTERNALSYM QueryServiceLockStatusW}
907
function QueryServiceLockStatus(hSCManager: SC_HANDLE;
908
lpLockStatus: LPQUERY_SERVICE_LOCK_STATUS; cbBufSize: DWORD;
909
var pcbBytesNeeded: DWORD): BOOL; stdcall;
910
{$EXTERNALSYM QueryServiceLockStatus}
912
function QueryServiceObjectSecurity(hService: SC_HANDLE;
913
dwSecurityInformation: SECURITY_INFORMATION;
914
var lpSecurityDescriptor: SECURITY_DESCRIPTOR; cbBufSize: DWORD;
915
var pcbBytesNeeded: DWORD): BOOL; stdcall;
916
{$EXTERNALSYM QueryServiceObjectSecurity}
918
function QueryServiceStatus(hService: SC_HANDLE;
919
var lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
920
{$EXTERNALSYM QueryServiceStatus}
922
function QueryServiceStatusEx(hService: SC_HANDLE; InfoLevel: SC_STATUS_TYPE;
923
lpBuffer: LPBYTE; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
924
{$EXTERNALSYM QueryServiceStatusEx}
926
function RegisterServiceCtrlHandlerA(lpServiceName: LPCSTR;
927
lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE; stdcall;
928
{$EXTERNALSYM RegisterServiceCtrlHandlerA}
929
function RegisterServiceCtrlHandlerW(lpServiceName: LPCWSTR;
930
lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE; stdcall;
931
{$EXTERNALSYM RegisterServiceCtrlHandlerW}
932
function RegisterServiceCtrlHandler(lpServiceName: LPCTSTR;
933
lpHandlerProc: LPHANDLER_FUNCTION): SERVICE_STATUS_HANDLE; stdcall;
934
{$EXTERNALSYM RegisterServiceCtrlHandler}
936
function RegisterServiceCtrlHandlerExA(lpServiceName: LPCSTR;
937
lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;
938
{$EXTERNALSYM RegisterServiceCtrlHandlerExA}
939
function RegisterServiceCtrlHandlerExW(lpServiceName: LPCWSTR;
940
lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;
941
{$EXTERNALSYM RegisterServiceCtrlHandlerExW}
942
function RegisterServiceCtrlHandlerEx(lpServiceName: LPCTSTR;
943
lpHandlerProc: LPHANDLER_FUNCTION_EX; lpContext: LPVOID): SERVICE_STATUS_HANDLE; stdcall;
944
{$EXTERNALSYM RegisterServiceCtrlHandlerEx}
946
// 9/4/2002 Changed last parameter from const to pointer - reported by James Ots.
948
function SetServiceObjectSecurity(hService: SC_HANDLE;
949
dwSecurityInformation: SECURITY_INFORMATION;
950
lpSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
951
{$EXTERNALSYM SetServiceObjectSecurity}
953
function SetServiceStatus(hServiceStatus: SERVICE_STATUS_HANDLE;
954
const lpServiceStatus: SERVICE_STATUS): BOOL; stdcall;
955
{$EXTERNALSYM SetServiceStatus}
957
function StartServiceCtrlDispatcherA(lpServiceStartTable: LPSERVICE_TABLE_ENTRYA): BOOL; stdcall;
958
{$EXTERNALSYM StartServiceCtrlDispatcherA}
959
function StartServiceCtrlDispatcherW(lpServiceStartTable: LPSERVICE_TABLE_ENTRYW): BOOL; stdcall;
960
{$EXTERNALSYM StartServiceCtrlDispatcherW}
961
function StartServiceCtrlDispatcher(lpServiceStartTable: LPSERVICE_TABLE_ENTRY): BOOL; stdcall;
962
{$EXTERNALSYM StartServiceCtrlDispatcher}
964
function StartServiceA(hService: SC_HANDLE; dwNumServiceArgs: DWORD;
965
lpServiceArgVectors: LPCSTR): BOOL; stdcall;
966
{$EXTERNALSYM StartServiceA}
967
function StartServiceW(hService: SC_HANDLE; dwNumServiceArgs: DWORD;
968
lpServiceArgVectors: LPCWSTR): BOOL; stdcall;
969
{$EXTERNALSYM StartServiceW}
970
function StartService(hService: SC_HANDLE; dwNumServiceArgs: DWORD;
971
lpServiceArgVectors: LPCTSTR): BOOL; stdcall;
972
{$EXTERNALSYM StartService}
974
function UnlockServiceDatabase(ScLock: SC_LOCK): BOOL; stdcall;
975
{$EXTERNALSYM UnlockServiceDatabase}
980
advapi32 = 'advapi32.dll';
987
{$IFDEF DYNAMIC_LINK}
990
_ChangeServiceConfigA: Pointer;
992
function ChangeServiceConfigA;
994
GetProcedureAddress(_ChangeServiceConfigA, advapi32, 'ChangeServiceConfigA');
998
JMP [_ChangeServiceConfigA]
1003
_ChangeServiceConfigW: Pointer;
1005
function ChangeServiceConfigW;
1007
GetProcedureAddress(_ChangeServiceConfigW, advapi32, 'ChangeServiceConfigW');
1011
JMP [_ChangeServiceConfigW]
1016
_ChangeServiceConfig: Pointer;
1018
function ChangeServiceConfig;
1020
GetProcedureAddress(_ChangeServiceConfig, advapi32, 'ChangeServiceConfig' + AWSuffix);
1024
JMP [_ChangeServiceConfig]
1029
_ChangeServiceConfig2A: Pointer;
1031
function ChangeServiceConfig2A;
1033
GetProcedureAddress(_ChangeServiceConfig2A, advapi32, 'ChangeServiceConfig2A');
1037
JMP [_ChangeServiceConfig2A]
1042
_ChangeServiceConfig2W: Pointer;
1044
function ChangeServiceConfig2W;
1046
GetProcedureAddress(_ChangeServiceConfig2W, advapi32, 'ChangeServiceConfig2W');
1050
JMP [_ChangeServiceConfig2W]
1055
_ChangeServiceConfig2: Pointer;
1057
function ChangeServiceConfig2;
1059
GetProcedureAddress(_ChangeServiceConfig2, advapi32, 'ChangeServiceConfig2' + AWSuffix);
1063
JMP [_ChangeServiceConfig2]
1068
_CloseServiceHandle: Pointer;
1070
function CloseServiceHandle;
1072
GetProcedureAddress(_CloseServiceHandle, advapi32, 'CloseServiceHandle');
1076
JMP [_CloseServiceHandle]
1081
_ControlService: Pointer;
1083
function ControlService;
1085
GetProcedureAddress(_ControlService, advapi32, 'ControlService');
1089
JMP [_ControlService]
1094
_CreateServiceA: Pointer;
1096
function CreateServiceA;
1098
GetProcedureAddress(_CreateServiceA, advapi32, 'CreateServiceA');
1102
JMP [_CreateServiceA]
1107
_CreateServiceW: Pointer;
1109
function CreateServiceW;
1111
GetProcedureAddress(_CreateServiceW, advapi32, 'CreateServiceW');
1115
JMP [_CreateServiceW]
1120
_CreateService: Pointer;
1122
function CreateService;
1124
GetProcedureAddress(_CreateService, advapi32, 'CreateService' + AWSuffix);
1128
JMP [_CreateService]
1133
_DeleteService: Pointer;
1135
function DeleteService;
1137
GetProcedureAddress(_DeleteService, advapi32, 'DeleteService');
1141
JMP [_DeleteService]
1146
_EnumDependentServicesA: Pointer;
1148
function EnumDependentServicesA;
1150
GetProcedureAddress(_EnumDependentServicesA, advapi32, 'EnumDependentServicesA');
1154
JMP [_EnumDependentServicesA]
1159
_EnumDependentServicesW: Pointer;
1161
function EnumDependentServicesW;
1163
GetProcedureAddress(_EnumDependentServicesW, advapi32, 'EnumDependentServicesW');
1167
JMP [_EnumDependentServicesW]
1172
_EnumDependentServices: Pointer;
1174
function EnumDependentServices;
1176
GetProcedureAddress(_EnumDependentServices, advapi32, 'EnumDependentServices' + AWSuffix);
1180
JMP [_EnumDependentServices]
1185
_EnumServicesStatusA: Pointer;
1187
function EnumServicesStatusA;
1189
GetProcedureAddress(_EnumServicesStatusA, advapi32, 'EnumServicesStatusA');
1193
JMP [_EnumServicesStatusA]
1198
_EnumServicesStatusW: Pointer;
1200
function EnumServicesStatusW;
1202
GetProcedureAddress(_EnumServicesStatusW, advapi32, 'EnumServicesStatusW');
1206
JMP [_EnumServicesStatusW]
1211
_EnumServicesStatus: Pointer;
1213
function EnumServicesStatus;
1215
GetProcedureAddress(_EnumServicesStatus, advapi32, 'EnumServicesStatus' + AWSuffix);
1219
JMP [_EnumServicesStatus]
1224
_EnumServicesStatusExA: Pointer;
1226
function EnumServicesStatusExA;
1228
GetProcedureAddress(_EnumServicesStatusExA, advapi32, 'EnumServicesStatusExA');
1232
JMP [_EnumServicesStatusExA]
1237
_EnumServicesStatusExW: Pointer;
1239
function EnumServicesStatusExW;
1241
GetProcedureAddress(_EnumServicesStatusExW, advapi32, 'EnumServicesStatusExW');
1245
JMP [_EnumServicesStatusExW]
1250
_EnumServicesStatusEx: Pointer;
1252
function EnumServicesStatusEx;
1254
GetProcedureAddress(_EnumServicesStatusEx, advapi32, 'EnumServicesStatusEx' + AWSuffix);
1258
JMP [_EnumServicesStatusEx]
1263
_GetServiceKeyNameA: Pointer;
1265
function GetServiceKeyNameA;
1267
GetProcedureAddress(_GetServiceKeyNameA, advapi32, 'GetServiceKeyNameA');
1271
JMP [_GetServiceKeyNameA]
1276
_GetServiceKeyNameW: Pointer;
1278
function GetServiceKeyNameW;
1280
GetProcedureAddress(_GetServiceKeyNameW, advapi32, 'GetServiceKeyNameW');
1284
JMP [_GetServiceKeyNameW]
1289
_GetServiceKeyName: Pointer;
1291
function GetServiceKeyName;
1293
GetProcedureAddress(_GetServiceKeyName, advapi32, 'GetServiceKeyName' + AWSuffix);
1297
JMP [_GetServiceKeyName]
1302
_GetServiceDisplayNameA: Pointer;
1304
function GetServiceDisplayNameA;
1306
GetProcedureAddress(_GetServiceDisplayNameA, advapi32, 'GetServiceDisplayNameA');
1310
JMP [_GetServiceDisplayNameA]
1315
_GetServiceDisplayNameW: Pointer;
1317
function GetServiceDisplayNameW;
1319
GetProcedureAddress(_GetServiceDisplayNameW, advapi32, 'GetServiceDisplayNameW');
1323
JMP [_GetServiceDisplayNameW]
1328
_GetServiceDisplayName: Pointer;
1330
function GetServiceDisplayName;
1332
GetProcedureAddress(_GetServiceDisplayName, advapi32, 'GetServiceDisplayName' + AWSuffix);
1336
JMP [_GetServiceDisplayName]
1341
_LockServiceDatabase: Pointer;
1343
function LockServiceDatabase;
1345
GetProcedureAddress(_LockServiceDatabase, advapi32, 'LockServiceDatabase');
1349
JMP [_LockServiceDatabase]
1354
_NotifyBootConfigStatus: Pointer;
1356
function NotifyBootConfigStatus;
1358
GetProcedureAddress(_NotifyBootConfigStatus, advapi32, 'NotifyBootConfigStatus');
1362
JMP [_NotifyBootConfigStatus]
1367
_OpenSCManagerA: Pointer;
1369
function OpenSCManagerA;
1371
GetProcedureAddress(_OpenSCManagerA, advapi32, 'OpenSCManagerA');
1375
JMP [_OpenSCManagerA]
1380
_OpenSCManagerW: Pointer;
1382
function OpenSCManagerW;
1384
GetProcedureAddress(_OpenSCManagerW, advapi32, 'OpenSCManagerW');
1388
JMP [_OpenSCManagerW]
1393
_OpenSCManager: Pointer;
1395
function OpenSCManager;
1397
GetProcedureAddress(_OpenSCManager, advapi32, 'OpenSCManager' + AWSuffix);
1401
JMP [_OpenSCManager]
1406
_OpenServiceA: Pointer;
1408
function OpenServiceA;
1410
GetProcedureAddress(_OpenServiceA, advapi32, 'OpenServiceA');
1419
_OpenServiceW: Pointer;
1421
function OpenServiceW;
1423
GetProcedureAddress(_OpenServiceW, advapi32, 'OpenServiceW');
1432
_OpenService: Pointer;
1434
function OpenService;
1436
GetProcedureAddress(_OpenService, advapi32, 'OpenService' + AWSuffix);
1445
_QueryServiceConfigA: Pointer;
1447
function QueryServiceConfigA;
1449
GetProcedureAddress(_QueryServiceConfigA, advapi32, 'QueryServiceConfigA');
1453
JMP [_QueryServiceConfigA]
1458
_QueryServiceConfigW: Pointer;
1460
function QueryServiceConfigW;
1462
GetProcedureAddress(_QueryServiceConfigW, advapi32, 'QueryServiceConfigW');
1466
JMP [_QueryServiceConfigW]
1471
_QueryServiceConfig: Pointer;
1473
function QueryServiceConfig;
1475
GetProcedureAddress(_QueryServiceConfig, advapi32, 'QueryServiceConfig' + AWSuffix);
1479
JMP [_QueryServiceConfig]
1484
_QueryServiceConfig2A: Pointer;
1486
function QueryServiceConfig2A;
1488
GetProcedureAddress(_QueryServiceConfig2A, advapi32, 'QueryServiceConfig2A');
1492
JMP [_QueryServiceConfig2A]
1497
_QueryServiceConfig2W: Pointer;
1499
function QueryServiceConfig2W;
1501
GetProcedureAddress(_QueryServiceConfig2W, advapi32, 'QueryServiceConfig2W');
1505
JMP [_QueryServiceConfig2W]
1510
_QueryServiceConfig2: Pointer;
1512
function QueryServiceConfig2;
1514
GetProcedureAddress(_QueryServiceConfig2, advapi32, 'QueryServiceConfig2' + AWSuffix);
1518
JMP [_QueryServiceConfig2]
1523
_QueryServiceLockStatusA: Pointer;
1525
function QueryServiceLockStatusA;
1527
GetProcedureAddress(_QueryServiceLockStatusA, advapi32, 'QueryServiceLockStatusA');
1531
JMP [_QueryServiceLockStatusA]
1536
_QueryServiceLockStatusW: Pointer;
1538
function QueryServiceLockStatusW;
1540
GetProcedureAddress(_QueryServiceLockStatusW, advapi32, 'QueryServiceLockStatusW');
1544
JMP [_QueryServiceLockStatusW]
1549
_QueryServiceLockStatus: Pointer;
1551
function QueryServiceLockStatus;
1553
GetProcedureAddress(_QueryServiceLockStatus, advapi32, 'QueryServiceLockStatus' + AWSuffix);
1557
JMP [_QueryServiceLockStatus]
1562
_QueryServiceObjectSecurity: Pointer;
1564
function QueryServiceObjectSecurity;
1566
GetProcedureAddress(_QueryServiceObjectSecurity, advapi32, 'QueryServiceObjectSecurity');
1570
JMP [_QueryServiceObjectSecurity]
1575
_QueryServiceStatus: Pointer;
1577
function QueryServiceStatus;
1579
GetProcedureAddress(_QueryServiceStatus, advapi32, 'QueryServiceStatus');
1583
JMP [_QueryServiceStatus]
1588
_QueryServiceStatusEx: Pointer;
1590
function QueryServiceStatusEx;
1592
GetProcedureAddress(_QueryServiceStatusEx, advapi32, 'QueryServiceStatusEx');
1596
JMP [_QueryServiceStatusEx]
1601
_RegisterServiceCtrlHandlerA: Pointer;
1603
function RegisterServiceCtrlHandlerA;
1605
GetProcedureAddress(_RegisterServiceCtrlHandlerA, advapi32, 'RegisterServiceCtrlHandlerA');
1609
JMP [_RegisterServiceCtrlHandlerA]
1614
_RegisterServiceCtrlHandlerW: Pointer;
1616
function RegisterServiceCtrlHandlerW;
1618
GetProcedureAddress(_RegisterServiceCtrlHandlerW, advapi32, 'RegisterServiceCtrlHandlerW');
1622
JMP [_RegisterServiceCtrlHandlerW]
1627
_RegisterServiceCtrlHandler: Pointer;
1629
function RegisterServiceCtrlHandler;
1631
GetProcedureAddress(_RegisterServiceCtrlHandler, advapi32, 'RegisterServiceCtrlHandler' + AWSuffix);
1635
JMP [_RegisterServiceCtrlHandler]
1640
_RegisterServiceCtrlHandlerExA: Pointer;
1642
function RegisterServiceCtrlHandlerExA;
1644
GetProcedureAddress(_RegisterServiceCtrlHandlerExA, advapi32, 'RegisterServiceCtrlHandlerExA');
1648
JMP [_RegisterServiceCtrlHandlerExA]
1653
_RegisterServiceCtrlHandlerExW: Pointer;
1655
function RegisterServiceCtrlHandlerExW;
1657
GetProcedureAddress(_RegisterServiceCtrlHandlerExW, advapi32, 'RegisterServiceCtrlHandlerExW');
1661
JMP [_RegisterServiceCtrlHandlerExW]
1666
_RegisterServiceCtrlHandlerEx: Pointer;
1668
function RegisterServiceCtrlHandlerEx;
1670
GetProcedureAddress(_RegisterServiceCtrlHandlerEx, advapi32, 'RegisterServiceCtrlHandlerEx' + AWSuffix);
1674
JMP [_RegisterServiceCtrlHandlerEx]
1679
_SetServiceObjectSecurity: Pointer;
1681
function SetServiceObjectSecurity;
1683
GetProcedureAddress(_SetServiceObjectSecurity, advapi32, 'SetServiceObjectSecurity');
1687
JMP [_SetServiceObjectSecurity]
1692
_SetServiceStatus: Pointer;
1694
function SetServiceStatus;
1696
GetProcedureAddress(_SetServiceStatus, advapi32, 'SetServiceStatus');
1700
JMP [_SetServiceStatus]
1705
_StartServiceCtrlDispatcherA: Pointer;
1707
function StartServiceCtrlDispatcherA;
1709
GetProcedureAddress(_StartServiceCtrlDispatcherA, advapi32, 'StartServiceCtrlDispatcherA');
1713
JMP [_StartServiceCtrlDispatcherA]
1718
_StartServiceCtrlDispatcherW: Pointer;
1720
function StartServiceCtrlDispatcherW;
1722
GetProcedureAddress(_StartServiceCtrlDispatcherW, advapi32, 'StartServiceCtrlDispatcherW');
1726
JMP [_StartServiceCtrlDispatcherW]
1731
_StartServiceCtrlDispatcher: Pointer;
1733
function StartServiceCtrlDispatcher;
1735
GetProcedureAddress(_StartServiceCtrlDispatcher, advapi32, 'StartServiceCtrlDispatcher' + AWSuffix);
1739
JMP [_StartServiceCtrlDispatcher]
1744
_StartServiceA: Pointer;
1746
function StartServiceA;
1748
GetProcedureAddress(_StartServiceA, advapi32, 'StartServiceA');
1752
JMP [_StartServiceA]
1757
_StartServiceW: Pointer;
1759
function StartServiceW;
1761
GetProcedureAddress(_StartServiceW, advapi32, 'StartServiceW');
1765
JMP [_StartServiceW]
1770
_StartService: Pointer;
1772
function StartService;
1774
GetProcedureAddress(_StartService, advapi32, 'StartService' + AWSuffix);
1783
_UnlockServiceDatabase: Pointer;
1785
function UnlockServiceDatabase;
1787
GetProcedureAddress(_UnlockServiceDatabase, advapi32, 'UnlockServiceDatabase');
1791
JMP [_UnlockServiceDatabase]
1797
function ChangeServiceConfigA; external advapi32 name 'ChangeServiceConfigA';
1798
function ChangeServiceConfigW; external advapi32 name 'ChangeServiceConfigW';
1799
function ChangeServiceConfig; external advapi32 name 'ChangeServiceConfig' + AWSuffix;
1800
function ChangeServiceConfig2A; external advapi32 name 'ChangeServiceConfig2A';
1801
function ChangeServiceConfig2W; external advapi32 name 'ChangeServiceConfig2W';
1802
function ChangeServiceConfig2; external advapi32 name 'ChangeServiceConfig2' + AWSuffix;
1803
function CloseServiceHandle; external advapi32 name 'CloseServiceHandle';
1804
function ControlService; external advapi32 name 'ControlService';
1805
function CreateServiceA; external advapi32 name 'CreateServiceA';
1806
function CreateServiceW; external advapi32 name 'CreateServiceW';
1807
function CreateService; external advapi32 name 'CreateService' + AWSuffix;
1808
function DeleteService; external advapi32 name 'DeleteService';
1809
function EnumDependentServicesA; external advapi32 name 'EnumDependentServicesA';
1810
function EnumDependentServicesW; external advapi32 name 'EnumDependentServicesW';
1811
function EnumDependentServices; external advapi32 name 'EnumDependentServices' + AWSuffix;
1812
function EnumServicesStatusA; external advapi32 name 'EnumServicesStatusA';
1813
function EnumServicesStatusW; external advapi32 name 'EnumServicesStatusW';
1814
function EnumServicesStatus; external advapi32 name 'EnumServicesStatus' + AWSuffix;
1815
function EnumServicesStatusExA; external advapi32 name 'EnumServicesStatusExA';
1816
function EnumServicesStatusExW; external advapi32 name 'EnumServicesStatusExW';
1817
function EnumServicesStatusEx; external advapi32 name 'EnumServicesStatusEx' + AWSuffix;
1818
function GetServiceKeyNameA; external advapi32 name 'GetServiceKeyNameA';
1819
function GetServiceKeyNameW; external advapi32 name 'GetServiceKeyNameW';
1820
function GetServiceKeyName; external advapi32 name 'GetServiceKeyName' + AWSuffix;
1821
function GetServiceDisplayNameA; external advapi32 name 'GetServiceDisplayNameA';
1822
function GetServiceDisplayNameW; external advapi32 name 'GetServiceDisplayNameW';
1823
function GetServiceDisplayName; external advapi32 name 'GetServiceDisplayName' + AWSuffix;
1824
function LockServiceDatabase; external advapi32 name 'LockServiceDatabase';
1825
function NotifyBootConfigStatus; external advapi32 name 'NotifyBootConfigStatus';
1826
function OpenSCManagerA; external advapi32 name 'OpenSCManagerA';
1827
function OpenSCManagerW; external advapi32 name 'OpenSCManagerW';
1828
function OpenSCManager; external advapi32 name 'OpenSCManager' + AWSuffix;
1829
function OpenServiceA; external advapi32 name 'OpenServiceA';
1830
function OpenServiceW; external advapi32 name 'OpenServiceW';
1831
function OpenService; external advapi32 name 'OpenService' + AWSuffix;
1832
function QueryServiceConfigA; external advapi32 name 'QueryServiceConfigA';
1833
function QueryServiceConfigW; external advapi32 name 'QueryServiceConfigW';
1834
function QueryServiceConfig; external advapi32 name 'QueryServiceConfig' + AWSuffix;
1835
function QueryServiceConfig2A; external advapi32 name 'QueryServiceConfig2A';
1836
function QueryServiceConfig2W; external advapi32 name 'QueryServiceConfig2W';
1837
function QueryServiceConfig2; external advapi32 name 'QueryServiceConfig2' + AWSuffix;
1838
function QueryServiceLockStatusA; external advapi32 name 'QueryServiceLockStatusA';
1839
function QueryServiceLockStatusW; external advapi32 name 'QueryServiceLockStatusW';
1840
function QueryServiceLockStatus; external advapi32 name 'QueryServiceLockStatus' + AWSuffix;
1841
function QueryServiceObjectSecurity; external advapi32 name 'QueryServiceObjectSecurity';
1842
function QueryServiceStatus; external advapi32 name 'QueryServiceStatus';
1843
function QueryServiceStatusEx; external advapi32 name 'QueryServiceStatusEx';
1844
function RegisterServiceCtrlHandlerA; external advapi32 name 'RegisterServiceCtrlHandlerA';
1845
function RegisterServiceCtrlHandlerW; external advapi32 name 'RegisterServiceCtrlHandlerW';
1846
function RegisterServiceCtrlHandler; external advapi32 name 'RegisterServiceCtrlHandler' + AWSuffix;
1847
function RegisterServiceCtrlHandlerExA; external advapi32 name 'RegisterServiceCtrlHandlerExA';
1848
function RegisterServiceCtrlHandlerExW; external advapi32 name 'RegisterServiceCtrlHandlerExW';
1849
function RegisterServiceCtrlHandlerEx; external advapi32 name 'RegisterServiceCtrlHandlerEx' + AWSuffix;
1850
function SetServiceObjectSecurity; external advapi32 name 'SetServiceObjectSecurity';
1851
function SetServiceStatus; external advapi32 name 'SetServiceStatus';
1852
function StartServiceCtrlDispatcherA; external advapi32 name 'StartServiceCtrlDispatcherA';
1853
function StartServiceCtrlDispatcherW; external advapi32 name 'StartServiceCtrlDispatcherW';
1854
function StartServiceCtrlDispatcher; external advapi32 name 'StartServiceCtrlDispatcher' + AWSuffix;
1855
function StartServiceA; external advapi32 name 'StartServiceA';
1856
function StartServiceW; external advapi32 name 'StartServiceW';
1857
function StartService; external advapi32 name 'StartService' + AWSuffix;
1858
function UnlockServiceDatabase; external advapi32 name 'UnlockServiceDatabase';
1860
{$ENDIF DYNAMIC_LINK}