[2170] | 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 |
|
---|
| 79 | typedef HANDLE SC_HANDLE;
|
---|
| 80 | typedef SC_HANDLE *LPSC_HANDLE;
|
---|
| 81 | typedef LPVOID SC_LOCK;
|
---|
| 82 | typedef DWORD SERVICE_STATUS_HANDLE;
|
---|
| 83 | typedef VOID (* WINAPI LPHANDLER_FUNCTION)(DWORD dwControl);
|
---|
| 84 |
|
---|
| 85 |
|
---|
| 86 | typedef 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 |
|
---|
| 96 | typedef struct _ENUM_SERVICE_STATUSA {
|
---|
| 97 | LPSTR lpServiceName;
|
---|
| 98 | LPSTR lpDisplayName;
|
---|
| 99 | SERVICE_STATUS ServiceStatus;
|
---|
| 100 | } ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
|
---|
| 101 |
|
---|
| 102 | typedef struct _ENUM_SERVICE_STATUSW {
|
---|
| 103 | LPWSTR lpServiceName;
|
---|
| 104 | LPWSTR lpDisplayName;
|
---|
| 105 | SERVICE_STATUS ServiceStatus;
|
---|
| 106 | } ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
|
---|
| 107 |
|
---|
| 108 | typedef struct _QUERY_SERVICE_LOCK_STATUSA {
|
---|
| 109 | DWORD fIsLocked;
|
---|
| 110 | LPSTR lpLockOwner;
|
---|
| 111 | DWORD dwLockDuration;
|
---|
| 112 | } QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
|
---|
| 113 |
|
---|
| 114 | typedef struct _QUERY_SERVICE_LOCK_STATUSW {
|
---|
| 115 | DWORD fIsLocked;
|
---|
| 116 | LPWSTR lpLockOwner;
|
---|
| 117 | DWORD dwLockDuration;
|
---|
| 118 | } QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
|
---|
| 119 |
|
---|
| 120 | typedef 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 |
|
---|
| 132 | typedef 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 */
|
---|
| 145 | typedef VOID (* CALLBACK LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR);
|
---|
| 146 | typedef VOID (* CALLBACK LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR);
|
---|
| 147 | DECL_WINELIB_TYPE_AW(LPSERVICE_MAIN_FUNCTION)
|
---|
| 148 |
|
---|
| 149 | /* service start table */
|
---|
| 150 | typedef struct
|
---|
| 151 | {
|
---|
| 152 | LPSTR lpServiceName;
|
---|
| 153 | LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
|
---|
| 154 | } *LPSERVICE_TABLE_ENTRYA, SERVICE_TABLE_ENTRYA;
|
---|
| 155 |
|
---|
| 156 | typedef struct
|
---|
| 157 | {
|
---|
| 158 | LPWSTR lpServiceName;
|
---|
| 159 | LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
|
---|
| 160 | } *LPSERVICE_TABLE_ENTRYW, SERVICE_TABLE_ENTRYW;
|
---|
| 161 |
|
---|
| 162 | DECL_WINELIB_TYPE_AW(SERVICE_TABLE_ENTRY)
|
---|
| 163 | DECL_WINELIB_TYPE_AW(LPSERVICE_TABLE_ENTRY)
|
---|
| 164 |
|
---|
| 165 | #ifdef UNICODE
|
---|
| 166 | typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS;
|
---|
| 167 | typedef LPQUERY_SERVICE_LOCK_STATUSW LPQUERY_SERVICE_LOCK_STATUS;
|
---|
| 168 | typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS;
|
---|
| 169 | typedef LPENUM_SERVICE_STATUSW LPENUM_SERVICE_STATUS;
|
---|
| 170 | typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG;
|
---|
| 171 | typedef LPQUERY_SERVICE_CONFIGW LPQUERY_SERVICE_CONFIG;
|
---|
| 172 | #else
|
---|
| 173 | typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
|
---|
| 174 | typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS;
|
---|
| 175 | typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
|
---|
| 176 | typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS;
|
---|
| 177 | typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
|
---|
| 178 | typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG;
|
---|
| 179 | #endif
|
---|
| 180 |
|
---|
| 181 | HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
|
---|
| 182 | HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
|
---|
| 183 | #define OpenSCManager WINELIB_NAME_AW(OpenSCManager)
|
---|
| 184 | HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
|
---|
| 185 | HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
|
---|
| 186 | #define OpenService WINELIB_NAME_AW(OpenService)
|
---|
| 187 |
|
---|
| 188 | BOOL WINAPI CloseServiceHandle(SC_HANDLE);
|
---|
| 189 | BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
|
---|
| 190 | BOOL WINAPI DeleteService(SC_HANDLE);
|
---|
| 191 |
|
---|
| 192 | BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
|
---|
| 193 | BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
|
---|
| 194 | #define StartService WINELIB_NAME_AW(StartService)
|
---|
| 195 |
|
---|
| 196 |
|
---|
| 197 | BOOL WINAPI QueryServiceConfigA(SC_HANDLE schService,
|
---|
| 198 | LPQUERY_SERVICE_CONFIG lpqscServConfig,
|
---|
| 199 | DWORD cbBufSize,
|
---|
| 200 | LPDWORD lpcbBytesNeeded);
|
---|
| 201 |
|
---|
| 202 | BOOL 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 |
|
---|
| 210 | BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE schSCManager,
|
---|
| 211 | LPQUERY_SERVICE_LOCK_STATUSA lpqslsLockStat,
|
---|
| 212 | DWORD cbBufSize,
|
---|
| 213 | LPDWORD lpcbBytesNeeded);
|
---|
| 214 |
|
---|
| 215 | BOOL 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 |
|
---|
| 222 | BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE schService,
|
---|
| 223 | SECURITY_INFORMATION fdwSecurityInfo,
|
---|
| 224 | PSECURITY_DESCRIPTOR psdSecurityDesc,
|
---|
| 225 | DWORD cbBufSize,
|
---|
| 226 | LPDWORD lpcbBytesNeeded);
|
---|
| 227 |
|
---|
| 228 | BOOL WINAPI QueryServiceStatus(SC_HANDLE schService,
|
---|
| 229 | LPSERVICE_STATUS lpssServiceStatus);
|
---|
| 230 |
|
---|
| 231 | BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE schService,
|
---|
| 232 | SECURITY_INFORMATION fdwSecurityInfo,
|
---|
| 233 | PSECURITY_DESCRIPTOR psdSecurityDesc);
|
---|
| 234 |
|
---|
| 235 | BOOL 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 |
|
---|
| 248 | BOOL 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 |
|
---|
| 262 | SC_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 |
|
---|
| 276 | SC_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 |
|
---|
| 292 | BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE hSCManager,
|
---|
| 293 | LPCSTR lpServiceName,
|
---|
| 294 | LPTSTR lpDisplayName,
|
---|
| 295 | LPDWORD lpcchBuffer);
|
---|
| 296 |
|
---|
| 297 | BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE hSCManager,
|
---|
| 298 | LPCWSTR lpServiceName,
|
---|
| 299 | LPWSTR lpDisplayName,
|
---|
| 300 | LPDWORD lpcchBuffer);
|
---|
| 301 |
|
---|
| 302 | #define GetServiceDisplayName WINELIB_NAME_AW(GetServiceDisplayName)
|
---|
| 303 |
|
---|
| 304 | BOOL WINAPI EnumDependentServicesA(SC_HANDLE hService,
|
---|
| 305 | DWORD dwServiceState,
|
---|
| 306 | LPENUM_SERVICE_STATUSA lpServices,
|
---|
| 307 | DWORD cbBufSize,
|
---|
| 308 | LPDWORD pcbBytesNeeded,
|
---|
| 309 | LPDWORD lpServicesReturned);
|
---|
| 310 |
|
---|
| 311 | BOOL 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 |
|
---|
| 320 | BOOL 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 |
|
---|
| 329 | BOOL 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 |
|
---|
| 340 | BOOL WINAPI GetServiceKeyNameA(SC_HANDLE hSCManager,
|
---|
| 341 | LPCSTR lpDisplayName,
|
---|
| 342 | LPTSTR lpServiceName,
|
---|
| 343 | LPDWORD lpcchBuffer);
|
---|
| 344 |
|
---|
| 345 | BOOL WINAPI GetServiceKeyNameW(SC_HANDLE hSCManager,
|
---|
| 346 | LPCWSTR lpDisplayName,
|
---|
| 347 | LPWSTR lpServiceName,
|
---|
| 348 | LPDWORD lpcchBuffer);
|
---|
| 349 |
|
---|
| 350 | #define GetServiceKeyName WINELIB_NAME_AW(GetServiceKeyName)
|
---|
| 351 |
|
---|
| 352 | SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE hSCManager);
|
---|
| 353 |
|
---|
| 354 | BOOL WINAPI UnlockServiceDatabase(SC_LOCK sclLock);
|
---|
| 355 |
|
---|
| 356 | #endif // __WINSVC_H__
|
---|