SetupDiGetDeviceInterfaceDetailW 函式 (setupapi.h)

SetupDiGetDeviceInterfaceDetail 函式會傳回裝置介面的詳細數據。

語法

WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailW(
  [in]            HDEVINFO                           DeviceInfoSet,
  [in]            PSP_DEVICE_INTERFACE_DATA          DeviceInterfaceData,
  [out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_W 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 即可擷取失敗的錯誤碼。

備註

使用此函式來取得介面的詳細資料通常是雙步驟程式:

  1. 取得所需的緩衝區大小。 使用 NULLDeviceInterfaceDetailData 指標、DeviceInterfaceDetailDataSize 和有效的 RequiredSize 變數呼叫 SetupDiGetDeviceInterfaceDetail 為了回應這類呼叫,此函式會在 RequiredSize 傳回所需的緩衝區大小,並在傳回ERROR_INSUFFICIENT_BUFFER 的 GetLastError 失敗。
  2. 配置適當大小的緩衝區,並再次呼叫 函式以取得介面詳細數據。
此函式所傳回的介面詳細數據是由可傳遞至 Win32 函式的裝置路徑所組成,例如 CreateFile。 請勿嘗試剖析裝置路徑符號名稱。 裝置路徑可以在系統啟動時重複使用。

SetupDiGetDeviceInterfaceDetail 可用來只取得 DeviceInfoData。 如果介面存在但 DeviceInterfaceDetailDataNULL,則此函式會失敗, GetLastError 會傳回ERROR_INSUFFICIENT_BUFFER,而 DeviceInfoData 結構會填入公開介面之裝置的相關信息。

注意

setupapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 SetupDiGetDeviceInterfaceDetail 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 可在 Microsoft Windows 2000 和更新版本的 Windows 中使用。
目標平台 桌面
標頭 setupapi.h (包括 Setupapi.h)
程式庫 Setupapi.lib
API 集合 ext-ms-win-setupapi-classinstallers-l1-1-2 (Windows 10 10.0.14393 版)

另請參閱

SetupDiEnumDeviceInterfaces

SetupDiGetClassDevs