Получение ошибки 87, неверный параметр для SetupDiGetDeviceInterfaceDetail

Я продолжаю получать ошибку Windows 87 при вызове SetupDiGetDeviceInterfaceDetail (https://msdn.microsoft.com/en-us/library/ff551120.aspx), Я получаю сообщение об ошибке, даже когда я переключаю все необязательные параметры на NULL, но я использую два первых параметра в другой функции, которая работает, поэтому я не понимаю, что в них не так.

HDEVINFO hdiInfo = SetupDiGetClassDevsW(&guid, NULL, NULL, 0x12);

SP_DEVICE_INTERFACE_DATA hidDevIData = SP_DEVICE_INTERFACE_DATA();hidDevIData.cbSize = sizeof(hidDevIData);
bool isValid = SetupDiEnumDeviceInterfaces(hdiInfo, 0, &guid, i, &hidDevIData);

if (isValid)
{
DWORD dwLength;
PSP_DEVICE_INTERFACE_DETAIL_DATA hidDevIDetailData = PSP_DEVICE_INTERFACE_DETAIL_DATA();
hidDevIData.cbSize = 8;
hidDevIDetailData = new SP_DEVICE_INTERFACE_DETAIL_DATA();
hidDevIDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

SetupDiGetDeviceInterfaceDetail(hdiInfo, &hidDevIData, NULL, 0, &dwLength, NULL); //ERROR 87 : ERROR_INVALID_PARAMETER
}

Я действительно не знаю, какой параметр может быть неверным, так как все предыдущие функции возвращают true (поэтому GUID действителен, например).

2

Решение

Для тех, кто борется с той же проблемой, вам просто нужно установить cbSize в sizeof (object):

hidDevIData.cbSize = sizeof(hidDevIData);
hidDevIDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]