| 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__ | 
|---|