Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygensvcctl.idl
Go to the documentation of this file.
00001 /* 00002 * Service Control Manager (SCM) interface definition 00003 */ 00004 00005 #include <ms-dtyp.idl> 00006 00007 const unsigned int MAX_SERVICE_NAME_LENGTH = 255; 00008 const unsigned short SC_MAX_DEPEND_SIZE = 4 * 1024; 00009 const unsigned short SC_MAX_NAME_LENGTH = MAX_SERVICE_NAME_LENGTH + 1; 00010 const unsigned short SC_MAX_PATH_LENGTH = 32 * 1024; 00011 const unsigned short SC_MAX_PWD_SIZE = 514; 00012 const unsigned short SC_MAX_COMPUTER_NAME_LENGTH = 1024; 00013 const unsigned short SC_MAX_ACCOUNT_NAME_LENGTH = 2 * 1024; 00014 const unsigned short SC_MAX_COMMENT_LENGTH = 128; 00015 const unsigned short SC_MAX_ARGUMENT_LENGTH = 1024; 00016 const unsigned short SC_MAX_ARGUMENTS = 1024; 00017 00018 typedef [handle] LPSTR SVCCTL_HANDLEA; 00019 typedef [handle] LPWSTR SVCCTL_HANDLEW; 00020 typedef [handle] ULONG_PTR RPC_SERVICE_STATUS_HANDLE; 00021 typedef [context_handle] PVOID SC_RPC_HANDLE; 00022 typedef SC_RPC_HANDLE* LPSC_RPC_HANDLE; 00023 typedef [context_handle] PVOID SC_RPC_LOCK; 00024 typedef SC_RPC_LOCK* LPSC_RPC_LOCK; 00025 typedef [context_handle] PVOID SC_NOTIFY_RPC_HANDLE; 00026 typedef SC_NOTIFY_RPC_HANDLE* LPSC_NOTIFY_RPC_HANDLE; 00027 typedef [range(0, 1024 * 4)] DWORD BOUNDED_DWORD_4K; 00028 typedef BOUNDED_DWORD_4K* LPBOUNDED_DWORD_4K; 00029 typedef [range(0, 1024 * 8)] DWORD BOUNDED_DWORD_8K; 00030 typedef BOUNDED_DWORD_8K* LPBOUNDED_DWORD_8K; 00031 typedef [range(0, 1024 * 256)] DWORD BOUNDED_DWORD_256K; 00032 typedef BOUNDED_DWORD_256K* LPBOUNDED_DWORD_256K; 00033 00034 cpp_quote("#if 0") 00035 00036 typedef struct _SERVICE_STATUS { 00037 DWORD dwServiceType; 00038 DWORD dwCurrentState; 00039 DWORD dwControlsAccepted; 00040 DWORD dwWin32ExitCode; 00041 DWORD dwServiceSpecificExitCode; 00042 DWORD dwCheckPoint; 00043 DWORD dwWaitHint; 00044 } SERVICE_STATUS, *LPSERVICE_STATUS; 00045 00046 typedef struct _SERVICE_STATUS_PROCESS { 00047 DWORD dwServiceType; 00048 DWORD dwCurrentState; 00049 DWORD dwControlsAccepted; 00050 DWORD dwWin32ExitCode; 00051 DWORD dwServiceSpecificExitCode; 00052 DWORD dwCheckPoint; 00053 DWORD dwWaitHint; 00054 DWORD dwProcessId; 00055 DWORD dwServiceFlags; 00056 } SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS; 00057 00058 typedef struct _ENUM_SERVICE_STATUSA { 00059 [string] LPSTR lpServiceName; 00060 [string] LPSTR lpDisplayName; 00061 SERVICE_STATUS ServiceStatus; 00062 } ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA; 00063 00064 typedef struct _ENUM_SERVICE_STATUSW { 00065 [string] LPWSTR lpServiceName; 00066 [string] LPWSTR lpDisplayName; 00067 SERVICE_STATUS ServiceStatus; 00068 } ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW; 00069 00070 typedef struct _ENUM_SERVICE_STATUS_PROCESSA { 00071 [string] LPSTR lpServiceName; 00072 [string] LPSTR lpDisplayName; 00073 SERVICE_STATUS_PROCESS ServiceStatusProcess; 00074 } ENUM_SERVICE_STATUS_PROCESSA, *LPENUM_SERVICE_STATUS_PROCESSA; 00075 00076 typedef struct _ENUM_SERVICE_STATUS_PROCESSW { 00077 [string] LPWSTR lpServiceName; 00078 [string] LPWSTR lpDisplayName; 00079 SERVICE_STATUS_PROCESS ServiceStatusProcess; 00080 } ENUM_SERVICE_STATUS_PROCESSW, *LPENUM_SERVICE_STATUS_PROCESSW; 00081 00082 typedef struct _QUERY_SERVICE_CONFIGA { 00083 DWORD dwServiceType; 00084 DWORD dwStartType; 00085 DWORD dwErrorControl; 00086 [string] LPSTR lpBinaryPathName; 00087 [string] LPSTR lpLoadOrderGroup; 00088 DWORD dwTagId; 00089 [string] LPSTR lpDependencies; 00090 [string] LPSTR lpServiceStartName; 00091 LPSTR lpDisplayName; 00092 } QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA; 00093 00094 typedef struct _QUERY_SERVICE_CONFIGW { 00095 DWORD dwServiceType; 00096 DWORD dwStartType; 00097 DWORD dwErrorControl; 00098 [string] LPWSTR lpBinaryPathName; 00099 [string] LPWSTR lpLoadOrderGroup; 00100 DWORD dwTagId; 00101 [string] LPWSTR lpDependencies; 00102 [string] LPWSTR lpServiceStartName; 00103 LPWSTR lpDisplayName; 00104 } QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW; 00105 00106 typedef struct _QUERY_SERVICE_LOCK_STATUSA { 00107 DWORD fIsLocked; 00108 [string] LPSTR lpLockOwner; 00109 DWORD dwLockDuration; 00110 } QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA; 00111 00112 typedef struct _QUERY_SERVICE_LOCK_STATUSW { 00113 DWORD fIsLocked; 00114 [string] LPWSTR lpLockOwner; 00115 DWORD dwLockDuration; 00116 } QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW; 00117 00118 typedef [v1_enum] enum _SC_ACTION_TYPE { 00119 SC_ACTION_NONE = 0, 00120 SC_ACTION_RESTART = 1, 00121 SC_ACTION_REBOOT = 2, 00122 SC_ACTION_RUN_COMMAND = 3, 00123 } SC_ACTION_TYPE; 00124 00125 typedef struct _SC_ACTION { 00126 SC_ACTION_TYPE Type; 00127 DWORD Delay; 00128 } SC_ACTION, *LPSC_ACTION; 00129 00130 typedef [v1_enum] enum _SC_ENUM_TYPE { 00131 SC_ENUM_PROCESS_INFO = 0, 00132 } SC_ENUM_TYPE; 00133 00134 typedef struct _SERVICE_DESCRIPTIONA { 00135 [string] LPSTR lpDescription; 00136 } SERVICE_DESCRIPTIONA, *LPSERVICE_DESCRIPTIONA; 00137 00138 typedef struct _SERVICE_DESCRIPTIONW { 00139 [string] LPWSTR lpDescription; 00140 } SERVICE_DESCRIPTIONW, *LPSERVICE_DESCRIPTIONW; 00141 00142 typedef struct _SERVICE_FAILURE_ACTIONSA { 00143 DWORD dwResetPeriod; 00144 [string] LPSTR lpRebootMsg; 00145 [string] LPSTR lpCommand; 00146 [range(0, 1024)] DWORD cActions; 00147 [size_is(cActions)] SC_ACTION* lpsaActions; 00148 } SERVICE_FAILURE_ACTIONSA, *LPSERVICE_FAILURE_ACTIONSA; 00149 00150 typedef struct _SERVICE_FAILURE_ACTIONSW { 00151 DWORD dwResetPeriod; 00152 [string] LPWSTR lpRebootMsg; 00153 [string] LPWSTR lpCommand; 00154 [range(0, 1024)] DWORD cActions; 00155 [size_is(cActions)] SC_ACTION* lpsaActions; 00156 } SERVICE_FAILURE_ACTIONSW, *LPSERVICE_FAILURE_ACTIONSW; 00157 00158 cpp_quote("#endif") 00159 00160 typedef struct _SERVICE_DELAYED_AUTO_START_INFO { 00161 BOOL fDelayedAutoStart; 00162 } SERVICE_DELAYED_AUTO_START_INFO, *LPSERVICE_DELAYED_AUTO_START_INFO; 00163 00164 typedef struct _SERVICE_FAILURE_ACTIONS_FLAG { 00165 BOOL fFailureActionsOnNonCrashFailures; 00166 } SERVICE_FAILURE_ACTIONS_FLAG, *LPSERVICE_FAILURE_ACTIONS_FLAG; 00167 00168 typedef struct _SERVICE_SID_INFO { 00169 DWORD dwServicesSidType; 00170 } SERVICE_SID_INFO, *LPSERVICE_SID_INFO; 00171 00172 typedef struct _SERVICE_RPC_REQUIRED_PRIVILEGES_INFO { 00173 [range(0, 1024 * 4)] DWORD cbRequiredPrivileges; 00174 [size_is(cbRequiredPrivileges)] PBYTE pRequiredPrivileges; 00175 } SERVICE_RPC_REQUIRED_PRIVILEGES_INFO, *LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFO; 00176 00177 typedef struct _SERVICE_PRESHUTDOWN_INFO { 00178 DWORD dwPreshutdownTimeout; 00179 } SERVICE_PRESHUTDOWN_INFO, *LPSERVICE_PRESHUTDOWN_INFO; 00180 00181 typedef struct _SC_RPC_CONFIG_INFOA { 00182 DWORD dwInfoLevel; 00183 [switch_is(dwInfoLevel)] union { 00184 [case(1)] LPSERVICE_DESCRIPTIONA psd; 00185 [case(2)] LPSERVICE_FAILURE_ACTIONSA psfa; 00186 [case(3)] LPSERVICE_DELAYED_AUTO_START_INFO psda; 00187 [case(4)] LPSERVICE_FAILURE_ACTIONS_FLAG psfaf; 00188 [case(5)] LPSERVICE_SID_INFO pssid; 00189 [case(6)] LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFO psrp; 00190 [case(7)] LPSERVICE_PRESHUTDOWN_INFO psps; 00191 } DUMMYUNIONNAME; 00192 [string] LPSTR lpDescription; //FIXME 00193 } SC_RPC_CONFIG_INFOA, *LPSC_RPC_CONFIG_INFOA; 00194 00195 typedef struct _SC_RPC_CONFIG_INFOW { 00196 DWORD dwInfoLevel; 00197 [switch_is(dwInfoLevel)] union { 00198 [case(1)] LPSERVICE_DESCRIPTIONW psd; 00199 [case(2)] LPSERVICE_FAILURE_ACTIONSW psfa; 00200 [case(3)] LPSERVICE_DELAYED_AUTO_START_INFO psda; 00201 [case(4)] LPSERVICE_FAILURE_ACTIONS_FLAG psfaf; 00202 [case(5)] LPSERVICE_SID_INFO pssid; 00203 [case(6)] LPSERVICE_RPC_REQUIRED_PRIVILEGES_INFO psrp; 00204 [case(7)] LPSERVICE_PRESHUTDOWN_INFO psps; 00205 } DUMMYUNIONNAME; 00206 } SC_RPC_CONFIG_INFOW, *LPSC_RPC_CONFIG_INFOW; 00207 00208 typedef struct _SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 { 00209 ULONGLONG ullThreadId; 00210 DWORD dwNotifyMask; 00211 UCHAR CallbackAddressArray[16]; 00212 UCHAR CallbackParamAddressArray[16]; 00213 SERVICE_STATUS_PROCESS ServiceStatus; 00214 DWORD dwNotificationStatus; 00215 DWORD dwSequence; 00216 } SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1, *PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1; 00217 00218 typedef struct _SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 { 00219 ULONGLONG ullThreadId; 00220 DWORD dwNotifyMask; 00221 UCHAR CallbackAddressArray[16]; 00222 UCHAR CallbackParamAddressArray[16]; 00223 SERVICE_STATUS_PROCESS ServiceStatus; 00224 DWORD dwNotificationStatus; 00225 DWORD dwSequence; 00226 DWORD dwNotificationTriggered; 00227 [string] PWSTR pszServiceNames; 00228 } SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2, *PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2; 00229 00230 typedef struct _SC_RPC_NOTIFY_PARAMS { 00231 DWORD dwInfoLevel; 00232 [switch_is(dwInfoLevel)] union { 00233 [case(1)] PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 pStatusChangeParam1; 00234 [case(2)] PSERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 pStatusChangeParam2; 00235 }; 00236 } SC_RPC_NOTIFY_PARAMS, *LPSC_RPC_NOTIFY_PARAMS; 00237 00238 typedef struct _SC_RPC_NOTIFY_PARAMS_LIST { 00239 BOUNDED_DWORD_4K cElements; 00240 [size_is(cElements)] SC_RPC_NOTIFY_PARAMS NotifyParamsArray[]; 00241 } SC_RPC_NOTIFY_PARAMS_LIST, *PSC_RPC_NOTIFY_PARAMS_LIST; 00242 00243 cpp_quote("#if 0") 00244 00245 #if 0 00246 typedef 00247 [switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_IN_PARAMSA { 00248 [case(1)] PSERVICE_CONTROL_STATUS_REASON_IN_PARAMSA psrInParams; 00249 } SC_RPC_SERVICE_CONTROL_IN_PARAMSA, *LPSC_RPC_SERVICE_CONTROL_IN_PARAMSA; 00250 00251 typedef 00252 [switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_IN_PARAMSW { 00253 [case(1)] PSERVICE_CONTROL_STATUS_REASON_IN_PARAMSW psrInParams; 00254 } SC_RPC_SERVICE_CONTROL_IN_PARAMSW, *LPSC_RPC_SERVICE_CONTROL_IN_PARAMSW; 00255 00256 typedef 00257 [switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_OUT_PARAMSA { 00258 [case(1)] PSERVICE_CONTROL_STATUS_REASON_OUT_PARAMS psrOutParams; 00259 } SC_RPC_SERVICE_CONTROL_OUT_PARAMSA, *LPSC_RPC_SERVICE_CONTROL_OUT_PARAMSA; 00260 00261 typedef 00262 [switch_type(DWORD)] union _SC_RPC_SERVICE_CONTROL_OUT_PARAMSW { 00263 [case(1)] PSERVICE_CONTROL_STATUS_REASON_OUT_PARAMS psrOutParams; 00264 } SC_RPC_SERVICE_CONTROL_OUT_PARAMSW, *LPSC_RPC_SERVICE_CONTROL_OUT_PARAMSW; 00265 #endif 00266 00267 typedef [v1_enum] enum _SC_STATUS_TYPE { 00268 SC_STATUS_PROCESS_INFO = 0, 00269 } SC_STATUS_TYPE; 00270 00271 typedef struct _SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA { 00272 DWORD dwReason; 00273 [string] LPSTR pszComment; 00274 } SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA, *LPSERVICE_CONTROL_STATUS_REASON_IN_PARAMSA; 00275 00276 typedef struct _SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW { 00277 DWORD dwReason; 00278 [string] LPWSTR pszComment; 00279 } SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW, *LPSERVICE_CONTROL_STATUS_REASON_IN_PARAMSW; 00280 00281 typedef struct _SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS { 00282 SERVICE_STATUS_PROCESS ServiceStatus; 00283 } SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS, *LPSERVICE_CONTROL_STATUS_REASON_OUT_PARAMS; 00284 00285 typedef SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 SERVICE_NOTIFY_STATUS_CHANGE_PARAMS, *LPSERVICE_NOTIFY_STATUS_CHANGE_PARAMS; 00286 00287 cpp_quote("#endif") 00288 00289 typedef struct _STRING_PTRSA { 00290 [string] LPSTR StringPtr; 00291 } STRING_PTRSA, *PSTRING_PTRSA, *LPSTRING_PTRSA; 00292 00293 typedef struct _STRING_PTRSW { 00294 [string] LPWSTR StringPtr; 00295 } STRING_PTRSW, *PSTRING_PTRSW, *LPSTRING_PTRSW; 00296 00297 [ 00298 uuid(367abb81-9844-35f1-ad32-98f038001003), 00299 version(2.0), 00300 pointer_default(unique), 00301 endpoint("ncacn_np:[\\pipe\\ntsvcs]") 00302 ] 00303 interface svcctl 00304 { 00305 /* Function 0 */ 00306 DWORD RCloseServiceHandle( 00307 [in, out] LPSC_RPC_HANDLE hSCObject); 00308 00309 /* Function 1 */ 00310 DWORD RControlService( 00311 [in] SC_RPC_HANDLE hService, 00312 [in] DWORD dwControl, 00313 [out] LPSERVICE_STATUS lpServiceStatus); 00314 00315 /* Function 2 */ 00316 DWORD RDeleteService( 00317 [in] SC_RPC_HANDLE hService); 00318 00319 /* Function 3 */ 00320 DWORD RLockServiceDatabase( 00321 [in] SC_RPC_HANDLE hSCManager, 00322 [out] LPSC_RPC_LOCK lpLock); 00323 00324 /* Function 4 */ 00325 DWORD RQueryServiceObjectSecurity( 00326 [in] SC_RPC_HANDLE hService, 00327 [in] SECURITY_INFORMATION dwSecurityInformation, 00328 [out, size_is(cbBufSize)] LPBYTE lpSecurityDescriptor, 00329 [in, range(0, 1024 * 256)] DWORD cbBufSize, 00330 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded); 00331 00332 /* Function 5 */ 00333 DWORD RSetServiceObjectSecurity( 00334 [in] SC_RPC_HANDLE hService, 00335 [in] DWORD dwSecurityInformation, 00336 [in, size_is(dwSecuityDescriptorSize)] LPBYTE lpSecurityDescriptor, 00337 [in] DWORD dwSecuityDescriptorSize); 00338 00339 /* Function 6 */ 00340 DWORD RQueryServiceStatus( 00341 [in] SC_RPC_HANDLE hService, 00342 [out] LPSERVICE_STATUS lpServiceStatus); 00343 00344 /* Function 7 */ 00345 DWORD RSetServiceStatus( 00346 [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus, 00347 [in] LPSERVICE_STATUS lpServiceStatus); 00348 00349 /* Function 8 */ 00350 DWORD RUnlockServiceDatabase( 00351 [in, out] LPSC_RPC_LOCK Lock); 00352 00353 /* Function 9 */ 00354 DWORD RNotifyBootConfigStatus( 00355 [in, string, unique] SVCCTL_HANDLEW lpMachineName, 00356 [in] DWORD BootAcceptable); 00357 00358 /* Function 10 */ 00359 DWORD RI_ScSetServiceBitsW( 00360 [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus, 00361 [in] DWORD dwServiceBits, 00362 [in] BOOL bSetBitsOn, 00363 [in] BOOL bUpdateImmediately, 00364 [in, string, unique] LPWSTR lpString); 00365 00366 /* Function 11 */ 00367 DWORD RChangeServiceConfigW( 00368 [in] SC_RPC_HANDLE hService, 00369 [in] DWORD dwServiceType, 00370 [in] DWORD dwStartType, 00371 [in] DWORD dwErrorControl, 00372 [in, string, unique] LPWSTR lpBinaryPathName, 00373 [in, string, unique] LPWSTR lpLoadOrderGroup, 00374 [in, out, unique] LPDWORD lpdwTagId, 00375 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies, 00376 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize, 00377 [in, string, unique] LPWSTR lpServiceStartName, 00378 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword, 00379 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize, 00380 [in, string, unique] LPWSTR lpDisplayName); 00381 00382 /* Function 12 */ 00383 DWORD RCreateServiceW( 00384 [in] SC_RPC_HANDLE hSCManager, 00385 [in, string] LPCWSTR lpServiceName, 00386 [in, string, unique] LPCWSTR lpDisplayName, 00387 [in] DWORD dwDesiredAccess, 00388 [in] DWORD dwServiceType, 00389 [in] DWORD dwStartType, 00390 [in] DWORD dwErrorControl, 00391 [in, string] LPCWSTR lpBinaryPathName, 00392 [in, string, unique] LPCWSTR lpLoadOrderGroup, 00393 [in, out, unique] LPDWORD lpdwTagId, 00394 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies, 00395 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize, 00396 [in, string, unique] LPCWSTR lpServiceStartName, 00397 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword, 00398 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize, 00399 [out] LPSC_RPC_HANDLE lpServiceHandle); 00400 00401 /* Function 13 */ 00402 DWORD REnumDependentServicesW( 00403 [in] SC_RPC_HANDLE hService, 00404 [in] DWORD dwServiceState, 00405 [out, size_is(cbBufSize)] LPBYTE lpServices, 00406 [in, range(0, 1024*256)] DWORD cbBufSize, 00407 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00408 [out] LPBOUNDED_DWORD_256K lpServicesReturned); 00409 00410 /* Function 14 */ 00411 DWORD REnumServicesStatusW( 00412 [in] SC_RPC_HANDLE hSCManager, 00413 [in] DWORD dwServiceType, 00414 [in] DWORD dwServiceState, 00415 [out, size_is(dwBufSize)] LPBYTE lpBuffer, 00416 [in, range(0, 1024*256)] DWORD dwBufSize, 00417 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00418 [out] LPBOUNDED_DWORD_256K lpServicesReturned, 00419 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeHandle); 00420 00421 /* Function 15 */ 00422 DWORD ROpenSCManagerW( 00423 [in, string, unique] SVCCTL_HANDLEW lpMachineName, 00424 [in, string, unique] LPWSTR lpDatabaseName, 00425 [in] DWORD dwDesiredAccess, 00426 [out] LPSC_RPC_HANDLE lpScHandle); 00427 00428 /* Function 16 */ 00429 DWORD ROpenServiceW( 00430 [in] SC_RPC_HANDLE hSCManager, 00431 [in, string] LPWSTR lpServiceName, 00432 [in] DWORD dwDesiredAccess, 00433 [out] LPSC_RPC_HANDLE lpServiceHandle); 00434 00435 /* Function 17 */ 00436 DWORD RQueryServiceConfigW( 00437 [in] SC_RPC_HANDLE hService, 00438 [out, size_is(cbBufSize)] LPBYTE lpServiceConfig, 00439 /* FIXME: should be [out] LPQUERY_SERVICE_CONFIGW lpServiceConfig, */ 00440 [in, range(0, 1024*8)] DWORD cbBufSize, 00441 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded); 00442 00443 /* Function 18 */ 00444 DWORD RQueryServiceLockStatusW( 00445 [in] SC_RPC_HANDLE hSCManager, 00446 [out] LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus, 00447 [in, range(0, 1024*4)] DWORD cbBufSize, 00448 [out] LPBOUNDED_DWORD_4K pcbBytesNeeded); 00449 00450 /* Function 19 */ 00451 DWORD RStartServiceW( 00452 [in] SC_RPC_HANDLE hService, 00453 [in, range(0, SC_MAX_ARGUMENTS)] DWORD argc, 00454 [in, unique, size_is(argc)] LPSTRING_PTRSW argv); 00455 00456 /* Function 20 */ 00457 DWORD RGetServiceDisplayNameW( 00458 [in] SC_RPC_HANDLE hSCManager, 00459 [in, string] LPCWSTR lpServiceName, 00460 [out, string, size_is(*lpcchBuffer + 1)] LPWSTR lpDisplayName, 00461 [in, out] DWORD* lpcchBuffer); 00462 00463 /* Function 21 */ 00464 DWORD RGetServiceKeyNameW( 00465 [in] SC_RPC_HANDLE hSCManager, 00466 [in, string] LPCWSTR lpDisplayName, 00467 [out, string, size_is(*lpcchBuffer + 1)] LPWSTR lpServiceName, 00468 [in, out] DWORD* lpcchBuffer); 00469 00470 /* Function 22 */ 00471 DWORD RI_ScSetServiceBitsA( 00472 [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus, 00473 [in] DWORD dwServiceBits, 00474 [in] BOOL bSetBitsOn, 00475 [in] BOOL bUpdateImmediately, 00476 [in, string, unique] LPSTR lpString); 00477 00478 /* Function 23 */ 00479 DWORD RChangeServiceConfigA( 00480 [in] SC_RPC_HANDLE hService, 00481 [in] DWORD dwServiceType, 00482 [in] DWORD dwStartType, 00483 [in] DWORD dwErrorControl, 00484 [in, string, unique] LPSTR lpBinaryPathName, 00485 [in, string, unique] LPSTR lpLoadOrderGroup, 00486 [in, out, unique] LPDWORD lpdwTagId, 00487 [in, unique, size_is(dwDependSize)] LPSTR lpDependencies, 00488 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize, 00489 [in, string, unique] LPSTR lpServiceStartName, 00490 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword, 00491 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize, 00492 [in, string, unique] LPSTR lpDisplayName); 00493 00494 /* Function 24 */ 00495 DWORD RCreateServiceA( 00496 [in] SC_RPC_HANDLE hSCManager, 00497 [in, string] LPSTR lpServiceName, 00498 [in, string, unique] LPSTR lpDisplayName, 00499 [in] DWORD dwDesiredAccess, 00500 [in] DWORD dwServiceType, 00501 [in] DWORD dwStartType, 00502 [in] DWORD dwErrorControl, 00503 [in, string] LPSTR lpBinaryPathName, 00504 [in, string, unique] LPSTR lpLoadOrderGroup, 00505 [in, out, unique] LPDWORD lpdwTagId, 00506 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies, 00507 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize, 00508 [in, string, unique] LPSTR lpServiceStartName, 00509 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword, 00510 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize, 00511 [out] LPSC_RPC_HANDLE lpServiceHandle); 00512 00513 /* Function 25 */ 00514 DWORD REnumDependentServicesA( 00515 [in] SC_RPC_HANDLE hService, 00516 [in] DWORD dwServiceState, 00517 [out, size_is(cbBufSize)] LPBYTE lpServices, 00518 [in, range(0, 1024*256)] DWORD cbBufSize, 00519 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00520 [out] LPBOUNDED_DWORD_256K lpServicesReturned); 00521 00522 /* Function 26 */ 00523 DWORD REnumServicesStatusA( 00524 [in] SC_RPC_HANDLE hSCManager, 00525 [in] DWORD dwServiceType, 00526 [in] DWORD dwServiceState, 00527 [out, size_is(dwBufSize)] LPBYTE lpBuffer, 00528 [in, range(0, 1024*256)] DWORD dwBufSize, 00529 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00530 [out] LPBOUNDED_DWORD_256K lpServicesReturned, 00531 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeHandle); 00532 00533 /* Function 27 */ 00534 DWORD ROpenSCManagerA( 00535 [in, string, unique] SVCCTL_HANDLEA lpMachineName, 00536 [in, string, unique] LPSTR lpDatabaseName, 00537 [in] DWORD dwDesiredAccess, 00538 [out] LPSC_RPC_HANDLE lpScHandle); 00539 00540 /* Function 28 */ 00541 DWORD ROpenServiceA( 00542 [in] SC_RPC_HANDLE hSCManager, 00543 [in, string] LPSTR lpServiceName, 00544 [in] DWORD dwDesiredAccess, 00545 [out] LPSC_RPC_HANDLE lpServiceHandle); 00546 00547 /* Function 29 */ 00548 DWORD RQueryServiceConfigA( 00549 [in] SC_RPC_HANDLE hService, 00550 [out, size_is(cbBufSize)] LPBYTE lpServiceConfig, 00551 /* FIXME: should be [out] LPQUERY_SERVICE_CONFIGA lpServiceConfig, */ 00552 [in, range(0, 1024*8)] DWORD cbBufSize, 00553 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded); 00554 00555 /* Function 30 */ 00556 DWORD RQueryServiceLockStatusA( 00557 [in] SC_RPC_HANDLE hSCManager, 00558 [out] LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus, 00559 [in, range(0, 1024*4)] DWORD cbBufSize, 00560 [out] LPBOUNDED_DWORD_4K pcbBytesNeeded); 00561 00562 /* Function 31 */ 00563 DWORD RStartServiceA( 00564 [in] SC_RPC_HANDLE hService, 00565 [in, range(0, SC_MAX_ARGUMENTS)] DWORD argc, 00566 [in, unique, size_is(argc)] LPSTRING_PTRSA argv); 00567 00568 /* Function 32 */ 00569 DWORD RGetServiceDisplayNameA( 00570 [in] SC_RPC_HANDLE hSCManager, 00571 [in, string] LPCSTR lpServiceName, 00572 [out, string, size_is(*lpcchBuffer)] LPSTR lpDisplayName, 00573 [in, out] LPBOUNDED_DWORD_4K lpcchBuffer); 00574 00575 /* Function 33 */ 00576 DWORD RGetServiceKeyNameA( 00577 [in] SC_RPC_HANDLE hSCManager, 00578 [in, string] LPCSTR lpDisplayName, 00579 [out, string, size_is(*lpcchBuffer)] LPSTR lpKeyName, 00580 [in, out] LPBOUNDED_DWORD_4K lpcchBuffer); 00581 00582 /* Function 34 */ 00583 DWORD RI_ScGetCurrentGroupStateW( 00584 [in] SC_RPC_HANDLE hSCManager, 00585 [in, string, unique] LPWSTR lpLoadOrderGroup, 00586 [out] LPDWORD lpState); 00587 00588 /* Function 35 */ 00589 DWORD REnumServiceGroupW( 00590 [in] SC_RPC_HANDLE hSCManager, 00591 [in] DWORD dwServiceType, 00592 [in] DWORD dwServiceState, 00593 [out, size_is(cbBufSize)] LPBYTE lpBuffer, 00594 [in, range(0, 1024*256)] DWORD cbBufSize, 00595 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00596 [out] LPBOUNDED_DWORD_256K lpServicesReturned, 00597 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeIndex, 00598 [in, string, unique] LPCWSTR pszGroupName); 00599 00600 /* Function 36 */ 00601 DWORD RChangeServiceConfig2A( 00602 [in] SC_RPC_HANDLE hService, 00603 [in] SC_RPC_CONFIG_INFOA Info); 00604 00605 /* Function 37 */ 00606 DWORD RChangeServiceConfig2W( 00607 [in] SC_RPC_HANDLE hService, 00608 [in] SC_RPC_CONFIG_INFOW Info); 00609 00610 /* Function 38 */ 00611 DWORD RQueryServiceConfig2A( 00612 [in] SC_RPC_HANDLE hService, 00613 [in] DWORD dwInfoLevel, 00614 [out, size_is(cbBufSize)] LPBYTE lpBuffer, 00615 [in, range(0, 1024*8)] DWORD cbBufSize, 00616 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded); 00617 00618 /* Function 39 */ 00619 DWORD RQueryServiceConfig2W( 00620 [in] SC_RPC_HANDLE hService, 00621 [in] DWORD dwInfoLevel, 00622 [out, size_is(cbBufSize)] LPBYTE lpBuffer, 00623 [in, range(0, 1024*8)] DWORD cbBufSize, 00624 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded); 00625 00626 /* Function 40 */ 00627 DWORD RQueryServiceStatusEx( 00628 [in] SC_RPC_HANDLE hService, 00629 [in] SC_STATUS_TYPE InfoLevel, 00630 [out, size_is(cbBufSize)] LPBYTE lpBuffer, 00631 [in, range(0, 1024*8)] DWORD cbBufSize, 00632 [out] LPBOUNDED_DWORD_8K pcbBytesNeeded); 00633 00634 /* Function 41 */ 00635 DWORD REnumServicesStatusExA( 00636 [in] SC_RPC_HANDLE hSCManager, 00637 [in] SC_ENUM_TYPE InfoLevel, 00638 [in] DWORD dwServiceType, 00639 [in] DWORD dwServiceState, 00640 [out, size_is(cbBufSize)] LPBYTE lpBuffer, 00641 [in, range(0, 1024 * 256)] DWORD cbBufSize, 00642 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00643 [out] LPBOUNDED_DWORD_256K lpServicesReturned, 00644 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeIndex, 00645 [in, string, unique] LPCSTR pszGroupName); 00646 00647 /* Function 42 */ 00648 DWORD REnumServicesStatusExW( 00649 [in] SC_RPC_HANDLE hSCManager, 00650 [in] SC_ENUM_TYPE InfoLevel, 00651 [in] DWORD dwServiceType, 00652 [in] DWORD dwServiceState, 00653 [out, size_is(cbBufSize)] LPBYTE lpBuffer, 00654 [in, range(0, 1024 * 256)] DWORD cbBufSize, 00655 [out] LPBOUNDED_DWORD_256K pcbBytesNeeded, 00656 [out] LPBOUNDED_DWORD_256K lpServicesReturned, 00657 [in, out, unique] LPBOUNDED_DWORD_256K lpResumeIndex, 00658 [in, string, unique] LPCWSTR pszGroupName); 00659 00660 /* Function 43 */ 00661 DWORD RSendTSMessage( 00662 [in] handle_t BindingHandle); /* FIXME */ 00663 00664 /* Function 44 */ 00665 DWORD RCreateServiceWOW64A( 00666 [in] handle_t BindingHandle, 00667 [in, string] LPSTR lpServiceName, 00668 [in, string, unique] LPSTR lpDisplayName, 00669 [in] DWORD dwDesiredAccess, 00670 [in] DWORD dwServiceType, 00671 [in] DWORD dwStartType, 00672 [in] DWORD dwErrorControl, 00673 [in, string] LPSTR lpBinaryPathName, 00674 [in, string, unique] LPSTR lpLoadOrderGroup, 00675 [in, out, unique] LPDWORD lpdwTagId, 00676 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies, 00677 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize, 00678 [in, string, unique] LPSTR lpServiceStartName, 00679 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword, 00680 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize, 00681 [out] LPSC_RPC_HANDLE lpServiceHandle); 00682 00683 /* Function 45 */ 00684 DWORD RCreateServiceWOW64W( 00685 [in] handle_t BindingHandle, 00686 [in, string] LPWSTR lpServiceName, 00687 [in, string, unique] LPWSTR lpDisplayName, 00688 [in] DWORD dwDesiredAccess, 00689 [in] DWORD dwServiceType, 00690 [in] DWORD dwStartType, 00691 [in] DWORD dwErrorControl, 00692 [in, string] LPWSTR lpBinaryPathName, 00693 [in, string, unique] LPWSTR lpLoadOrderGroup, 00694 [in, out, unique] LPDWORD lpdwTagId, 00695 [in, unique, size_is(dwDependSize)] LPBYTE lpDependencies, 00696 [in, range(0, SC_MAX_DEPEND_SIZE)] DWORD dwDependSize, 00697 [in, string, unique] LPWSTR lpServiceStartName, 00698 [in, unique, size_is(dwPwSize)] LPBYTE lpPassword, 00699 [in, range(0, SC_MAX_PWD_SIZE)] DWORD dwPwSize, 00700 [out] LPSC_RPC_HANDLE lpServiceHandle); 00701 00702 /* Function 46 */ 00703 DWORD RQueryServiceTagInfo( 00704 [in] handle_t BindingHandle); /* FIXME */ 00705 00706 /* Function 47 */ 00707 DWORD RNotifyServiceStatusChange( 00708 [in] SC_RPC_HANDLE hService, 00709 [in] SC_RPC_NOTIFY_PARAMS NotifyParams, 00710 [in] GUID* pClientProcessGuid, 00711 [out] GUID* pSCMProcessGuid, 00712 [out] PBOOL pfCreateRemoteQueue, 00713 [out] LPSC_NOTIFY_RPC_HANDLE phNotify); 00714 00715 /* Function 48 */ 00716 DWORD RGetNotifyResults( 00717 [in] SC_NOTIFY_RPC_HANDLE hNotify, 00718 [out] PSC_RPC_NOTIFY_PARAMS_LIST *ppNotifyParams); 00719 00720 /* Function 49 */ 00721 DWORD RCloseNotifyHandle( 00722 [in, out] LPSC_NOTIFY_RPC_HANDLE phNotify, 00723 [out] PBOOL pfApcFired); 00724 00725 /* Function 50 */ 00726 DWORD RControlServiceExA( 00727 [in] SC_RPC_HANDLE hService, 00728 [in] DWORD dwControl, 00729 [in] DWORD dwInfoLevel/*, 00730 [in, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSA pControlInParams, 00731 [out, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSA pControlOutParams*/); 00732 00733 /* Function 51 */ 00734 DWORD RControlServiceExW( 00735 [in] SC_RPC_HANDLE hService, 00736 [in] DWORD dwControl, 00737 [in] DWORD dwInfoLevel/*, 00738 [in, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSW pControlInParams, 00739 [out, switch_is(dwInfoLevel)] PSC_RPC_SERVICE_CONTROL_IN_PARAMSW pControlOutParams*/); 00740 00741 /* Function 52 */ 00742 DWORD RSendPnPMessage( 00743 [in] handle_t BindingHandle); /* FIXME */ 00744 00745 /* Function 53 */ 00746 DWORD RValidatePnPService( 00747 [in] handle_t BindingHandle); /* FIXME */ 00748 00749 /* Function 54 */ 00750 DWORD ROpenServiceStatusHandle( 00751 [in] handle_t BindingHandle); /* FIXME */ 00752 00753 /* Function 55 */ 00754 DWORD RFunction55( 00755 [in] handle_t BindingHandle); /* FIXME */ 00756 } Generated on Fri May 25 2012 04:31:36 for ReactOS by
1.7.6.1
|