私は何が欠けているのかは分かりませんが、私はより知識のある人から質問する時間です。私はhereというHDC GUIDを使用しています。私はこれをC++コードで開こうとしています。セットアップapiからSATA HBAのリストを取得
// note: devGuid is pointer of type struct GUID in the class this ctor belongs to
DeviceHelper::DeviceManager::DeviceManager(GUID devClassGuid) : devGuid(new GUID(devClassGuid)) {
hDevices = SetupDiGetClassDevs(&devClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
if(INVALID_HANDLE_VALUE == hDevices) {
throw std::exception("Failure to get a handle to a list of device classes");
}
}
この呼び出しは成功し、hDevicesは有効な参照を保持しています。
// hDevices is assigned in the c-tor as is devGuid which is a pointer
DWORD index(0);
SP_DEVICE_INTERFACE_DATA devInterfaceData = {sizeof(SP_DEVICE_INTERFACE_DATA)};
while(SetupDiEnumDeviceInterfaces(hDevices, NULL, devGuid, index, &devInterfaceData)) {
// look for the HBA I want from parameters passed to the class function
// FindHba()
}
SetupDiEnumDeviceInterfaces()「これ以上の項目」ではありませんが、何も反復されていない249のシステムエラーコードを設定します:私はSetupDiEnumDeviceInterfacesを呼び出すときただし、()それは何を反復処理しません。どうやら、ハンドルは空のリストを指しています。私はSetupDiGetClassDevs()の呼び出しで間違っていますか? GUIDが「インターフェイス」GUID(つまり、「インターフェイス」という名前が名前に含まれていない)ではない可能性があります。だから、私はbitwise-or DIGCF_DEVICEINTERFACEで取り除こうとしましたが、これは役に立ちませんでした。
このAPIを使用する方法に関する私の知識は非常に限られています。私は今は何もしていませんが、私の車輪を回転させています。
ありがとうございました。