天天看點

SetupDiGetDeviceInterfaceDetail 函數

 SetupDiGetDeviceInterfaceDetail

該函數傳回裝置接口的詳細資訊。

WINSETUPAPI BOOL WINAPI

SetupDiGetDeviceInterfaceDetail(

IN HDEVINFO  DeviceInfoSet,

IN PSP_DEVICE_INTERFACE_DATA  DeviceInterfaceData,

OUT PSP_DEVICE_INTERFACE_DETAIL_DATA  DeviceInterfaceDetailData..OPTIONAL,

IN DWORD  DeviceInterfaceDetailDataSize,

OUT PDWORD  RequiredSize..OPTIONAL,

OUT PSP_DEVINFO_DATA  DeviceInfoData  OPTIONAL

);

參數

DeviceInfoSet

指向裝置資訊集的指針,它包含了所要接收資訊的接口。該句柄通常由SetupDiGetClassDevs函數傳回。

DeviceInterfaceData

一個指向 SP_DEVICE_INTERFACE_DATA結構的指針,該結構指定了 DeviceInfoSet 參數中裝置的接口。這個類型的指針通常由 SetupDiEnumDeviceInterfaces 函數傳回。

DeviceInterfaceDetailData

一個指向SP_DEVICE_INTERFACE_DETAIL_DATA結構的指針,該結構用于接收指定接口的資訊。該參數是可選的且可以為NULL。如果DeviceInterfaceDetailSize 參數為0,該參數必須為NULL。如果該參數被指定,主調者必須在調用該函數之前,設定 SP_DEVICE_INTERFACE_DETAIL_DATA 結構的 cbSize 成員為 sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA)。cbSize 成員總是包含資料結構的固定部分的長度。

DeviceInterfaceDetailDataSize

DeviceInterfaceDetailData 參數指定的緩沖的大小。該緩沖的大小不能小于 (offsetof(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath) + sizeof(TCHAR)) 位元組。

如果 DeviceInterfaceDetailData 參數為NULL,該參數必須為0.

RequiredSize

一個指向變量的指針,該變量接收請求的 DeviceInterfaceDetailData 緩沖的大小。這個大小包含了結構的固定部分的大小再加上裝置路徑字元串的長度。該參數是可選的,也可以是NULL。

DeviceInfoData

一個指向緩沖的指針,該緩沖接收關于支援請求的接口的裝置的資訊。主調者必須設定 DeviceInfoData.cbSize 成員為 sizeof(SP_DEVINFO_DATA)。該參數是可選的,也可以為NULL。

傳回值

如果函數順利完成,則傳回TRUE,如果有錯誤,則傳回FALSE。

備注

使用該函數來獲得接口的細節,通常需要兩個步驟:

1、獲得請求的緩沖大小。Call SetupDiGetDeviceInterfaceDetail with a NULL DeviceInterfaceDetailData pointer, a DeviceInterfaceDetailDataSize of zero, and a valid RequiredSize variable. In response to such a call, this function returns the required buffer size at RequiredSize and fails with GetLastError returning ERROR_INSUFFICIENT_BUFFER.

2、配置設定一個合适的緩沖并再次調用函數來獲得接口細節。

由該函數傳回的接口細節包括裝置路徑。不要試圖解析裝置路徑符号名字。裝置路徑可以跨系統重用。

該函數可以被用來獲得DeviceInfoData。如果接口存在,但DeviceInterfaceDetailData 為NULL,該函數會失敗。

要求

Versions: The SetupDiGetDeviceInterfaceDetail function is available in Microsoft Windows 2000 and later versions of Windows.

Headers: Declared in Setupapi.h. Include Setupapi.h.

Library: Contained in Setupapi.lib. Link to Setupapi.lib.

本文轉hackfreer51CTO部落格,原文連結:http://blog.51cto.com/pnig0s1992/683987,如需轉載請自行聯系原作者

繼續閱讀