WdfUsbTargetDeviceAllocAndQueryString 函式 (wdfusb.h)
[適用於 KMDF 和 UMDF]
WdfUsbTargetDeviceAllocAndQueryString 方法會配置緩衝區,然後擷取與指定 USB 裝置和描述元索引值相關聯的 Unicode 字符串。
語法
NTSTATUS WdfUsbTargetDeviceAllocAndQueryString(
[in] WDFUSBDEVICE UsbDevice,
[in, optional] PWDF_OBJECT_ATTRIBUTES StringMemoryAttributes,
[out] WDFMEMORY *StringMemory,
[out, optional] PUSHORT NumCharacters,
[in] UCHAR StringIndex,
[in, optional] USHORT LangID
);
參數
[in] UsbDevice
從先前呼叫 WdfUsbTargetDeviceCreateWithParameters 取得的 USB 裝置物件的句柄。
[in, optional] StringMemoryAttributes
呼叫端配置的 WDF_OBJECT_ATTRIBUTES 結構的指標,其中包含新記憶體物件的呼叫端提供屬性。 此參數是選擇性的,而且可以WDF_NO_OBJECT_ATTRIBUTES。
[out] StringMemory
接收包含 Unicode 字串之內存物件的句柄的位置指標。 只有在裝置提供 NULL 終止字串時,字串才會終止 NULL。
[out, optional] NumCharacters
位置的指標,可接收字串描述元中包含的字元數。 如果 Unicode 字串為 NULL 終止,則此數位會包含 NULL 字元。 此參數是選擇性的,可以是 NULL。
[in] StringIndex
識別 Unicode 字串的索引值。 這個索引值是從 USB_DEVICE_DESCRIPTOR、 USB_CONFIGURATION_DESCRIPTOR或 USB_INTERFACE_DESCRIPTOR 結構取得。
[in, optional] LangID
語言標識碼。 系統會擷取此標識碼所指定語言的 Unicode 字串。 如需取得裝置支援的語言標識碼的相關信息,請參閱 USB 規格。
傳回值
WdfUsbTargetDeviceAllocAndQueryString 會在作業成功時傳回STATUS_SUCCESS。 否則,此方法可以傳回下列其中一個值:
傳回碼 | Description |
---|---|
|
偵測到無效的參數。 |
|
無法配置記憶體緩衝區。 |
|
USB 裝置傳回無效的描述元。 |
|
提供的緩衝區太小。 |
這個方法也可能傳回其他 NTSTATUS值。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
您的驅動程式只需要呼叫一次才能取得字串描述元的 WdfUsbTargetDeviceAllocAndQueryString 方法是 WdfUsbTargetDeviceQueryString 方法的替代方法,必須呼叫兩次才能取得字符串。
方法會找出指定的 USB 字串描述元、將 Unicode 字串從描述項複製到記憶體物件,並傳回記憶體物件的句柄。
呼叫 WdfUsbTargetDeviceAllocAndQueryString 之後,您的驅動程式可以將 StringMemory 句柄傳遞至 WdfMemoryGetBuffer ,以存取記憶體對象的內容。
如需USB字串描述元的詳細資訊,請參閱USB規格。
如需 WdfUsbTargetDeviceAllocAndQueryString 方法和 USB I/O 目標的詳細資訊,請參閱 USB I/O 目標。
範例
下列程式代碼範例會呼叫 WdfUsbTargetDeviceAllocAndQueryString ,從 USB 裝置描述元取得製造商的名稱字串 (0x0409) 。 (驅動程式先前將描述元儲存在驅動程式定義的內容空間中。)
PMY_DEVICE_CONTEXT myDeviceContext;
WDFMEMORY memoryHandle;
USHORT numCharacters;
myDeviceContext = GetDeviceContext(device);
status = WdfUsbTargetDeviceAllocAndQueryString(
myDeviceContext->UsbTargetDevice,
WDF_NO_OBJECT_ATTRIBUTES,
&memoryHandle,
&numCharacters,
myDeviceContext->UsbDeviceDescr.iManufacturer,
0x0409
);
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfusb.h (包含 Wdfusb.h) |
程式庫 | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) , KmdfIrql (kmdf) , KmdfIrql2 (kmdf) , KmdfIrqlExplicit (kmdf) , UsbKmdfIrql (kmdf) 、 UsbKmdfIrql2 (kmdf) 、UsbKmdfIrqlExplicit (kmdf) |