[SETUPAPI]

- Implement CMP_GetBlockedDriverInfo.
- Make sure that CMP_GetServerSideDeviceInstallFlags and CMP_WaitServicesAvailable can be called on local and remote machines.

svn path=/trunk/; revision=75565
This commit is contained in:
Eric Kohl 2017-08-16 11:45:21 +00:00
parent a6222fc8f3
commit 66de37e22f
2 changed files with 64 additions and 5 deletions

View file

@ -164,6 +164,56 @@ GetRegistryPropertyType(
} }
/***********************************************************************
* CMP_GetBlockedDriverInfo [SETUPAPI.@]
*/
CONFIGRET
WINAPI
CMP_GetBlockedDriverInfo(
_Out_opt_ LPWSTR pszNames,
_Inout_ PULONG pulLength,
_In_ ULONG ulFlags,
_In_opt_ HMACHINE hMachine)
{
RPC_BINDING_HANDLE BindingHandle = NULL;
ULONG ulTransferLength;
CONFIGRET ret;
TRACE("CMP_GetBlockedDriverInfo(%p %p %lx %p)\n",
pszNames, pulLength, ulFlags, hMachine);
if (hMachine != NULL)
{
BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
if (BindingHandle == NULL)
return CR_FAILURE;
}
else
{
if (!PnpGetLocalHandles(&BindingHandle, NULL))
return CR_FAILURE;
}
ulTransferLength = *pulLength;
RpcTryExcept
{
ret = PNP_GetBlockedDriverInfo(BindingHandle,
(PBYTE)pszNames,
&ulTransferLength,
pulLength,
ulFlags);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
ret = RpcStatusToCmStatus(RpcExceptionCode());
}
RpcEndExcept;
return ret;
}
/*********************************************************************** /***********************************************************************
* CMP_GetServerSideDeviceInstallFlags [SETUPAPI.@] * CMP_GetServerSideDeviceInstallFlags [SETUPAPI.@]
*/ */
@ -172,7 +222,7 @@ WINAPI
CMP_GetServerSideDeviceInstallFlags( CMP_GetServerSideDeviceInstallFlags(
_Out_ PULONG pulSSDIFlags, _Out_ PULONG pulSSDIFlags,
_In_ ULONG ulFlags, _In_ ULONG ulFlags,
_In_ HMACHINE hMachine) _In_opt_ HMACHINE hMachine)
{ {
RPC_BINDING_HANDLE BindingHandle = NULL; RPC_BINDING_HANDLE BindingHandle = NULL;
CONFIGRET ret; CONFIGRET ret;
@ -444,7 +494,7 @@ CMP_WaitNoPendingInstallEvents(
CONFIGRET CONFIGRET
WINAPI WINAPI
CMP_WaitServicesAvailable( CMP_WaitServicesAvailable(
_In_ HMACHINE hMachine) _In_opt_ HMACHINE hMachine)
{ {
RPC_BINDING_HANDLE BindingHandle = NULL; RPC_BINDING_HANDLE BindingHandle = NULL;
CONFIGRET ret = CR_SUCCESS; CONFIGRET ret = CR_SUCCESS;
@ -452,8 +502,17 @@ CMP_WaitServicesAvailable(
TRACE("CMP_WaitServicesAvailable(%p)\n", hMachine); TRACE("CMP_WaitServicesAvailable(%p)\n", hMachine);
if (!PnpGetLocalHandles(&BindingHandle, NULL)) if (hMachine != NULL)
return CR_FAILURE; {
BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle;
if (BindingHandle == NULL)
return CR_FAILURE;
}
else
{
if (!PnpGetLocalHandles(&BindingHandle, NULL))
return CR_FAILURE;
}
RpcTryExcept RpcTryExcept
{ {

View file

@ -1,5 +1,5 @@
# Functions exported by Win2003 SP1 # Functions exported by Win2003 SP1
@ stub CMP_GetBlockedDriverInfo @ stdcall CMP_GetBlockedDriverInfo(wstr ptr long ptr)
@ stdcall CMP_GetServerSideDeviceInstallFlags(ptr long ptr) @ stdcall CMP_GetServerSideDeviceInstallFlags(ptr long ptr)
@ stdcall CMP_Init_Detection(long) @ stdcall CMP_Init_Detection(long)
@ stdcall CMP_RegisterNotification(ptr ptr long ptr) @ stdcall CMP_RegisterNotification(ptr ptr long ptr)