SetupDiGetDeviceInterfaceDetailA 函式 (setupapi.h)
SetupDiGetDeviceInterfaceDetail函式會傳回裝置介面的詳細資料。
語法
WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailA(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
[out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,
[in] DWORD DeviceInterfaceDetailDataSize,
[out, optional] PDWORD RequiredSize,
[out, optional] PSP_DEVINFO_DATA DeviceInfoData
);
參數
[in] DeviceInfoSet
裝置資訊集的指標,其中包含要擷取詳細資料的介面。 此控制碼通常是由 SetupDiGetClassDevs傳回。
[in] DeviceInterfaceData
SP_DEVICE_INTERFACE_DATA結構的指標,指定要擷取詳細資料的DeviceInfoSet中的介面。 此類型的指標通常是由 SetupDiEnumDeviceInterfaces傳回。
[out, optional] DeviceInterfaceDetailData
要接收指定介面相關資訊 之SP_DEVICE_INTERFACE_DETAIL_DATA 結構的指標。 此參數是選擇性的,可以是 Null。 如果DeviceInterfaceDetailSize為零,此參數必須是Null。 如果指定此參數,呼叫端必須先將DeviceInterfaceDetailData.cbSize設定為sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA) ,才能呼叫此函式。 cbSize成員一律包含資料結構固定部分的大小,而不是反映結尾之可變長度字串的大小。
[in] DeviceInterfaceDetailDataSize
DeviceInterfaceDetailData緩衝區的大小。 緩衝區至少必須是 (offsetof (SP_DEVICE_INTERFACE_DETAIL_DATA 、DevicePath) + sizeof (TCHAR) ) 位元組,才能包含結構的固定部分,以及以單一 Null 終止空MULTI_SZ字串。
如果 DeviceInterfaceDetailData 為 Null,此參數必須為零。
[out, optional] RequiredSize
DWORD 類型的變數指標,可接收 DeviceInterfaceDetailData 緩衝區的必要大小。 此大小包括結構的固定部分大小,加上可變長度裝置路徑字串所需的位元組數目。 此參數是選擇性的,可以是 Null。
[out, optional] DeviceInfoData
緩衝區的指標,可接收支援所要求介面之裝置的相關資訊。 呼叫端必須將DeviceInfoData.cbSize設定為sizeof (SP_DEVINFO_DATA) 。 此參數是選擇性的,可以是 Null。
傳回值
SetupDiGetDeviceInterfaceDetail 如果函式完成且沒有錯誤,則會傳回 TRUE 。 如果函式已完成併發生錯誤,則會傳回 FALSE ,而且呼叫 GetLastError即可擷取失敗的錯誤碼。
備註
使用此函式來取得介面的詳細資料通常是雙步驟程式:
- 取得必要的緩衝區大小。 使用NullDeviceInterfaceDetailData指標、DeviceInterfaceDetailDataSize為零,以及有效的RequiredSize變數呼叫SetupDiGetDeviceInterfaceDetail。 為了回應這類呼叫,此函式會在 RequiredSize 傳回必要的緩衝區大小,並因傳回ERROR_INSUFFICIENT_BUFFER 的 GetLastError 而失敗。
- 配置適當大小的緩衝區,然後再次呼叫 函式以取得介面詳細資料。
SetupDiGetDeviceInterfaceDetail 可用來只取得 DeviceInfoData。 如果介面存在但 DeviceInterfaceDetailData 為 Null,則此函式會失敗, GetLastError 會傳回ERROR_INSUFFICIENT_BUFFER,而 DeviceInfoData 結構會填入公開介面之裝置的相關資訊。
注意
setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupDiGetDeviceInterfaceDetail 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | 可在 Microsoft Windows 2000 和更新版本的 Windows 中使用。 |
目標平台 | 桌上型 |
標頭 | setupapi.h (包括 Setupapi.h) |
程式庫 | Setupapi.lib |