Service Manager:

- Get rid of the globally created binding handle and use the WIDL-generated custom binding handles and context handles instead.

The other RPC interfaces will be converted as soon as possible.

svn path=/trunk/; revision=36991
This commit is contained in:
Eric Kohl 2008-10-26 15:11:28 +00:00
parent 323b029e49
commit 725ff32421
4 changed files with 54 additions and 331 deletions

View file

@ -400,7 +400,6 @@ Int_EnumDependentServicesW(HKEY hServicesKey,
/* Function 0 */ /* Function 0 */
DWORD RCloseServiceHandle( DWORD RCloseServiceHandle(
handle_t BindingHandle,
LPSC_RPC_HANDLE hSCObject) LPSC_RPC_HANDLE hSCObject)
{ {
PMANAGER_HANDLE hManager; PMANAGER_HANDLE hManager;
@ -526,7 +525,6 @@ DWORD RCloseServiceHandle(
/* Function 1 */ /* Function 1 */
DWORD RControlService( DWORD RControlService(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwControl, DWORD dwControl,
LPSERVICE_STATUS lpServiceStatus) LPSERVICE_STATUS lpServiceStatus)
@ -657,7 +655,6 @@ DWORD RControlService(
/* Function 2 */ /* Function 2 */
DWORD RDeleteService( DWORD RDeleteService(
handle_t BindingHandle,
SC_RPC_HANDLE hService) SC_RPC_HANDLE hService)
{ {
PSERVICE_HANDLE hSvc; PSERVICE_HANDLE hSvc;
@ -707,7 +704,6 @@ DWORD RDeleteService(
/* Function 3 */ /* Function 3 */
DWORD RLockServiceDatabase( DWORD RLockServiceDatabase(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPSC_RPC_LOCK lpLock) LPSC_RPC_LOCK lpLock)
{ {
@ -736,7 +732,6 @@ DWORD RLockServiceDatabase(
/* Function 4 */ /* Function 4 */
DWORD RQueryServiceObjectSecurity( DWORD RQueryServiceObjectSecurity(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
SECURITY_INFORMATION dwSecurityInformation, SECURITY_INFORMATION dwSecurityInformation,
LPBYTE lpSecurityDescriptor, LPBYTE lpSecurityDescriptor,
@ -820,7 +815,6 @@ DWORD RQueryServiceObjectSecurity(
/* Function 5 */ /* Function 5 */
DWORD RSetServiceObjectSecurity( DWORD RSetServiceObjectSecurity(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwSecurityInformation, DWORD dwSecurityInformation,
LPBYTE lpSecurityDescriptor, LPBYTE lpSecurityDescriptor,
@ -940,7 +934,6 @@ Done:
/* Function 6 */ /* Function 6 */
DWORD RQueryServiceStatus( DWORD RQueryServiceStatus(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
LPSERVICE_STATUS lpServiceStatus) LPSERVICE_STATUS lpServiceStatus)
{ {
@ -1004,7 +997,6 @@ ScmIsValidServiceState(DWORD dwCurrentState)
/* Function 7 */ /* Function 7 */
DWORD RSetServiceStatus( DWORD RSetServiceStatus(
// handle_t BindingHandle,
RPC_SERVICE_STATUS_HANDLE hServiceStatus, RPC_SERVICE_STATUS_HANDLE hServiceStatus,
LPSERVICE_STATUS lpServiceStatus) LPSERVICE_STATUS lpServiceStatus)
{ {
@ -1070,7 +1062,6 @@ DWORD RSetServiceStatus(
/* Function 8 */ /* Function 8 */
DWORD RUnlockServiceDatabase( DWORD RUnlockServiceDatabase(
handle_t BindingHandle,
LPSC_RPC_LOCK Lock) LPSC_RPC_LOCK Lock)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
@ -1080,7 +1071,6 @@ DWORD RUnlockServiceDatabase(
/* Function 9 */ /* Function 9 */
DWORD RNotifyBootConfigStatus( DWORD RNotifyBootConfigStatus(
handle_t BindingHandle,
SVCCTL_HANDLEW lpMachineName, SVCCTL_HANDLEW lpMachineName,
DWORD BootAcceptable) DWORD BootAcceptable)
{ {
@ -1091,7 +1081,6 @@ DWORD RNotifyBootConfigStatus(
/* Function 10 */ /* Function 10 */
DWORD RI_ScSetServiceBitsW( DWORD RI_ScSetServiceBitsW(
// handle_t BindingHandle,
RPC_SERVICE_STATUS_HANDLE hServiceStatus, RPC_SERVICE_STATUS_HANDLE hServiceStatus,
DWORD dwServiceBits, DWORD dwServiceBits,
int bSetBitsOn, int bSetBitsOn,
@ -1105,7 +1094,6 @@ DWORD RI_ScSetServiceBitsW(
/* Function 11 */ /* Function 11 */
DWORD RChangeServiceConfigW( DWORD RChangeServiceConfigW(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwServiceType, DWORD dwServiceType,
DWORD dwStartType, DWORD dwStartType,
@ -1715,7 +1703,6 @@ ScmCanonDriverImagePath(DWORD dwStartType,
/* Function 12 */ /* Function 12 */
DWORD RCreateServiceW( DWORD RCreateServiceW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPWSTR lpServiceName, LPWSTR lpServiceName,
LPWSTR lpDisplayName, LPWSTR lpDisplayName,
@ -2051,7 +2038,6 @@ done:;
/* Function 13 */ /* Function 13 */
DWORD REnumDependentServicesW( DWORD REnumDependentServicesW(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwServiceState, DWORD dwServiceState,
LPBYTE lpServices, LPBYTE lpServices,
@ -2181,7 +2167,6 @@ Done:
/* Function 14 */ /* Function 14 */
DWORD REnumServicesStatusW( DWORD REnumServicesStatusW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
DWORD dwServiceType, DWORD dwServiceType,
DWORD dwServiceState, DWORD dwServiceState,
@ -2388,7 +2373,6 @@ Done:;
/* Function 15 */ /* Function 15 */
DWORD ROpenSCManagerW( DWORD ROpenSCManagerW(
// handle_t BindingHandle,
LPWSTR lpMachineName, LPWSTR lpMachineName,
LPWSTR lpDatabaseName, LPWSTR lpDatabaseName,
DWORD dwDesiredAccess, DWORD dwDesiredAccess,
@ -2439,7 +2423,6 @@ DWORD ROpenSCManagerW(
/* Function 16 */ /* Function 16 */
DWORD ROpenServiceW( DWORD ROpenServiceW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPWSTR lpServiceName, LPWSTR lpServiceName,
DWORD dwDesiredAccess, DWORD dwDesiredAccess,
@ -2515,7 +2498,6 @@ DWORD ROpenServiceW(
/* Function 17 */ /* Function 17 */
DWORD RQueryServiceConfigW( DWORD RQueryServiceConfigW(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
LPBYTE lpBuf, //LPQUERY_SERVICE_CONFIGW lpServiceConfig, LPBYTE lpBuf, //LPQUERY_SERVICE_CONFIGW lpServiceConfig,
DWORD cbBufSize, DWORD cbBufSize,
@ -2692,7 +2674,6 @@ Done:;
/* Function 18 */ /* Function 18 */
DWORD RQueryServiceLockStatusW( DWORD RQueryServiceLockStatusW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus, LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,
DWORD cbBufSize, DWORD cbBufSize,
@ -2705,7 +2686,6 @@ DWORD RQueryServiceLockStatusW(
/* Function 19 */ /* Function 19 */
DWORD RStartServiceW( DWORD RStartServiceW(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD argc, DWORD argc,
LPSTRING_PTRSW argv) LPSTRING_PTRSW argv)
@ -2760,7 +2740,6 @@ DWORD RStartServiceW(
/* Function 20 */ /* Function 20 */
DWORD RGetServiceDisplayNameW( DWORD RGetServiceDisplayNameW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPWSTR lpServiceName, LPWSTR lpServiceName,
LPWSTR lpDisplayName, LPWSTR lpDisplayName,
@ -2832,7 +2811,6 @@ DWORD RGetServiceDisplayNameW(
/* Function 21 */ /* Function 21 */
DWORD RGetServiceKeyNameW( DWORD RGetServiceKeyNameW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPWSTR lpDisplayName, LPWSTR lpDisplayName,
LPWSTR lpServiceName, LPWSTR lpServiceName,
@ -2893,7 +2871,6 @@ DWORD RGetServiceKeyNameW(
/* Function 22 */ /* Function 22 */
DWORD RI_ScSetServiceBitsA( DWORD RI_ScSetServiceBitsA(
// handle_t BindingHandle,
RPC_SERVICE_STATUS_HANDLE hServiceStatus, RPC_SERVICE_STATUS_HANDLE hServiceStatus,
DWORD dwServiceBits, DWORD dwServiceBits,
int bSetBitsOn, int bSetBitsOn,
@ -2907,7 +2884,6 @@ DWORD RI_ScSetServiceBitsA(
/* Function 23 */ /* Function 23 */
DWORD RChangeServiceConfigA( DWORD RChangeServiceConfigA(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwServiceType, DWORD dwServiceType,
DWORD dwStartType, DWORD dwStartType,
@ -3192,7 +3168,6 @@ done:
/* Function 24 */ /* Function 24 */
DWORD RCreateServiceA( DWORD RCreateServiceA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPSTR lpServiceName, LPSTR lpServiceName,
LPSTR lpDisplayName, LPSTR lpDisplayName,
@ -3217,7 +3192,6 @@ DWORD RCreateServiceA(
/* Function 25 */ /* Function 25 */
DWORD REnumDependentServicesA( DWORD REnumDependentServicesA(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwServiceState, DWORD dwServiceState,
LPBYTE lpServices, LPBYTE lpServices,
@ -3365,7 +3339,6 @@ Done:
/* Function 26 */ /* Function 26 */
DWORD REnumServicesStatusA( DWORD REnumServicesStatusA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
DWORD dwServiceType, DWORD dwServiceType,
DWORD dwServiceState, DWORD dwServiceState,
@ -3394,7 +3367,7 @@ DWORD REnumServicesStatusA(
} }
} }
dwError = REnumServicesStatusW(BindingHandle, dwError = REnumServicesStatusW(//BindingHandle,
hSCManager, hSCManager,
dwServiceType, dwServiceType,
dwServiceState, dwServiceState,
@ -3462,7 +3435,6 @@ Done:;
/* Function 27 */ /* Function 27 */
DWORD ROpenSCManagerA( DWORD ROpenSCManagerA(
// handle_t BindingHandle,
LPSTR lpMachineName, LPSTR lpMachineName,
LPSTR lpDatabaseName, LPSTR lpDatabaseName,
DWORD dwDesiredAccess, DWORD dwDesiredAccess,
@ -3500,7 +3472,6 @@ DWORD ROpenSCManagerA(
/* Function 28 */ /* Function 28 */
DWORD ROpenServiceA( DWORD ROpenServiceA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPSTR lpServiceName, LPSTR lpServiceName,
DWORD dwDesiredAccess, DWORD dwDesiredAccess,
@ -3515,7 +3486,7 @@ DWORD ROpenServiceA(
RtlCreateUnicodeStringFromAsciiz(&ServiceName, RtlCreateUnicodeStringFromAsciiz(&ServiceName,
lpServiceName); lpServiceName);
dwError = ROpenServiceW(BindingHandle, dwError = ROpenServiceW(//BindingHandle,
hSCManager, hSCManager,
lpServiceName ? ServiceName.Buffer : NULL, lpServiceName ? ServiceName.Buffer : NULL,
dwDesiredAccess, dwDesiredAccess,
@ -3530,7 +3501,6 @@ DWORD ROpenServiceA(
/* Function 29 */ /* Function 29 */
DWORD RQueryServiceConfigA( DWORD RQueryServiceConfigA(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
LPBYTE lpBuf, //LPQUERY_SERVICE_CONFIGA lpServiceConfig, LPBYTE lpBuf, //LPQUERY_SERVICE_CONFIGA lpServiceConfig,
DWORD cbBufSize, DWORD cbBufSize,
@ -3739,7 +3709,6 @@ Done:;
/* Function 30 */ /* Function 30 */
DWORD RQueryServiceLockStatusA( DWORD RQueryServiceLockStatusA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus, LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,
DWORD cbBufSize, DWORD cbBufSize,
@ -3752,7 +3721,6 @@ DWORD RQueryServiceLockStatusA(
/* Function 31 */ /* Function 31 */
DWORD RStartServiceA( DWORD RStartServiceA(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD argc, DWORD argc,
LPSTRING_PTRSA argv) LPSTRING_PTRSA argv)
@ -3806,7 +3774,6 @@ DWORD RStartServiceA(
/* Function 32 */ /* Function 32 */
DWORD RGetServiceDisplayNameA( DWORD RGetServiceDisplayNameA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPSTR lpServiceName, LPSTR lpServiceName,
LPSTR lpDisplayName, LPSTR lpDisplayName,
@ -3908,7 +3875,6 @@ DWORD RGetServiceDisplayNameA(
/* Function 33 */ /* Function 33 */
DWORD RGetServiceKeyNameA( DWORD RGetServiceKeyNameA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPSTR lpDisplayName, LPSTR lpDisplayName,
LPSTR lpServiceName, LPSTR lpServiceName,
@ -3983,7 +3949,6 @@ DWORD RGetServiceKeyNameA(
/* Function 34 */ /* Function 34 */
DWORD RI_ScGetCurrentGroupStateW( DWORD RI_ScGetCurrentGroupStateW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
LPWSTR lpLoadOrderGroup, LPWSTR lpLoadOrderGroup,
LPDWORD lpState) LPDWORD lpState)
@ -3995,7 +3960,6 @@ DWORD RI_ScGetCurrentGroupStateW(
/* Function 35 */ /* Function 35 */
DWORD REnumServiceGroupW( DWORD REnumServiceGroupW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
DWORD dwServiceType, DWORD dwServiceType,
DWORD dwServiceState, DWORD dwServiceState,
@ -4013,7 +3977,6 @@ DWORD REnumServiceGroupW(
/* Function 36 */ /* Function 36 */
DWORD RChangeServiceConfig2A( DWORD RChangeServiceConfig2A(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
SC_RPC_CONFIG_INFOA Info) SC_RPC_CONFIG_INFOA Info)
{ {
@ -4024,7 +3987,6 @@ DWORD RChangeServiceConfig2A(
/* Function 37 */ /* Function 37 */
DWORD RChangeServiceConfig2W( DWORD RChangeServiceConfig2W(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
SC_RPC_CONFIG_INFOW Info) SC_RPC_CONFIG_INFOW Info)
{ {
@ -4117,7 +4079,6 @@ done:
/* Function 38 */ /* Function 38 */
DWORD RQueryServiceConfig2A( DWORD RQueryServiceConfig2A(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwInfoLevel, DWORD dwInfoLevel,
LPBYTE lpBuffer, LPBYTE lpBuffer,
@ -4225,7 +4186,6 @@ done:
/* Function 39 */ /* Function 39 */
DWORD RQueryServiceConfig2W( DWORD RQueryServiceConfig2W(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwInfoLevel, DWORD dwInfoLevel,
LPBYTE lpBuffer, LPBYTE lpBuffer,
@ -4324,7 +4284,6 @@ done:
/* Function 40 */ /* Function 40 */
DWORD RQueryServiceStatusEx( DWORD RQueryServiceStatusEx(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
SC_STATUS_TYPE InfoLevel, SC_STATUS_TYPE InfoLevel,
LPBYTE lpBuffer, LPBYTE lpBuffer,
@ -4385,7 +4344,6 @@ DWORD RQueryServiceStatusEx(
/* Function 41 */ /* Function 41 */
DWORD REnumServicesStatusExA( DWORD REnumServicesStatusExA(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
SC_ENUM_TYPE InfoLevel, SC_ENUM_TYPE InfoLevel,
DWORD dwServiceType, DWORD dwServiceType,
@ -4433,8 +4391,7 @@ DWORD REnumServicesStatusExA(
} }
} }
dwError = REnumServicesStatusExW(BindingHandle, dwError = REnumServicesStatusExW(hSCManager,
hSCManager,
InfoLevel, InfoLevel,
dwServiceType, dwServiceType,
dwServiceState, dwServiceState,
@ -4507,7 +4464,6 @@ Done:;
/* Function 42 */ /* Function 42 */
DWORD REnumServicesStatusExW( DWORD REnumServicesStatusExW(
handle_t BindingHandle,
SC_RPC_HANDLE hSCManager, SC_RPC_HANDLE hSCManager,
SC_ENUM_TYPE InfoLevel, SC_ENUM_TYPE InfoLevel,
DWORD dwServiceType, DWORD dwServiceType,
@ -4782,7 +4738,7 @@ Done:;
/* Function 43 */ /* Function 43 */
DWORD RSendTSMessage( DWORD RSendTSMessage(
handle_t BindingHandle) handle_t BindingHandle) /* FIXME */
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
@ -4839,7 +4795,7 @@ DWORD RCreateServiceWOW64W(
/* Function 46 */ /* Function 46 */
DWORD RQueryServiceTagInfo( DWORD RQueryServiceTagInfo(
handle_t BindingHandle) handle_t BindingHandle) /* FIXME */
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
@ -4848,7 +4804,6 @@ DWORD RQueryServiceTagInfo(
/* Function 47 */ /* Function 47 */
DWORD RNotifyServiceStatusChange( DWORD RNotifyServiceStatusChange(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
SC_RPC_NOTIFY_PARAMS NotifyParams, SC_RPC_NOTIFY_PARAMS NotifyParams,
GUID *pClientProcessGuid, GUID *pClientProcessGuid,
@ -4863,7 +4818,6 @@ DWORD RNotifyServiceStatusChange(
/* Function 48 */ /* Function 48 */
DWORD RGetNotifyResults( DWORD RGetNotifyResults(
handle_t BindingHandle,
SC_NOTIFY_RPC_HANDLE hNotify, SC_NOTIFY_RPC_HANDLE hNotify,
PSC_RPC_NOTIFY_PARAMS_LIST *ppNotifyParams) PSC_RPC_NOTIFY_PARAMS_LIST *ppNotifyParams)
{ {
@ -4874,7 +4828,6 @@ DWORD RGetNotifyResults(
/* Function 49 */ /* Function 49 */
DWORD RCloseNotifyHandle( DWORD RCloseNotifyHandle(
handle_t BindingHandle,
LPSC_NOTIFY_RPC_HANDLE phNotify, LPSC_NOTIFY_RPC_HANDLE phNotify,
PBOOL pfApcFired) PBOOL pfApcFired)
{ {
@ -4885,7 +4838,6 @@ DWORD RCloseNotifyHandle(
/* Function 50 */ /* Function 50 */
DWORD RControlServiceExA( DWORD RControlServiceExA(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwControl, DWORD dwControl,
DWORD dwInfoLevel) DWORD dwInfoLevel)
@ -4897,7 +4849,6 @@ DWORD RControlServiceExA(
/* Function 51 */ /* Function 51 */
DWORD RControlServiceExW( DWORD RControlServiceExW(
handle_t BindingHandle,
SC_RPC_HANDLE hService, SC_RPC_HANDLE hService,
DWORD dwControl, DWORD dwControl,
DWORD dwInfoLevel) DWORD dwInfoLevel)
@ -4909,7 +4860,7 @@ DWORD RControlServiceExW(
/* Function 52 */ /* Function 52 */
DWORD RSendPnPMessage( DWORD RSendPnPMessage(
handle_t BindingHandle) handle_t BindingHandle) /* FIXME */
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
@ -4918,7 +4869,7 @@ DWORD RSendPnPMessage(
/* Function 53 */ /* Function 53 */
DWORD RValidatePnPService( DWORD RValidatePnPService(
handle_t BindingHandle) handle_t BindingHandle) /* FIXME */
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
@ -4927,7 +4878,7 @@ DWORD RValidatePnPService(
/* Function 54 */ /* Function 54 */
DWORD ROpenServiceStatusHandle( DWORD ROpenServiceStatusHandle(
handle_t BindingHandle) handle_t BindingHandle) /* FIXME */
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
@ -4936,7 +4887,7 @@ DWORD ROpenServiceStatusHandle(
/* Function 55 */ /* Function 55 */
DWORD RFunction55( DWORD RFunction55(
handle_t BindingHandle) handle_t BindingHandle) /* FIXME */
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
@ -4969,5 +4920,4 @@ void __RPC_USER SC_NOTIFY_RPC_HANDLE_rundown(SC_NOTIFY_RPC_HANDLE hNotify)
{ {
} }
/* EOF */ /* EOF */

View file

@ -21,62 +21,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(advapi);
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
handle_t BindingHandle = NULL;
VOID
HandleBind(VOID)
{
LPWSTR pszStringBinding;
RPC_STATUS status;
if (BindingHandle != NULL)
return;
status = RpcStringBindingComposeW(NULL,
L"ncacn_np",
NULL,
L"\\pipe\\ntsvcs",
NULL,
&pszStringBinding);
if (status)
{
TRACE("RpcStringBindingCompose returned 0x%x\n", status);
return;
}
/* Set the binding handle that will be used to bind to the server. */
status = RpcBindingFromStringBindingW(pszStringBinding,
&BindingHandle);
if (status)
{
TRACE("RpcBindingFromStringBinding returned 0x%x\n", status);
}
status = RpcStringFreeW(&pszStringBinding);
if (status)
{
TRACE("RpcStringFree returned 0x%x\n", status);
}
}
#if 0
static VOID
HandleUnbind(VOID)
{
RPC_STATUS status;
if (BindingHandle == NULL)
return;
status = RpcBindingFree(&BindingHandle);
if (status)
{
TRACE("RpcBindingFree returned 0x%x\n", status);
}
}
#endif
handle_t __RPC_USER handle_t __RPC_USER
SVCCTL_HANDLEA_bind(SVCCTL_HANDLEA szMachineName) SVCCTL_HANDLEA_bind(SVCCTL_HANDLEA szMachineName)
{ {
@ -300,12 +244,9 @@ ChangeServiceConfig2A(SC_HANDLE hService,
if (lpInfo == NULL) if (lpInfo == NULL)
return TRUE; return TRUE;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RChangeServiceConfig2A(BindingHandle, dwError = RChangeServiceConfig2A((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
Info); Info);
} }
_SEH_HANDLE _SEH_HANDLE
@ -363,12 +304,9 @@ ChangeServiceConfig2W(SC_HANDLE hService,
if (lpInfo == NULL) if (lpInfo == NULL)
return TRUE; return TRUE;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RChangeServiceConfig2W(BindingHandle, dwError = RChangeServiceConfig2W((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
Info); Info);
} }
_SEH_HANDLE _SEH_HANDLE
@ -428,13 +366,10 @@ ChangeServiceConfigA(SC_HANDLE hService,
/* FIXME: Encrypt the password */ /* FIXME: Encrypt the password */
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RChangeServiceConfigA(BindingHandle, dwError = RChangeServiceConfigA((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwServiceType, dwServiceType,
dwStartType, dwStartType,
dwErrorControl, dwErrorControl,
@ -505,13 +440,10 @@ ChangeServiceConfigW(SC_HANDLE hService,
/* FIXME: Encrypt the password */ /* FIXME: Encrypt the password */
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RChangeServiceConfigW(BindingHandle, dwError = RChangeServiceConfigW((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwServiceType, dwServiceType,
dwStartType, dwStartType,
dwErrorControl, dwErrorControl,
@ -554,13 +486,10 @@ CloseServiceHandle(SC_HANDLE hSCObject)
TRACE("CloseServiceHandle() called\n"); TRACE("CloseServiceHandle() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RCloseServiceHandle(BindingHandle, dwError = RCloseServiceHandle((LPSC_RPC_HANDLE)&hSCObject);
(LPSC_RPC_HANDLE)&hSCObject);
} }
_SEH_HANDLE _SEH_HANDLE
{ {
@ -596,13 +525,10 @@ ControlService(SC_HANDLE hService,
TRACE("ControlService(%x, %x, %p)\n", TRACE("ControlService(%x, %x, %p)\n",
hService, dwControl, lpServiceStatus); hService, dwControl, lpServiceStatus);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RControlService(BindingHandle, dwError = RControlService((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwControl, dwControl,
lpServiceStatus); lpServiceStatus);
} }
@ -853,13 +779,10 @@ CreateServiceW(SC_HANDLE hSCManager,
/* FIXME: Encrypt the password */ /* FIXME: Encrypt the password */
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RCreateServiceW(BindingHandle, dwError = RCreateServiceW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPWSTR)lpServiceName, (LPWSTR)lpServiceName,
(LPWSTR)lpDisplayName, (LPWSTR)lpDisplayName,
dwDesiredAccess, dwDesiredAccess,
@ -905,13 +828,10 @@ DeleteService(SC_HANDLE hService)
TRACE("DeleteService(%x)\n", hService); TRACE("DeleteService(%x)\n", hService);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RDeleteService(BindingHandle, dwError = RDeleteService((SC_RPC_HANDLE)hService);
(SC_RPC_HANDLE)hService);
} }
_SEH_HANDLE _SEH_HANDLE
{ {
@ -949,12 +869,9 @@ EnumDependentServicesA(SC_HANDLE hService,
TRACE("EnumServicesStatusA() called\n"); TRACE("EnumServicesStatusA() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = REnumDependentServicesA(BindingHandle, dwError = REnumDependentServicesA((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwServiceState, dwServiceState,
(LPBYTE)lpServices, (LPBYTE)lpServices,
cbBufSize, cbBufSize,
@ -1013,12 +930,9 @@ EnumDependentServicesW(SC_HANDLE hService,
TRACE("EnumServicesStatusW() called\n"); TRACE("EnumServicesStatusW() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = REnumDependentServicesW(BindingHandle, dwError = REnumDependentServicesW((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwServiceState, dwServiceState,
(LPBYTE)lpServices, (LPBYTE)lpServices,
cbBufSize, cbBufSize,
@ -1103,12 +1017,9 @@ EnumServicesStatusA(SC_HANDLE hSCManager,
TRACE("EnumServicesStatusA() called\n"); TRACE("EnumServicesStatusA() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = REnumServicesStatusA(BindingHandle, dwError = REnumServicesStatusA((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
dwServiceType, dwServiceType,
dwServiceState, dwServiceState,
(LPBYTE)lpServices, (LPBYTE)lpServices,
@ -1171,12 +1082,9 @@ EnumServicesStatusW(SC_HANDLE hSCManager,
TRACE("EnumServicesStatusW() called\n"); TRACE("EnumServicesStatusW() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = REnumServicesStatusW(BindingHandle, dwError = REnumServicesStatusW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
dwServiceType, dwServiceType,
dwServiceState, dwServiceState,
(LPBYTE)lpServices, (LPBYTE)lpServices,
@ -1241,12 +1149,9 @@ EnumServicesStatusExA(SC_HANDLE hSCManager,
TRACE("EnumServicesStatusExA() called\n"); TRACE("EnumServicesStatusExA() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = REnumServicesStatusExA(BindingHandle, dwError = REnumServicesStatusExA((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
InfoLevel, InfoLevel,
dwServiceType, dwServiceType,
dwServiceState, dwServiceState,
@ -1321,12 +1226,9 @@ EnumServicesStatusExW(SC_HANDLE hSCManager,
TRACE("EnumServicesStatusExW() called\n"); TRACE("EnumServicesStatusExW() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = REnumServicesStatusExW(BindingHandle, dwError = REnumServicesStatusExW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
InfoLevel, InfoLevel,
dwServiceType, dwServiceType,
dwServiceState, dwServiceState,
@ -1396,12 +1298,9 @@ GetServiceDisplayNameA(SC_HANDLE hSCManager,
if (!lpDisplayName) if (!lpDisplayName)
*lpcchBuffer = 0; *lpcchBuffer = 0;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RGetServiceDisplayNameA(BindingHandle, dwError = RGetServiceDisplayNameA((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPSTR)lpServiceName, (LPSTR)lpServiceName,
lpDisplayName, lpDisplayName,
lpcchBuffer); lpcchBuffer);
@ -1444,12 +1343,9 @@ GetServiceDisplayNameW(SC_HANDLE hSCManager,
if (!lpDisplayName) if (!lpDisplayName)
*lpcchBuffer = 0; *lpcchBuffer = 0;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RGetServiceDisplayNameW(BindingHandle, dwError = RGetServiceDisplayNameW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPWSTR)lpServiceName, (LPWSTR)lpServiceName,
lpDisplayName, lpDisplayName,
lpcchBuffer); lpcchBuffer);
@ -1489,12 +1385,9 @@ GetServiceKeyNameA(SC_HANDLE hSCManager,
if (!lpServiceName) if (!lpServiceName)
*lpcchBuffer = 0; *lpcchBuffer = 0;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RGetServiceKeyNameA(BindingHandle, dwError = RGetServiceKeyNameA((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPSTR)lpDisplayName, (LPSTR)lpDisplayName,
lpServiceName, lpServiceName,
lpcchBuffer); lpcchBuffer);
@ -1534,12 +1427,9 @@ GetServiceKeyNameW(SC_HANDLE hSCManager,
if (!lpDisplayName) if (!lpDisplayName)
*lpcchBuffer = 0; *lpcchBuffer = 0;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RGetServiceKeyNameW(BindingHandle, dwError = RGetServiceKeyNameW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPWSTR)lpDisplayName, (LPWSTR)lpDisplayName,
lpServiceName, lpServiceName,
lpcchBuffer); lpcchBuffer);
@ -1574,13 +1464,10 @@ LockServiceDatabase(SC_HANDLE hSCManager)
TRACE("LockServiceDatabase(%x)\n", hSCManager); TRACE("LockServiceDatabase(%x)\n", hSCManager);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RLockServiceDatabase(BindingHandle, dwError = RLockServiceDatabase((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(SC_RPC_LOCK *)&hLock); (SC_RPC_LOCK *)&hLock);
} }
_SEH_HANDLE _SEH_HANDLE
@ -1660,13 +1547,10 @@ OpenSCManagerA(LPCSTR lpMachineName,
WaitForSCManager(); WaitForSCManager();
// HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = ROpenSCManagerA(//BindingHandle, dwError = ROpenSCManagerA((LPSTR)lpMachineName,
(LPSTR)lpMachineName,
(LPSTR)lpDatabaseName, (LPSTR)lpDatabaseName,
dwDesiredAccess, dwDesiredAccess,
(SC_RPC_HANDLE *)&hScm); (SC_RPC_HANDLE *)&hScm);
@ -1708,13 +1592,10 @@ OpenSCManagerW(LPCWSTR lpMachineName,
WaitForSCManager(); WaitForSCManager();
// HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = ROpenSCManagerW(//BindingHandle, dwError = ROpenSCManagerW((LPWSTR)lpMachineName,
(LPWSTR)lpMachineName,
(LPWSTR)lpDatabaseName, (LPWSTR)lpDatabaseName,
dwDesiredAccess, dwDesiredAccess,
(SC_RPC_HANDLE *)&hScm); (SC_RPC_HANDLE *)&hScm);
@ -1754,13 +1635,10 @@ OpenServiceA(SC_HANDLE hSCManager,
TRACE("OpenServiceA(%p, %s, %lx)\n", TRACE("OpenServiceA(%p, %s, %lx)\n",
hSCManager, lpServiceName, dwDesiredAccess); hSCManager, lpServiceName, dwDesiredAccess);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = ROpenServiceA(BindingHandle, dwError = ROpenServiceA((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPSTR)lpServiceName, (LPSTR)lpServiceName,
dwDesiredAccess, dwDesiredAccess,
(SC_RPC_HANDLE *)&hService); (SC_RPC_HANDLE *)&hService);
@ -1800,13 +1678,10 @@ OpenServiceW(SC_HANDLE hSCManager,
TRACE("OpenServiceW(%p, %S, %lx)\n", TRACE("OpenServiceW(%p, %S, %lx)\n",
hSCManager, lpServiceName, dwDesiredAccess); hSCManager, lpServiceName, dwDesiredAccess);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = ROpenServiceW(BindingHandle, dwError = ROpenServiceW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
(LPWSTR)lpServiceName, (LPWSTR)lpServiceName,
dwDesiredAccess, dwDesiredAccess,
(SC_RPC_HANDLE *)&hService); (SC_RPC_HANDLE *)&hService);
@ -1849,13 +1724,10 @@ QueryServiceConfigA(SC_HANDLE hService,
TRACE("QueryServiceConfigA(%p, %p, %lu, %p)\n", TRACE("QueryServiceConfigA(%p, %p, %lu, %p)\n",
hService, lpServiceConfig, cbBufSize, pcbBytesNeeded); hService, lpServiceConfig, cbBufSize, pcbBytesNeeded);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceConfigA(BindingHandle, dwError = RQueryServiceConfigA((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
(LPBYTE)lpServiceConfig, (LPBYTE)lpServiceConfig,
cbBufSize, cbBufSize,
pcbBytesNeeded); pcbBytesNeeded);
@ -1921,13 +1793,10 @@ QueryServiceConfigW(SC_HANDLE hService,
TRACE("QueryServiceConfigW(%p, %p, %lu, %p)\n", TRACE("QueryServiceConfigW(%p, %p, %lu, %p)\n",
hService, lpServiceConfig, cbBufSize, pcbBytesNeeded); hService, lpServiceConfig, cbBufSize, pcbBytesNeeded);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceConfigW(BindingHandle, dwError = RQueryServiceConfigW((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
(LPBYTE)lpServiceConfig, (LPBYTE)lpServiceConfig,
cbBufSize, cbBufSize,
pcbBytesNeeded); pcbBytesNeeded);
@ -2011,13 +1880,10 @@ QueryServiceConfig2A(SC_HANDLE hService,
return FALSE; return FALSE;
} }
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceConfig2A(BindingHandle, dwError = RQueryServiceConfig2A((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwInfoLevel, dwInfoLevel,
lpBuffer, lpBuffer,
cbBufSize, cbBufSize,
@ -2109,13 +1975,10 @@ QueryServiceConfig2W(SC_HANDLE hService,
return FALSE; return FALSE;
} }
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceConfig2W(BindingHandle, dwError = RQueryServiceConfig2W((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwInfoLevel, dwInfoLevel,
lpBuffer, lpBuffer,
cbBufSize, cbBufSize,
@ -2191,13 +2054,10 @@ QueryServiceLockStatusA(SC_HANDLE hSCManager,
TRACE("QueryServiceLockStatusA() called\n"); TRACE("QueryServiceLockStatusA() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceLockStatusA(BindingHandle, dwError = RQueryServiceLockStatusA((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
lpLockStatus, lpLockStatus,
cbBufSize, cbBufSize,
pcbBytesNeeded); pcbBytesNeeded);
@ -2242,13 +2102,10 @@ QueryServiceLockStatusW(SC_HANDLE hSCManager,
TRACE("QueryServiceLockStatusW() called\n"); TRACE("QueryServiceLockStatusW() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceLockStatusW(BindingHandle, dwError = RQueryServiceLockStatusW((SC_RPC_HANDLE)hSCManager,
(SC_RPC_HANDLE)hSCManager,
lpLockStatus, lpLockStatus,
cbBufSize, cbBufSize,
pcbBytesNeeded); pcbBytesNeeded);
@ -2295,13 +2152,10 @@ QueryServiceObjectSecurity(SC_HANDLE hService,
TRACE("QueryServiceObjectSecurity(%p, %lu, %p)\n", TRACE("QueryServiceObjectSecurity(%p, %lu, %p)\n",
hService, dwSecurityInformation, lpSecurityDescriptor); hService, dwSecurityInformation, lpSecurityDescriptor);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceObjectSecurity(BindingHandle, dwError = RQueryServiceObjectSecurity((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwSecurityInformation, dwSecurityInformation,
(LPBYTE)lpSecurityDescriptor, (LPBYTE)lpSecurityDescriptor,
cbBufSize, cbBufSize,
@ -2365,13 +2219,10 @@ SetServiceObjectSecurity(SC_HANDLE hService,
return FALSE; return FALSE;
} }
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RSetServiceObjectSecurity(BindingHandle, dwError = RSetServiceObjectSecurity((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwSecurityInformation, dwSecurityInformation,
(LPBYTE)SelfRelativeSD, (LPBYTE)SelfRelativeSD,
Length); Length);
@ -2409,13 +2260,10 @@ QueryServiceStatus(SC_HANDLE hService,
TRACE("QueryServiceStatus(%p, %p)\n", TRACE("QueryServiceStatus(%p, %p)\n",
hService, lpServiceStatus); hService, lpServiceStatus);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceStatus(BindingHandle, dwError = RQueryServiceStatus((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
lpServiceStatus); lpServiceStatus);
} }
_SEH_HANDLE _SEH_HANDLE
@ -2451,13 +2299,10 @@ QueryServiceStatusEx(SC_HANDLE hService,
TRACE("QueryServiceStatusEx() called\n"); TRACE("QueryServiceStatusEx() called\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RQueryServiceStatusEx(BindingHandle, dwError = RQueryServiceStatusEx((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
InfoLevel, InfoLevel,
lpBuffer, lpBuffer,
cbBufSize, cbBufSize,
@ -2492,12 +2337,9 @@ StartServiceA(SC_HANDLE hService,
{ {
DWORD dwError; DWORD dwError;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RStartServiceA(BindingHandle, dwError = RStartServiceA((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwNumServiceArgs, dwNumServiceArgs,
(LPSTRING_PTRSA)lpServiceArgVectors); (LPSTRING_PTRSA)lpServiceArgVectors);
} }
@ -2530,12 +2372,9 @@ StartServiceW(SC_HANDLE hService,
{ {
DWORD dwError; DWORD dwError;
HandleBind();
_SEH_TRY _SEH_TRY
{ {
dwError = RStartServiceW(BindingHandle, dwError = RStartServiceW((SC_RPC_HANDLE)hService,
(SC_RPC_HANDLE)hService,
dwNumServiceArgs, dwNumServiceArgs,
(LPSTRING_PTRSW)lpServiceArgVectors); (LPSTRING_PTRSW)lpServiceArgVectors);
} }
@ -2568,13 +2407,10 @@ UnlockServiceDatabase(SC_LOCK ScLock)
TRACE("UnlockServiceDatabase(%x)\n", ScLock); TRACE("UnlockServiceDatabase(%x)\n", ScLock);
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RUnlockServiceDatabase(BindingHandle, dwError = RUnlockServiceDatabase((LPSC_RPC_LOCK)&ScLock);
(LPSC_RPC_LOCK)&ScLock);
} }
_SEH_HANDLE _SEH_HANDLE
{ {
@ -2605,13 +2441,10 @@ NotifyBootConfigStatus(BOOL BootAcceptable)
TRACE("NotifyBootConfigStatus()\n"); TRACE("NotifyBootConfigStatus()\n");
HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RNotifyBootConfigStatus(BindingHandle, dwError = RNotifyBootConfigStatus(NULL,
NULL,
BootAcceptable); BootAcceptable);
} }
_SEH_HANDLE _SEH_HANDLE

View file

@ -20,8 +20,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(advapi);
/* TYPES *********************************************************************/ /* TYPES *********************************************************************/
VOID HandleBind(VOID);
typedef struct _ACTIVE_SERVICE typedef struct _ACTIVE_SERVICE
{ {
CLIENT_HANDLE hService; CLIENT_HANDLE hService;
@ -42,7 +40,6 @@ typedef struct _ACTIVE_SERVICE
/* GLOBALS *******************************************************************/ /* GLOBALS *******************************************************************/
extern handle_t BindingHandle;
static DWORD dwActiveServiceCount = 0; static DWORD dwActiveServiceCount = 0;
static PACTIVE_SERVICE lpActiveServices = NULL; static PACTIVE_SERVICE lpActiveServices = NULL;
@ -544,13 +541,10 @@ I_ScSetServiceBitsA(SERVICE_STATUS_HANDLE hServiceStatus,
{ {
BOOL bResult; BOOL bResult;
// HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
bResult = RI_ScSetServiceBitsA(//BindingHandle, bResult = RI_ScSetServiceBitsA((RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
(RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
dwServiceBits, dwServiceBits,
bSetBitsOn, bSetBitsOn,
bUpdateImmediately, bUpdateImmediately,
@ -583,13 +577,10 @@ I_ScSetServiceBitsW(SERVICE_STATUS_HANDLE hServiceStatus,
{ {
BOOL bResult; BOOL bResult;
// HandleBind();
_SEH_TRY _SEH_TRY
{ {
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
bResult = RI_ScSetServiceBitsW(//BindingHandle, bResult = RI_ScSetServiceBitsW((RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
(RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
dwServiceBits, dwServiceBits,
bSetBitsOn, bSetBitsOn,
bUpdateImmediately, bUpdateImmediately,
@ -639,11 +630,8 @@ SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus,
TRACE("SetServiceStatus() called\n"); TRACE("SetServiceStatus() called\n");
TRACE("hServiceStatus %lu\n", hServiceStatus); TRACE("hServiceStatus %lu\n", hServiceStatus);
// HandleBind();
/* Call to services.exe using RPC */ /* Call to services.exe using RPC */
dwError = RSetServiceStatus(//BindingHandle, dwError = RSetServiceStatus((RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
(RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
lpServiceStatus); lpServiceStatus);
if (dwError != ERROR_SUCCESS) if (dwError != ERROR_SUCCESS)
{ {

View file

@ -18,11 +18,11 @@ const unsigned short SC_MAX_ARGUMENTS = 1024;
typedef [handle] LPSTR SVCCTL_HANDLEA; typedef [handle] LPSTR SVCCTL_HANDLEA;
typedef [handle] LPWSTR SVCCTL_HANDLEW; typedef [handle] LPWSTR SVCCTL_HANDLEW;
typedef [handle] ULONG_PTR RPC_SERVICE_STATUS_HANDLE; typedef [handle] ULONG_PTR RPC_SERVICE_STATUS_HANDLE;
typedef /*[context_handle]*/ unsigned long SC_RPC_HANDLE; typedef [context_handle] PVOID SC_RPC_HANDLE;
typedef SC_RPC_HANDLE* LPSC_RPC_HANDLE; typedef SC_RPC_HANDLE* LPSC_RPC_HANDLE;
typedef /*[context_handle]*/ unsigned long SC_RPC_LOCK; typedef [context_handle] PVOID SC_RPC_LOCK;
typedef SC_RPC_LOCK* LPSC_RPC_LOCK; typedef SC_RPC_LOCK* LPSC_RPC_LOCK;
typedef /*[context_handle]*/ unsigned long SC_NOTIFY_RPC_HANDLE; typedef [context_handle] PVOID SC_NOTIFY_RPC_HANDLE;
typedef SC_NOTIFY_RPC_HANDLE* LPSC_NOTIFY_RPC_HANDLE; typedef SC_NOTIFY_RPC_HANDLE* LPSC_NOTIFY_RPC_HANDLE;
typedef [range(0, 1024 * 4)] DWORD BOUNDED_DWORD_4K; typedef [range(0, 1024 * 4)] DWORD BOUNDED_DWORD_4K;
typedef BOUNDED_DWORD_4K* LPBOUNDED_DWORD_4K; typedef BOUNDED_DWORD_4K* LPBOUNDED_DWORD_4K;
@ -297,38 +297,33 @@ typedef struct _STRING_PTRSW {
uuid(367abb81-9844-35f1-ad32-98f038001003), uuid(367abb81-9844-35f1-ad32-98f038001003),
version(2.0), version(2.0),
pointer_default(unique), pointer_default(unique),
// #ifndef __midl #ifndef __midl
,explicit_handle ,explicit_handle
// #endif #endif
] ]
interface svcctl interface svcctl
{ {
/* Function 0 */ /* Function 0 */
DWORD RCloseServiceHandle( DWORD RCloseServiceHandle(
[in] handle_t BindingHandle,
[in, out] LPSC_RPC_HANDLE hSCObject); [in, out] LPSC_RPC_HANDLE hSCObject);
/* Function 1 */ /* Function 1 */
DWORD RControlService( DWORD RControlService(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwControl, [in] DWORD dwControl,
[out] LPSERVICE_STATUS lpServiceStatus); [out] LPSERVICE_STATUS lpServiceStatus);
/* Function 2 */ /* Function 2 */
DWORD RDeleteService( DWORD RDeleteService(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService); [in] SC_RPC_HANDLE hService);
/* Function 3 */ /* Function 3 */
DWORD RLockServiceDatabase( DWORD RLockServiceDatabase(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[out] LPSC_RPC_LOCK lpLock); [out] LPSC_RPC_LOCK lpLock);
/* Function 4 */ /* Function 4 */
DWORD RQueryServiceObjectSecurity( DWORD RQueryServiceObjectSecurity(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation, [in] SECURITY_INFORMATION dwSecurityInformation,
[out, size_is(cbBufSize)] LPBYTE lpSecurityDescriptor, [out, size_is(cbBufSize)] LPBYTE lpSecurityDescriptor,
@ -337,7 +332,6 @@ interface svcctl
/* Function 5 */ /* Function 5 */
DWORD RSetServiceObjectSecurity( DWORD RSetServiceObjectSecurity(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwSecurityInformation, [in] DWORD dwSecurityInformation,
[in, size_is(dwSecuityDescriptorSize)] LPBYTE lpSecurityDescriptor, [in, size_is(dwSecuityDescriptorSize)] LPBYTE lpSecurityDescriptor,
@ -345,30 +339,25 @@ interface svcctl
/* Function 6 */ /* Function 6 */
DWORD RQueryServiceStatus( DWORD RQueryServiceStatus(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[out] LPSERVICE_STATUS lpServiceStatus); [out] LPSERVICE_STATUS lpServiceStatus);
/* Function 7 */ /* Function 7 */
DWORD RSetServiceStatus( DWORD RSetServiceStatus(
// [in] handle_t BindingHandle,
[in] RPC_SERVICE_STATUS_HANDLE hServiceStatus, [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus,
[in] LPSERVICE_STATUS lpServiceStatus); [in] LPSERVICE_STATUS lpServiceStatus);
/* Function 8 */ /* Function 8 */
DWORD RUnlockServiceDatabase( DWORD RUnlockServiceDatabase(
[in] handle_t BindingHandle,
[in, out] LPSC_RPC_LOCK Lock); [in, out] LPSC_RPC_LOCK Lock);
/* Function 9 */ /* Function 9 */
DWORD RNotifyBootConfigStatus( DWORD RNotifyBootConfigStatus(
[in] handle_t BindingHandle,
[in, string, unique, range(0, SC_MAX_COMPUTER_NAME_LENGTH)] SVCCTL_HANDLEW lpMachineName, [in, string, unique, range(0, SC_MAX_COMPUTER_NAME_LENGTH)] SVCCTL_HANDLEW lpMachineName,
[in] DWORD BootAcceptable); [in] DWORD BootAcceptable);
/* Function 10 */ /* Function 10 */
DWORD RI_ScSetServiceBitsW( DWORD RI_ScSetServiceBitsW(
// [in] handle_t BindingHandle,
[in] RPC_SERVICE_STATUS_HANDLE hServiceStatus, [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus,
[in] DWORD dwServiceBits, [in] DWORD dwServiceBits,
[in] BOOL bSetBitsOn, [in] BOOL bSetBitsOn,
@ -377,7 +366,6 @@ interface svcctl
/* Function 11 */ /* Function 11 */
DWORD RChangeServiceConfigW( DWORD RChangeServiceConfigW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
[in] DWORD dwStartType, [in] DWORD dwStartType,
@ -394,7 +382,6 @@ interface svcctl
/* Function 12 */ /* Function 12 */
DWORD RCreateServiceW( DWORD RCreateServiceW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpServiceName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpServiceName,
[in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpDisplayName, [in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpDisplayName,
@ -414,7 +401,6 @@ interface svcctl
/* Function 13 */ /* Function 13 */
DWORD REnumDependentServicesW( DWORD REnumDependentServicesW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwServiceState, [in] DWORD dwServiceState,
[out, size_is(cbBufSize)] LPBYTE lpServices, [out, size_is(cbBufSize)] LPBYTE lpServices,
@ -424,7 +410,6 @@ interface svcctl
/* Function 14 */ /* Function 14 */
DWORD REnumServicesStatusW( DWORD REnumServicesStatusW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
[in] DWORD dwServiceState, [in] DWORD dwServiceState,
@ -436,7 +421,6 @@ interface svcctl
/* Function 15 */ /* Function 15 */
DWORD ROpenSCManagerW( DWORD ROpenSCManagerW(
// [in] handle_t BindingHandle,
[in, string, unique, range(0, SC_MAX_COMPUTER_NAME_LENGTH)] SVCCTL_HANDLEW lpMachineName, [in, string, unique, range(0, SC_MAX_COMPUTER_NAME_LENGTH)] SVCCTL_HANDLEW lpMachineName,
[in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpDatabaseName, [in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpDatabaseName,
[in] DWORD dwDesiredAccess, [in] DWORD dwDesiredAccess,
@ -444,7 +428,6 @@ interface svcctl
/* Function 16 */ /* Function 16 */
DWORD ROpenServiceW( DWORD ROpenServiceW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpServiceName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpServiceName,
[in] DWORD dwDesiredAccess, [in] DWORD dwDesiredAccess,
@ -452,7 +435,6 @@ interface svcctl
/* Function 17 */ /* Function 17 */
DWORD RQueryServiceConfigW( DWORD RQueryServiceConfigW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig, [out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig,
/* FIXME: should be [out] LPQUERY_SERVICE_CONFIGW lpServiceConfig, */ /* FIXME: should be [out] LPQUERY_SERVICE_CONFIGW lpServiceConfig, */
@ -461,7 +443,6 @@ interface svcctl
/* Function 18 */ /* Function 18 */
DWORD RQueryServiceLockStatusW( DWORD RQueryServiceLockStatusW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[out] LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus, [out] LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,
[in, range(0, 1024*4)] DWORD cbBufSize, [in, range(0, 1024*4)] DWORD cbBufSize,
@ -469,14 +450,12 @@ interface svcctl
/* Function 19 */ /* Function 19 */
DWORD RStartServiceW( DWORD RStartServiceW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in, range(0, SC_MAX_ARGUMENTS)] DWORD argc, [in, range(0, SC_MAX_ARGUMENTS)] DWORD argc,
[in, unique, size_is(argc)] LPSTRING_PTRSW argv); [in, unique, size_is(argc)] LPSTRING_PTRSW argv);
/* Function 20 */ /* Function 20 */
DWORD RGetServiceDisplayNameW( DWORD RGetServiceDisplayNameW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpServiceName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpServiceName,
[out, string, range(1, 4*1024+1), size_is(*lpcchBuffer + 1)] LPWSTR lpDisplayName, [out, string, range(1, 4*1024+1), size_is(*lpcchBuffer + 1)] LPWSTR lpDisplayName,
@ -484,7 +463,6 @@ interface svcctl
/* Function 21 */ /* Function 21 */
DWORD RGetServiceKeyNameW( DWORD RGetServiceKeyNameW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpDisplayName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpDisplayName,
[out, string, range(1, 4*1024+1), size_is(*lpcchBuffer + 1)] LPWSTR lpServiceName, [out, string, range(1, 4*1024+1), size_is(*lpcchBuffer + 1)] LPWSTR lpServiceName,
@ -492,7 +470,6 @@ interface svcctl
/* Function 22 */ /* Function 22 */
DWORD RI_ScSetServiceBitsA( DWORD RI_ScSetServiceBitsA(
// [in] handle_t BindingHandle,
[in] RPC_SERVICE_STATUS_HANDLE hServiceStatus, [in] RPC_SERVICE_STATUS_HANDLE hServiceStatus,
[in] DWORD dwServiceBits, [in] DWORD dwServiceBits,
[in] BOOL bSetBitsOn, [in] BOOL bSetBitsOn,
@ -501,7 +478,6 @@ interface svcctl
/* Function 23 */ /* Function 23 */
DWORD RChangeServiceConfigA( DWORD RChangeServiceConfigA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
[in] DWORD dwStartType, [in] DWORD dwStartType,
@ -518,7 +494,6 @@ interface svcctl
/* Function 24 */ /* Function 24 */
DWORD RCreateServiceA( DWORD RCreateServiceA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpServiceName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpServiceName,
[in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpDisplayName, [in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpDisplayName,
@ -538,7 +513,6 @@ interface svcctl
/* Function 25 */ /* Function 25 */
DWORD REnumDependentServicesA( DWORD REnumDependentServicesA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwServiceState, [in] DWORD dwServiceState,
[out, size_is(cbBufSize)] LPBYTE lpServices, [out, size_is(cbBufSize)] LPBYTE lpServices,
@ -548,7 +522,6 @@ interface svcctl
/* Function 26 */ /* Function 26 */
DWORD REnumServicesStatusA( DWORD REnumServicesStatusA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
[in] DWORD dwServiceState, [in] DWORD dwServiceState,
@ -560,7 +533,6 @@ interface svcctl
/* Function 27 */ /* Function 27 */
DWORD ROpenSCManagerA( DWORD ROpenSCManagerA(
// [in] handle_t BindingHandle,
[in, string, unique, range(0, SC_MAX_COMPUTER_NAME_LENGTH)] SVCCTL_HANDLEA lpMachineName, [in, string, unique, range(0, SC_MAX_COMPUTER_NAME_LENGTH)] SVCCTL_HANDLEA lpMachineName,
[in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpDatabaseName, [in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpDatabaseName,
[in] DWORD dwDesiredAccess, [in] DWORD dwDesiredAccess,
@ -568,7 +540,6 @@ interface svcctl
/* Function 28 */ /* Function 28 */
DWORD ROpenServiceA( DWORD ROpenServiceA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpServiceName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpServiceName,
[in] DWORD dwDesiredAccess, [in] DWORD dwDesiredAccess,
@ -576,7 +547,6 @@ interface svcctl
/* Function 29 */ /* Function 29 */
DWORD RQueryServiceConfigA( DWORD RQueryServiceConfigA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig, [out, unique, size_is(cbBufSize)] LPBYTE lpServiceConfig,
/* FIXME: should be [out] LPQUERY_SERVICE_CONFIGA lpServiceConfig, */ /* FIXME: should be [out] LPQUERY_SERVICE_CONFIGA lpServiceConfig, */
@ -585,7 +555,6 @@ interface svcctl
/* Function 30 */ /* Function 30 */
DWORD RQueryServiceLockStatusA( DWORD RQueryServiceLockStatusA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[out] LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus, [out] LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,
[in, range(0, 1024*4)] DWORD cbBufSize, [in, range(0, 1024*4)] DWORD cbBufSize,
@ -593,14 +562,12 @@ interface svcctl
/* Function 31 */ /* Function 31 */
DWORD RStartServiceA( DWORD RStartServiceA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in, range(0, SC_MAX_ARGUMENTS)] DWORD argc, [in, range(0, SC_MAX_ARGUMENTS)] DWORD argc,
[in, unique, size_is(argc)] LPSTRING_PTRSA argv); [in, unique, size_is(argc)] LPSTRING_PTRSA argv);
/* Function 32 */ /* Function 32 */
DWORD RGetServiceDisplayNameA( DWORD RGetServiceDisplayNameA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpServiceName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpServiceName,
[out, string, size_is(*lpcchBuffer)] LPSTR lpDisplayName, [out, string, size_is(*lpcchBuffer)] LPSTR lpDisplayName,
@ -608,7 +575,6 @@ interface svcctl
/* Function 33 */ /* Function 33 */
DWORD RGetServiceKeyNameA( DWORD RGetServiceKeyNameA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpDisplayName, [in, string, range(0, SC_MAX_NAME_LENGTH)] LPSTR lpDisplayName,
[out, string, size_is(*lpcchBuffer)] LPSTR lpKeyName, [out, string, size_is(*lpcchBuffer)] LPSTR lpKeyName,
@ -616,14 +582,12 @@ interface svcctl
/* Function 34 */ /* Function 34 */
DWORD RI_ScGetCurrentGroupStateW( DWORD RI_ScGetCurrentGroupStateW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpLoadOrderGroup, [in, string, unique, range(0, SC_MAX_NAME_LENGTH)] LPWSTR lpLoadOrderGroup,
[out] LPDWORD lpState); [out] LPDWORD lpState);
/* Function 35 */ /* Function 35 */
DWORD REnumServiceGroupW( DWORD REnumServiceGroupW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
[in] DWORD dwServiceState, [in] DWORD dwServiceState,
@ -636,19 +600,16 @@ interface svcctl
/* Function 36 */ /* Function 36 */
DWORD RChangeServiceConfig2A( DWORD RChangeServiceConfig2A(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] SC_RPC_CONFIG_INFOA Info); [in] SC_RPC_CONFIG_INFOA Info);
/* Function 37 */ /* Function 37 */
DWORD RChangeServiceConfig2W( DWORD RChangeServiceConfig2W(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] SC_RPC_CONFIG_INFOW Info); [in] SC_RPC_CONFIG_INFOW Info);
/* Function 38 */ /* Function 38 */
DWORD RQueryServiceConfig2A( DWORD RQueryServiceConfig2A(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwInfoLevel, [in] DWORD dwInfoLevel,
[out, size_is(cbBufSize)] LPBYTE lpBuffer, [out, size_is(cbBufSize)] LPBYTE lpBuffer,
@ -657,7 +618,6 @@ interface svcctl
/* Function 39 */ /* Function 39 */
DWORD RQueryServiceConfig2W( DWORD RQueryServiceConfig2W(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwInfoLevel, [in] DWORD dwInfoLevel,
[out, size_is(cbBufSize)] LPBYTE lpBuffer, [out, size_is(cbBufSize)] LPBYTE lpBuffer,
@ -666,7 +626,6 @@ interface svcctl
/* Function 40 */ /* Function 40 */
DWORD RQueryServiceStatusEx( DWORD RQueryServiceStatusEx(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] SC_STATUS_TYPE InfoLevel, [in] SC_STATUS_TYPE InfoLevel,
[out, size_is(cbBufSize)] LPBYTE lpBuffer, [out, size_is(cbBufSize)] LPBYTE lpBuffer,
@ -675,7 +634,6 @@ interface svcctl
/* Function 41 */ /* Function 41 */
DWORD REnumServicesStatusExA( DWORD REnumServicesStatusExA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in] SC_ENUM_TYPE InfoLevel, [in] SC_ENUM_TYPE InfoLevel,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
@ -689,7 +647,6 @@ interface svcctl
/* Function 42 */ /* Function 42 */
DWORD REnumServicesStatusExW( DWORD REnumServicesStatusExW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hSCManager, [in] SC_RPC_HANDLE hSCManager,
[in] SC_ENUM_TYPE InfoLevel, [in] SC_ENUM_TYPE InfoLevel,
[in] DWORD dwServiceType, [in] DWORD dwServiceType,
@ -749,7 +706,6 @@ interface svcctl
/* Function 47 */ /* Function 47 */
DWORD RNotifyServiceStatusChange( DWORD RNotifyServiceStatusChange(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] SC_RPC_NOTIFY_PARAMS NotifyParams, [in] SC_RPC_NOTIFY_PARAMS NotifyParams,
[in] GUID* pClientProcessGuid, [in] GUID* pClientProcessGuid,
@ -759,19 +715,16 @@ interface svcctl
/* Function 48 */ /* Function 48 */
DWORD RGetNotifyResults( DWORD RGetNotifyResults(
[in] handle_t BindingHandle,
[in] SC_NOTIFY_RPC_HANDLE hNotify, [in] SC_NOTIFY_RPC_HANDLE hNotify,
[out] PSC_RPC_NOTIFY_PARAMS_LIST *ppNotifyParams); [out] PSC_RPC_NOTIFY_PARAMS_LIST *ppNotifyParams);
/* Function 49 */ /* Function 49 */
DWORD RCloseNotifyHandle( DWORD RCloseNotifyHandle(
[in] handle_t BindingHandle,
[in, out] LPSC_NOTIFY_RPC_HANDLE phNotify, [in, out] LPSC_NOTIFY_RPC_HANDLE phNotify,
[out] PBOOL pfApcFired); [out] PBOOL pfApcFired);
/* Function 50 */ /* Function 50 */
DWORD RControlServiceExA( DWORD RControlServiceExA(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwControl, [in] DWORD dwControl,
[in] DWORD dwInfoLevel/*, [in] DWORD dwInfoLevel/*,
@ -780,7 +733,6 @@ interface svcctl
/* Function 51 */ /* Function 51 */
DWORD RControlServiceExW( DWORD RControlServiceExW(
[in] handle_t BindingHandle,
[in] SC_RPC_HANDLE hService, [in] SC_RPC_HANDLE hService,
[in] DWORD dwControl, [in] DWORD dwControl,
[in] DWORD dwInfoLevel/*, [in] DWORD dwInfoLevel/*,