2

SetupDiGetDeviceInterfaceDetail ( https://msdn.microsoft.com/en-us/library/ff551120.aspx ) の呼び出し中に Windows エラー 87 が引き続き発生し、すべてのオプション パラメータを NULL に切り替えてもエラーが発生し続けますが、機能する別の関数で最初の 2 つのパラメーターを使用しているため、それらの何が間違っているのかわかりません。

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 が有効であるため)、どのパラメーターが正しくない可能性があるのか​​ 本当にわかりません。

4

1 に答える 1