source: trunk/include/win/winsvc.h@ 10367

Last change on this file since 10367 was 2170, checked in by sandervl, 26 years ago

updates for service apis

File size: 15.5 KB
Line 
1/* $Id: winsvc.h,v 1.1 1999-12-21 00:29:31 sandervl Exp $ */
2#ifndef __WINSVC_H__
3#define __WINSVC_H__
4
5#include "winbase.h"
6
7#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
8#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
9
10#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
11#define SERVICES_FAILED_DATABASEA "ServicesFailed"
12
13#define SC_GROUP_IDENTIFIERW L'+'
14#define SC_GROUP_IDENTIFIERA '+'
15
16#ifdef UNICODE
17#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
18#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
19#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
20#else
21#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
22#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
23#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
24#endif
25
26
27#define SERVICE_NO_CHANGE 0xffffffff
28
29#define SERVICE_ACTIVE 0x00000001
30#define SERVICE_INACTIVE 0x00000002
31#define SERVICE_STATE_ALL (SERVICE_ACTIVE|SERVICE_INACTIVE)
32
33#define SERVICE_CONTROL_STOP 0x00000001
34#define SERVICE_CONTROL_PAUSE 0x00000002
35#define SERVICE_CONTROL_CONTINUE 0x00000003
36#define SERVICE_CONTROL_INTERROGATE 0x00000004
37#define SERVICE_CONTROL_SHUTDOWN 0x00000005
38
39#define SERVICE_STOPPED 0x00000001
40#define SERVICE_START_PENDING 0x00000002
41#define SERVICE_STOP_PENDING 0x00000003
42#define SERVICE_RUNNING 0x00000004
43#define SERVICE_CONTINUE_PENDING 0x00000005
44#define SERVICE_PAUSE_PENDING 0x00000006
45#define SERVICE_PAUSED 0x00000007
46
47#define SERVICE_ACCEPT_STOP 0x00000001
48#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
49#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
50
51#define SC_MANAGER_CONNECT 0x0001
52#define SC_MANAGER_CREATE_SERVICE 0x0002
53#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
54#define SC_MANAGER_LOCK 0x0008
55#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
56#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
57
58#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SC_MANAGER_CONNECT| \
59 SC_MANAGER_CREATE_SERVICE|SC_MANAGER_ENUMERATE_SERVICE| \
60 SC_MANAGER_LOCK|SC_MANAGER_QUERY_LOCK_STATUS| \
61 SC_MANAGER_MODIFY_BOOT_CONFIG)
62
63#define SERVICE_QUERY_CONFIG 0x0001
64#define SERVICE_CHANGE_CONFIG 0x0002
65#define SERVICE_QUERY_STATUS 0x0004
66#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
67#define SERVICE_START 0x0010
68#define SERVICE_STOP 0x0020
69#define SERVICE_PAUSE_CONTINUE 0x0040
70#define SERVICE_INTERROGATE 0x0080
71#define SERVICE_USER_DEFINED_CONTROL 0x0100
72
73#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG| \
74 SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS| \
75 SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START| \
76 SERVICE_STOP|SERVICE_PAUSE_CONTINUE| \
77 SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL)
78
79typedef HANDLE SC_HANDLE;
80typedef SC_HANDLE *LPSC_HANDLE;
81typedef LPVOID SC_LOCK;
82typedef DWORD SERVICE_STATUS_HANDLE;
83typedef VOID (* WINAPI LPHANDLER_FUNCTION)(DWORD dwControl);
84
85
86typedef struct _SERVICE_STATUS {
87 DWORD dwServiceType;
88 DWORD dwCurrentState;
89 DWORD dwControlsAccepted;
90 DWORD dwWin32ExitCode;
91 DWORD dwServiceSpecificExitCode;
92 DWORD dwCheckPoint;
93 DWORD dwWaitHint;
94} SERVICE_STATUS, *LPSERVICE_STATUS;
95
96typedef struct _ENUM_SERVICE_STATUSA {
97 LPSTR lpServiceName;
98 LPSTR lpDisplayName;
99 SERVICE_STATUS ServiceStatus;
100} ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
101
102typedef struct _ENUM_SERVICE_STATUSW {
103 LPWSTR lpServiceName;
104 LPWSTR lpDisplayName;
105 SERVICE_STATUS ServiceStatus;
106} ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
107
108typedef struct _QUERY_SERVICE_LOCK_STATUSA {
109 DWORD fIsLocked;
110 LPSTR lpLockOwner;
111 DWORD dwLockDuration;
112} QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
113
114typedef struct _QUERY_SERVICE_LOCK_STATUSW {
115 DWORD fIsLocked;
116 LPWSTR lpLockOwner;
117 DWORD dwLockDuration;
118} QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
119
120typedef struct _QUERY_SERVICE_CONFIGA {
121 DWORD dwServiceType;
122 DWORD dwStartType;
123 DWORD dwErrorControl;
124 LPSTR lpBinaryPathName;
125 LPSTR lpLoadOrderGroup;
126 DWORD dwTagId;
127 LPSTR lpDependencies;
128 LPSTR lpServiceStartName;
129 LPSTR lpDisplayName;
130} QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;
131
132typedef struct _QUERY_SERVICE_CONFIGW {
133 DWORD dwServiceType;
134 DWORD dwStartType;
135 DWORD dwErrorControl;
136 LPWSTR lpBinaryPathName;
137 LPWSTR lpLoadOrderGroup;
138 DWORD dwTagId;
139 LPWSTR lpDependencies;
140 LPWSTR lpServiceStartName;
141 LPWSTR lpDisplayName;
142} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
143
144/* service main function prototype */
145typedef VOID (* CALLBACK LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR);
146typedef VOID (* CALLBACK LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR);
147DECL_WINELIB_TYPE_AW(LPSERVICE_MAIN_FUNCTION)
148
149/* service start table */
150typedef struct
151{
152 LPSTR lpServiceName;
153 LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
154} *LPSERVICE_TABLE_ENTRYA, SERVICE_TABLE_ENTRYA;
155
156typedef struct
157{
158 LPWSTR lpServiceName;
159 LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
160} *LPSERVICE_TABLE_ENTRYW, SERVICE_TABLE_ENTRYW;
161
162DECL_WINELIB_TYPE_AW(SERVICE_TABLE_ENTRY)
163DECL_WINELIB_TYPE_AW(LPSERVICE_TABLE_ENTRY)
164
165#ifdef UNICODE
166typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS;
167typedef LPQUERY_SERVICE_LOCK_STATUSW LPQUERY_SERVICE_LOCK_STATUS;
168typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS;
169typedef LPENUM_SERVICE_STATUSW LPENUM_SERVICE_STATUS;
170typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG;
171typedef LPQUERY_SERVICE_CONFIGW LPQUERY_SERVICE_CONFIG;
172#else
173typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
174typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS;
175typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
176typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS;
177typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
178typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG;
179#endif
180
181HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
182HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
183#define OpenSCManager WINELIB_NAME_AW(OpenSCManager)
184HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
185HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
186#define OpenService WINELIB_NAME_AW(OpenService)
187
188BOOL WINAPI CloseServiceHandle(SC_HANDLE);
189BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
190BOOL WINAPI DeleteService(SC_HANDLE);
191
192BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
193BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
194#define StartService WINELIB_NAME_AW(StartService)
195
196
197BOOL WINAPI QueryServiceConfigA(SC_HANDLE schService,
198 LPQUERY_SERVICE_CONFIG lpqscServConfig,
199 DWORD cbBufSize,
200 LPDWORD lpcbBytesNeeded);
201
202BOOL WINAPI QueryServiceConfigW(SC_HANDLE schService,
203 LPQUERY_SERVICE_CONFIG lpqscServConfig,
204 DWORD cbBufSize,
205 LPDWORD lpcbBytesNeeded);
206
207#define QueryServiceConfig WINELIB_NAME_AW(QueryServiceConfig)
208
209
210BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE schSCManager,
211 LPQUERY_SERVICE_LOCK_STATUSA lpqslsLockStat,
212 DWORD cbBufSize,
213 LPDWORD lpcbBytesNeeded);
214
215BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE schSCManager,
216 LPQUERY_SERVICE_LOCK_STATUSW lpqslsLockStat,
217 DWORD cbBufSize,
218 LPDWORD lpcbBytesNeeded);
219
220#define QueryServiceLockStatus WINELIB_NAME_AW(QueryServiceLockStatus)
221
222BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE schService,
223 SECURITY_INFORMATION fdwSecurityInfo,
224 PSECURITY_DESCRIPTOR psdSecurityDesc,
225 DWORD cbBufSize,
226 LPDWORD lpcbBytesNeeded);
227
228BOOL WINAPI QueryServiceStatus(SC_HANDLE schService,
229 LPSERVICE_STATUS lpssServiceStatus);
230
231BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE schService,
232 SECURITY_INFORMATION fdwSecurityInfo,
233 PSECURITY_DESCRIPTOR psdSecurityDesc);
234
235BOOL WINAPI ChangeServiceConfigA(SC_HANDLE hService,
236 DWORD dwServiceType,
237 DWORD dwStartType,
238 DWORD dwErrorControl,
239 LPCSTR lpBinaryPathName,
240 LPCSTR lpLoadOrderGroup,
241 LPDWORD lpdwTagId,
242 LPCSTR lpDependencies,
243 LPCSTR lpServiceStartName,
244 LPCSTR lpPassword,
245 LPCSTR lpDisplayName);
246
247
248BOOL WINAPI ChangeServiceConfigW(SC_HANDLE hService,
249 DWORD dwServiceType,
250 DWORD dwStartType,
251 DWORD dwErrorControl,
252 LPCWSTR lpBinaryPathName,
253 LPCWSTR lpLoadOrderGroup,
254 LPDWORD lpdwTagId,
255 LPCWSTR lpDependencies,
256 LPCWSTR lpServiceStartName,
257 LPCWSTR lpPassword,
258 LPCWSTR lpDisplayName);
259
260#define ChangeServiceConfig WINELIB_NAME_AW(ChangeServiceConfig)
261
262SC_HANDLE WINAPI CreateServiceA(SC_HANDLE hSCManager,
263 LPCSTR lpServiceName,
264 LPCSTR lpDisplayName,
265 DWORD dwDesiredAccess,
266 DWORD dwServiceType,
267 DWORD dwStartType,
268 DWORD dwErrorControl,
269 LPCSTR lpBinaryPathName,
270 LPCSTR lpLoadOrderGroup,
271 LPDWORD lpdwTagId,
272 LPCSTR lpDependencies,
273 LPCSTR lpServiceStartName,
274 LPCSTR lpPassword);
275
276SC_HANDLE WINAPI CreateServiceW(SC_HANDLE hSCManager,
277 LPCWSTR lpServiceName,
278 LPCWSTR lpDisplayName,
279 DWORD dwDesiredAccess,
280 DWORD dwServiceType,
281 DWORD dwStartType,
282 DWORD dwErrorControl,
283 LPCWSTR lpBinaryPathName,
284 LPCWSTR lpLoadOrderGroup,
285 LPDWORD lpdwTagId,
286 LPCWSTR lpDependencies,
287 LPCWSTR lpServiceStartName,
288 LPCWSTR lpPassword);
289
290#define CreateService WINELIB_NAME_AW(CreateService)
291
292BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE hSCManager,
293 LPCSTR lpServiceName,
294 LPTSTR lpDisplayName,
295 LPDWORD lpcchBuffer);
296
297BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE hSCManager,
298 LPCWSTR lpServiceName,
299 LPWSTR lpDisplayName,
300 LPDWORD lpcchBuffer);
301
302#define GetServiceDisplayName WINELIB_NAME_AW(GetServiceDisplayName)
303
304BOOL WINAPI EnumDependentServicesA(SC_HANDLE hService,
305 DWORD dwServiceState,
306 LPENUM_SERVICE_STATUSA lpServices,
307 DWORD cbBufSize,
308 LPDWORD pcbBytesNeeded,
309 LPDWORD lpServicesReturned);
310
311BOOL WINAPI EnumDependentServicesW(SC_HANDLE hService,
312 DWORD dwServiceState,
313 LPENUM_SERVICE_STATUSW lpServices,
314 DWORD cbBufSize,
315 LPDWORD pcbBytesNeeded,
316 LPDWORD lpServicesReturned);
317
318#define EnumDependentServices WINELIB_NAME_AW(EnumDependentServices)
319
320BOOL WINAPI EnumServicesStatusA(SC_HANDLE hSCManager,
321 DWORD dwServiceType,
322 DWORD dwServiceState,
323 LPENUM_SERVICE_STATUSA lpServices,
324 DWORD cbBufSize,
325 LPDWORD pcbBytesNeeded,
326 LPDWORD lpServicesReturned,
327 LPDWORD lpResumeHandle);
328
329BOOL WINAPI EnumServicesStatusW(SC_HANDLE hSCManager,
330 DWORD dwServiceType,
331 DWORD dwServiceState,
332 LPENUM_SERVICE_STATUSW lpServices,
333 DWORD cbBufSize,
334 LPDWORD pcbBytesNeeded,
335 LPDWORD lpServicesReturned,
336 LPDWORD lpResumeHandle);
337
338#define EnumServicesStatus WINELIB_NAME_AW(EnumServicesStatus)
339
340BOOL WINAPI GetServiceKeyNameA(SC_HANDLE hSCManager,
341 LPCSTR lpDisplayName,
342 LPTSTR lpServiceName,
343 LPDWORD lpcchBuffer);
344
345BOOL WINAPI GetServiceKeyNameW(SC_HANDLE hSCManager,
346 LPCWSTR lpDisplayName,
347 LPWSTR lpServiceName,
348 LPDWORD lpcchBuffer);
349
350#define GetServiceKeyName WINELIB_NAME_AW(GetServiceKeyName)
351
352SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE hSCManager);
353
354BOOL WINAPI UnlockServiceDatabase(SC_LOCK sclLock);
355
356#endif // __WINSVC_H__
Note: See TracBrowser for help on using the repository browser.