ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

svcctl.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.