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。 否则,此方法可以返回以下值之一:

返回代码 说明
STATUS_INVALID_PARAMETER
检测到参数无效。
 

此方法还可能返回其他 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)

另请参阅

WDF_USB_DEVICE_INFORMATION

WdfUsbTargetDeviceCreateWithParameters

WdfUsbTargetDeviceQueryUsbCapability