blob: 1031f0cf75416347ee2cd68758b6374d7249a92c [file] [log] [blame]
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00001/*
2 * Copyright (C) the Wine project
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
Jonathan Ernst360a3f92006-05-18 14:49:52 +020016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard0799c1a2002-03-09 23:29:33 +000017 */
18
Patrik Stridvall4a739731999-07-04 11:01:21 +000019#ifndef __WINE_WINSVC_H
20#define __WINE_WINSVC_H
21
22#ifdef __cplusplus
23extern "C" {
24#endif /* defined(__cplusplus) */
25
Alexandre Julliard2d1da342007-11-07 12:27:27 +010026#ifdef _ADVAPI32_
27#define WINADVAPI
28#else
29#define WINADVAPI DECLSPEC_IMPORT
30#endif
31
Alexander Yaworskyd46a95c2004-09-20 21:44:17 +000032/* Service database names */
33#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
34#define SERVICES_FAILED_DATABASEA "ServicesFailed"
35
36#if defined(__GNUC__)
37# define SERVICES_ACTIVE_DATABASEW (const WCHAR []){ 'S','e','r','v','i','c','e','s','A','c','t','i','v','e',0 }
38# define SERVICES_FAILED_DATABASEW (const WCHAR []){ 'S','e','r','v','i','c','e','s','F','a','i','l','e','d',0 }
39#elif defined(_MSC_VER)
40# define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
41# define SERVICES_FAILED_DATABASEW L"ServicesFailed"
42#endif
43
44#define SERVICES_ACTIVE_DATABASE WINELIB_NAME_AW( SERVICES_ACTIVE_DATABASE )
45#define SERVICES_FAILED_DATABASE WINELIB_NAME_AW( SERVICES_FAILED_DATABASE )
46
Rolf Kalbermatter56e447c2007-05-13 14:57:10 +020047/* Service State requests */
48#define SERVICE_ACTIVE 0x00000001
49#define SERVICE_INACTIVE 0x00000002
50#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
51
Peter Hunnisett565b0082000-09-19 02:43:00 +000052/* Controls */
53#define SERVICE_CONTROL_STOP 0x00000001
54#define SERVICE_CONTROL_PAUSE 0x00000002
55#define SERVICE_CONTROL_CONTINUE 0x00000003
56#define SERVICE_CONTROL_INTERROGATE 0x00000004
57#define SERVICE_CONTROL_SHUTDOWN 0x00000005
58#define SERVICE_CONTROL_PARAMCHANGE 0x00000006
59#define SERVICE_CONTROL_NETBINDADD 0x00000007
60#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
61#define SERVICE_CONTROL_NETBINDENABLE 0x00000009
62#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
63#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
64#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
65#define SERVICE_CONTROL_POWEREVENT 0x0000000D
Mike McCormack64d7cb12005-01-18 11:40:38 +000066#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
Peter Hunnisett565b0082000-09-19 02:43:00 +000067
68/* Service State */
69#define SERVICE_STOPPED 0x00000001
70#define SERVICE_START_PENDING 0x00000002
71#define SERVICE_STOP_PENDING 0x00000003
72#define SERVICE_RUNNING 0x00000004
73#define SERVICE_CONTINUE_PENDING 0x00000005
74#define SERVICE_PAUSE_PENDING 0x00000006
75#define SERVICE_PAUSED 0x00000007
76
77/* Controls Accepted */
78#define SERVICE_ACCEPT_STOP 0x00000001
79#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
80#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
81#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
82#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
83#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
84#define SERVICE_ACCEPT_POWEREVENT 0x00000040
Mike McCormack64d7cb12005-01-18 11:40:38 +000085#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
Peter Hunnisett565b0082000-09-19 02:43:00 +000086
87/* Service Control Manager Object access types */
88#define SC_MANAGER_CONNECT 0x0001
89#define SC_MANAGER_CREATE_SERVICE 0x0002
90#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
91#define SC_MANAGER_LOCK 0x0008
92#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
93#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
94#define SC_MANAGER_ALL_ACCESS ( STANDARD_RIGHTS_REQUIRED | \
95 SC_MANAGER_CONNECT | \
96 SC_MANAGER_CREATE_SERVICE | \
97 SC_MANAGER_ENUMERATE_SERVICE | \
98 SC_MANAGER_LOCK | \
99 SC_MANAGER_QUERY_LOCK_STATUS | \
100 SC_MANAGER_MODIFY_BOOT_CONFIG )
101
102#define SERVICE_QUERY_CONFIG 0x0001
103#define SERVICE_CHANGE_CONFIG 0x0002
104#define SERVICE_QUERY_STATUS 0x0004
105#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
106#define SERVICE_START 0x0010
107#define SERVICE_STOP 0x0020
108#define SERVICE_PAUSE_CONTINUE 0x0040
109#define SERVICE_INTERROGATE 0x0080
110#define SERVICE_USER_DEFINED_CONTROL 0x0100
111
112#define SERVICE_ALL_ACCESS ( STANDARD_RIGHTS_REQUIRED | \
113 SERVICE_QUERY_CONFIG | \
114 SERVICE_CHANGE_CONFIG | \
115 SERVICE_QUERY_STATUS | \
116 SERVICE_ENUMERATE_DEPENDENTS | \
117 SERVICE_START | \
118 SERVICE_STOP | \
119 SERVICE_PAUSE_CONTINUE | \
120 SERVICE_INTERROGATE | \
121 SERVICE_USER_DEFINED_CONTROL )
122
Mike McCormack453436d2004-10-21 19:56:17 +0000123#define SERVICE_NO_CHANGE 0xffffffff
Peter Hunnisett565b0082000-09-19 02:43:00 +0000124
125
Patrik Stridvall4a739731999-07-04 11:01:21 +0000126/* Handle types */
127
Kevin Koltzaubfa30772005-08-23 09:32:39 +0000128DECLARE_HANDLE(SC_HANDLE);
129typedef SC_HANDLE *LPSC_HANDLE;
130DECLARE_HANDLE(SERVICE_STATUS_HANDLE);
Mike McCormack939179d2005-01-14 16:50:57 +0000131typedef LPVOID SC_LOCK;
Patrik Stridvall4a739731999-07-04 11:01:21 +0000132
133/* Service status structure */
134
135typedef struct _SERVICE_STATUS {
136 DWORD dwServiceType;
137 DWORD dwCurrentState;
138 DWORD dwControlsAccepted;
139 DWORD dwWin32ExitCode;
140 DWORD dwServiceSpecificExitCode;
141 DWORD dwCheckPoint;
142 DWORD dwWaitHint;
143} SERVICE_STATUS, *LPSERVICE_STATUS;
144
Rolf Kalbermatteraf5f6322007-04-20 10:36:19 +0200145/* Service status process structure */
146
147typedef struct _SERVICE_STATUS_PROCESS
148{
Rolf Kalbermattera2fbbd92007-04-22 22:26:47 +0200149 DWORD dwServiceType;
150 DWORD dwCurrentState;
151 DWORD dwControlsAccepted;
152 DWORD dwWin32ExitCode;
153 DWORD dwServiceSpecificExitCode;
154 DWORD dwCheckPoint;
155 DWORD dwWaitHint;
Rolf Kalbermatteraf5f6322007-04-20 10:36:19 +0200156 DWORD dwProcessId;
157 DWORD dwServiceFlags;
158} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
159
Steve Lustbaderf1e1fd02002-11-25 20:50:53 +0000160typedef enum _SC_STATUS_TYPE {
161 SC_STATUS_PROCESS_INFO = 0
162} SC_STATUS_TYPE;
163
Patrik Stridvall4a739731999-07-04 11:01:21 +0000164/* Service main function prototype */
165
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000166typedef VOID (CALLBACK *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
167typedef VOID (CALLBACK *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
Patrik Stridvall4a739731999-07-04 11:01:21 +0000168DECL_WINELIB_TYPE_AW(LPSERVICE_MAIN_FUNCTION)
169
170/* Service start table */
171
172typedef struct _SERVICE_TABLE_ENTRYA {
173 LPSTR lpServiceName;
174 LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
175} SERVICE_TABLE_ENTRYA, *LPSERVICE_TABLE_ENTRYA;
176
177typedef struct _SERVICE_TABLE_ENTRYW {
178 LPWSTR lpServiceName;
179 LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
180} SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;
181
182DECL_WINELIB_TYPE_AW(SERVICE_TABLE_ENTRY)
183DECL_WINELIB_TYPE_AW(LPSERVICE_TABLE_ENTRY)
184
185/* Service status enumeration structure */
186
187typedef struct _ENUM_SERVICE_STATUSA {
188 LPSTR lpServiceName;
189 LPSTR lpDisplayName;
190 SERVICE_STATUS ServiceStatus;
191} ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
192
193typedef struct _ENUM_SERVICE_STATUSW {
194 LPWSTR lpServiceName;
195 LPWSTR lpDisplayName;
196 SERVICE_STATUS ServiceStatus;
197} ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
198
Rolf Kalbermatter46fed9f2007-05-07 22:29:58 +0200199DECL_WINELIB_TYPE_AW(ENUM_SERVICE_STATUS)
200DECL_WINELIB_TYPE_AW(LPENUM_SERVICE_STATUS)
201
202typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
203 LPSTR lpServiceName;
204 LPSTR lpDisplayName;
205 SERVICE_STATUS_PROCESS ServiceStatusProcess;
206} ENUM_SERVICE_STATUS_PROCESSA, *LPENUM_SERVICE_STATUS_PROCESSA;
207
208typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
209 LPWSTR lpServiceName;
210 LPWSTR lpDisplayName;
211 SERVICE_STATUS_PROCESS ServiceStatusProcess;
212} ENUM_SERVICE_STATUS_PROCESSW, *LPENUM_SERVICE_STATUS_PROCESSW;
213
214DECL_WINELIB_TYPE_AW(ENUM_SERVICE_STATUS_PROCESS)
215DECL_WINELIB_TYPE_AW(LPENUM_SERVICE_STATUS_PROCESS)
216
Robert Shearmanfc6febc2006-01-31 18:04:01 +0100217typedef enum _SC_ENUM_TYPE {
218 SC_ENUM_PROCESS_INFO = 0
219} SC_ENUM_TYPE;
220
Mike McCormack9b513ad2003-12-02 03:48:53 +0000221typedef struct _QUERY_SERVICE_CONFIGA {
222 DWORD dwServiceType;
223 DWORD dwStartType;
224 DWORD dwErrorControl;
225 LPSTR lpBinaryPathName;
226 LPSTR lpLoadOrderGroup;
227 DWORD dwTagId;
228 LPSTR lpDependencies;
229 LPSTR lpServiceStartName;
230 LPSTR lpDisplayName;
231} QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;
232
233typedef struct _QUERY_SERVICE_CONFIGW {
234 DWORD dwServiceType;
235 DWORD dwStartType;
236 DWORD dwErrorControl;
237 LPWSTR lpBinaryPathName;
238 LPWSTR lpLoadOrderGroup;
239 DWORD dwTagId;
240 LPWSTR lpDependencies;
241 LPWSTR lpServiceStartName;
242 LPWSTR lpDisplayName;
243} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
244
Aric Stewart3dc71b62003-12-13 03:25:37 +0000245/* defines and structures for ChangeServiceConfig2 */
Stefan Leichter6cb602c2008-03-21 09:49:57 +0100246#define SERVICE_CONFIG_DESCRIPTION 1
247#define SERVICE_CONFIG_FAILURE_ACTIONS 2
248#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
249#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
250#define SERVICE_CONFIG_SERVICE_SID_INFO 5
251#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
252#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
253
Aric Stewart3dc71b62003-12-13 03:25:37 +0000254
255typedef struct _SERVICE_DESCRIPTIONA {
256 LPSTR lpDescription;
257} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
258
259typedef struct _SERVICE_DESCRIPTIONW {
260 LPWSTR lpDescription;
261} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
262
263DECL_WINELIB_TYPE_AW(SERVICE_DESCRIPTION)
264DECL_WINELIB_TYPE_AW(LPSERVICE_DESCRIPTION)
265
266typedef enum _SC_ACTION_TYPE {
267 SC_ACTION_NONE = 0,
268 SC_ACTION_RESTART = 1,
269 SC_ACTION_REBOOT = 2,
270 SC_ACTION_RUN_COMMAND = 3
271} SC_ACTION_TYPE;
272
273typedef struct _SC_ACTION {
274 SC_ACTION_TYPE Type;
275 DWORD Delay;
276} SC_ACTION,*LPSC_ACTION;
277
278typedef struct _SERVICE_FAILURE_ACTIONSA {
279 DWORD dwResetPeriod;
280 LPSTR lpRebootMsg;
281 LPSTR lpCommand;
282 DWORD cActions;
283 SC_ACTION * lpsaActions;
284} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
285
286typedef struct _SERVICE_FAILURE_ACTIONSW {
287 DWORD dwResetPeriod;
288 LPWSTR lpRebootMsg;
289 LPWSTR lpCommand;
290 DWORD cActions;
291 SC_ACTION * lpsaActions;
292} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
293
294DECL_WINELIB_TYPE_AW(SERVICE_FAILURE_ACTIONS)
295DECL_WINELIB_TYPE_AW(LPSERVICE_FAILURE_ACTIONS)
296
Hans Leidekker0cc20312005-01-03 17:12:51 +0000297typedef struct _QUERY_SERVICE_LOCK_STATUSA
298{
299 DWORD fIsLocked;
300 LPSTR lpLockOwner;
301 DWORD dwLockDuration;
302} QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
303
304typedef struct _QUERY_SERVICE_LOCK_STATUSW
305{
306 DWORD fIsLocked;
307 LPWSTR lpLockOwner;
308 DWORD dwLockDuration;
309} QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
310
311DECL_WINELIB_TYPE_AW(QUERY_SERVICE_LOCK_STATUS)
312
Patrik Stridvall4a739731999-07-04 11:01:21 +0000313/* Service control handler function prototype */
314
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000315typedef VOID (WINAPI *LPHANDLER_FUNCTION)(DWORD);
Mike McCormack453436d2004-10-21 19:56:17 +0000316typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
Patrik Stridvall4a739731999-07-04 11:01:21 +0000317
318/* API function prototypes */
319
Alexandre Julliard2d1da342007-11-07 12:27:27 +0100320WINADVAPI BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
321WINADVAPI BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
322#define ChangeServiceConfig WINELIB_NAME_AW(ChangeServiceConfig)
323WINADVAPI BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
324WINADVAPI BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
325#define ChangeServiceConfig2 WINELIB_NAME_AW(ChangeServiceConfig2)
326WINADVAPI BOOL WINAPI CloseServiceHandle(SC_HANDLE);
327WINADVAPI BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
328WINADVAPI SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR);
329WINADVAPI SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
330#define CreateService WINELIB_NAME_AW(CreateService)
331WINADVAPI BOOL WINAPI DeleteService(SC_HANDLE);
332WINADVAPI BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,LPDWORD,LPDWORD);
333WINADVAPI BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,LPDWORD,LPDWORD);
334#define EnumDependentServices WINELIB_NAME_AW(EnumDependentServices)
335WINADVAPI BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,LPDWORD,LPDWORD,LPDWORD);
336WINADVAPI BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,LPDWORD,LPDWORD,LPDWORD);
337#define EnumServicesStatus WINELIB_NAME_AW(EnumServicesStatus)
338WINADVAPI BOOL WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
339WINADVAPI BOOL WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
340#define EnumServicesStatus WINELIB_NAME_AW(EnumServicesStatus)
341WINADVAPI BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,LPDWORD);
342WINADVAPI BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,LPDWORD);
343#define GetServiceDisplayName WINELIB_NAME_AW(GetServiceDisplayName)
344WINADVAPI BOOL WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,LPDWORD);
345WINADVAPI BOOL WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,LPDWORD);
346#define GetServiceKeyName WINELIB_NAME_AW(GetServiceKeyName)
347WINADVAPI SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE);
348WINADVAPI BOOL WINAPI NotifyBootConfigStatus(BOOL);
349WINADVAPI SC_HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
350WINADVAPI SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
351#define OpenSCManager WINELIB_NAME_AW(OpenSCManager)
352WINADVAPI SC_HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
353WINADVAPI SC_HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
354#define OpenService WINELIB_NAME_AW(OpenService)
355WINADVAPI BOOL WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
356WINADVAPI BOOL WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
357WINADVAPI BOOL WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,LPDWORD);
358WINADVAPI BOOL WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,LPDWORD);
359#define QueryServiceConfig WINELIB_NAME_AW(QueryServiceConfig)
Stefan Leichter6cb602c2008-03-21 09:49:57 +0100360WINADVAPI BOOL WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
361WINADVAPI BOOL WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
362#define QueryServiceConfig2 WINELIB_NAME_AW(QueryServiceConfig2)
Alexandre Julliard2d1da342007-11-07 12:27:27 +0100363WINADVAPI BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,LPDWORD);
364WINADVAPI BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,LPDWORD);
365#define QueryServiceLockStatus WINELIB_NAME_AW(QueryServiceLockStatus)
366WINADVAPI BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
367WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
368WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
369#define RegisterServiceCtrlHandler WINELIB_NAME_AW(RegisterServiceCtrlHandler)
370WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
371WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
372#define RegisterServiceCtrlHandlerEx WINELIB_NAME_AW(RegisterServiceCtrlHandlerEx)
373WINADVAPI BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
374WINADVAPI BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
375WINADVAPI BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
376WINADVAPI BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
377#define StartService WINELIB_NAME_AW(StartService)
378WINADVAPI BOOL WINAPI StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA*);
379WINADVAPI BOOL WINAPI StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW*);
380#define StartServiceCtrlDispatcher WINELIB_NAME_AW(StartServiceCtrlDispatcher)
381WINADVAPI BOOL WINAPI UnlockServiceDatabase(SC_LOCK);
Mike McCormack9b513ad2003-12-02 03:48:53 +0000382
Patrik Stridvall4a739731999-07-04 11:01:21 +0000383#ifdef __cplusplus
384} /* extern "C" */
385#endif /* defined(__cplusplus) */
386
387#endif /* !defined(__WINE_WINSVC_H) */