[SETUPAPI] Implement SetupDiRestartDevices()

This commit is contained in:
Eric Kohl 2019-06-22 20:50:51 +02:00
parent 8c7705eb5d
commit 8dc70d2454
3 changed files with 47 additions and 1 deletions

View file

@ -6090,3 +6090,48 @@ BOOL WINAPI SetupDiDeleteDevRegKey(
RegCloseKey(RootKey);
return ret;
}
/***********************************************************************
* SetupDiRestartDevices (SETUPAPI.@)
*/
BOOL
WINAPI
SetupDiRestartDevices(
HDEVINFO DeviceInfoSet,
PSP_DEVINFO_DATA DeviceInfoData)
{
struct DeviceInfoSet *set = (struct DeviceInfoSet *)DeviceInfoSet;
struct DeviceInfo *devInfo;
CONFIGRET cr;
TRACE("%p %p\n", DeviceInfoSet, DeviceInfoData);
if (!DeviceInfoSet || DeviceInfoSet == INVALID_HANDLE_VALUE)
{
SetLastError(ERROR_INVALID_HANDLE);
return FALSE;
}
if (set->magic != SETUP_DEVICE_INFO_SET_MAGIC)
{
SetLastError(ERROR_INVALID_HANDLE);
return FALSE;
}
if (!DeviceInfoData || DeviceInfoData->cbSize != sizeof(SP_DEVINFO_DATA)
|| !DeviceInfoData->Reserved)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
devInfo = (struct DeviceInfo *)DeviceInfoData->Reserved;
cr = CM_Enable_DevNode_Ex(devInfo->dnDevInst, 0, set->hMachine);
if (cr != CR_SUCCESS)
{
SetLastError(GetErrorCodeFromCrCode(cr));
return FALSE;
}
return TRUE;
}

View file

@ -369,7 +369,7 @@
@ stdcall SetupDiRegisterDeviceInfo(ptr ptr long ptr ptr ptr)
@ stdcall SetupDiRemoveDevice(ptr ptr)
@ stdcall SetupDiRemoveDeviceInterface(ptr ptr)
@ stub SetupDiRestartDevices
@ stdcall SetupDiRestartDevices(ptr ptr)
@ stdcall SetupDiSelectBestCompatDrv(ptr ptr)
@ stdcall SetupDiSelectDevice(ptr ptr)
@ stub SetupDiSelectOEMDrv

View file

@ -1795,6 +1795,7 @@ WINSETUPAPI BOOL WINAPI SetupDiRegisterCoDeviceInstallers(_In_ HDEVINFO, _In_ PS
WINSETUPAPI BOOL WINAPI SetupDiRegisterDeviceInfo(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA, _In_ DWORD, _In_opt_ PSP_DETSIG_CMPPROC, _In_opt_ PVOID, _Out_opt_ PSP_DEVINFO_DATA);
WINSETUPAPI BOOL WINAPI SetupDiRemoveDevice(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
WINSETUPAPI BOOL WINAPI SetupDiRemoveDeviceInterface(_In_ HDEVINFO, _Inout_ PSP_DEVICE_INTERFACE_DATA);
WINSETUPAPI BOOL WINAPI SetupDiRestartDevices(_In_ HDEVINFO, _Inout_ PSP_DEVINFO_DATA);
WINSETUPAPI BOOL WINAPI SetupDiSelectBestCompatDrv(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA);
WINSETUPAPI BOOL WINAPI SetupDiSelectDevice(_In_ HDEVINFO, _Inout_opt_ PSP_DEVINFO_DATA);
WINSETUPAPI BOOL WINAPI SetupDiSelectOEMDrv(_In_opt_ HWND, _In_ HDEVINFO, _In_opt_ PSP_DEVINFO_DATA);