WdfUsbTargetDeviceRetrieveInformation 函数 (wdfusb.h)
[适用于 KMDF 和 UMDF]
WdfUsbTargetDeviceRetrieveInformation 方法检索与指定框架 USB 设备对象关联的 USB 设备的相关信息。
语法
NTSTATUS WdfUsbTargetDeviceRetrieveInformation(
[in] WDFUSBDEVICE UsbDevice,
[in, out] PWDF_USB_DEVICE_INFORMATION Information
);
参数
[in] UsbDevice
USB 设备对象的句柄,该对象是从上一次调用 WdfUsbTargetDeviceCreateWithParameters 获取的。
[in, out] Information
指向调用方分配 的WDF_USB_DEVICE_INFORMATION 结构的指针,该结构接收 USB 设备信息。
返回值
如果操作成功,WdfUsbTargetDeviceRetrieveInformation 将返回STATUS_SUCCESS。 否则,此方法可以返回以下值之一:
返回代码 | 说明 |
---|---|
|
检测到参数无效。 |
此方法还可能返回其他 NTSTATUS 值。
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
注解
有关 WdfUsbTargetDeviceRetrieveInformation 方法和 USB I/O 目标的详细信息,请参阅 USB I/O 目标。
在框架版本 1.11 及更高版本中,驱动程序可以调用 WdfUsbTargetDeviceQueryUsbCapability 来检索设备的运行速度。
示例
下面的代码示例是 EvtDevicePrepareHardware 回调函数的一部分,该函数创建 USB 设备对象、初始化 WDF_USB_DEVICE_INFORMATION 结构并调用 WdfUsbTargetDeviceRetrieveInformation。
NTSTATUS
MyEvtDevicePrepareHardware(
IN WDFDEVICE Device,
IN WDFCMRESLIST ResourceList,
IN WDFCMRESLIST ResourceListTranslated
)
{
NTSTATUS status;
PMY_DEVICE_CONTEXT pMyDeviceContext;
WDF_USB_DEVICE_CREATE_CONFIG Config;
pMyDeviceContext = GetDeviceContext(Device);
// If object handle is not NULL, MyEvtDevicePrepareHardware
// was called previously and the handle is still valid.
if (pMyDeviceContext->UsbDevice != NULL) {
return STATUS_SUCCESS;
}
WDF_USB_DEVICE_CREATE_CONFIG_INIT(
&Config,
USBD_CLIENT_CONTRACT_VERSION_602
);
status = WdfUsbTargetDeviceCreateWithParameters(
Device,
&Config,
WDF_NO_OBJECT_ATTRIBUTES,
&pMyDeviceContext->UsbDevice
);
if (!NT_SUCCESS(status)) {
return status;
}
WDF_USB_DEVICE_INFORMATION_INIT(&deviceInfo);
status = WdfUsbTargetDeviceRetrieveInformation(
pDeviceContext->UsbDevice,
&deviceInfo
);
...
}
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfusb.h (包括 Wdfusb.h) |
Library | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) , KmdfIrql (kmdf) , KmdfIrql2 (kmdf) , KmdfIrqlExplicit (kmdf) , UsbKmdfIrql (kmdf) 、 UsbKmdfIrql2 (kmdf) 、UsbKmdfIrqlExplicit (kmdf) |