IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION IOCTL (usbioctl.h)

驱动程序使用 IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION I/O 请求通知 USB 总线驱动程序设备处于空闲状态并可以暂停。

发送此 IOCTL 时,调用方必须提供执行设备实际挂起的回调例程。 USB 总线驱动程序将在 PASSIVE_LEVEL 调用此例程,当设备可安全关闭时。 如果设备支持远程唤醒且尚未挂起等待/唤醒 IRP,回调例程应在关闭设备之前将 Wait/Wake IRP 提交到设备的总线驱动程序。

有关详细信息,请参阅 支持具有 Wake-Up 功能的设备USB 选择性挂起

IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION 是内核模式 I/O 控制请求。 此请求面向 USB 中心 PDO。 此请求必须在PASSIVE_LEVEL的 IRQL 发送。

主要代码

IRP_MJ_INTERNAL_DEVICE_CONTROL

输入缓冲区

Parameters.DeviceIoControl.Type3InputBuffer 应该是指向 USB_IDLE_CALLBACK_INFO 结构的指针。 此结构应包含指向回调例程的指针,以及指向回调例程上下文的指针。

保存回调信息的结构在 usbioctl.h 中定义,如下所示:

typedef VOID (*USB_IDLE_CALLBACK)(PVOID Context);

typedef struct _USB_IDLE_CALLBACK_INFO
{
  USB_IDLE_CALLBACK IdleCallback;
  PVOID IdleContext;
} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;

输入缓冲区长度

USB_IDLE_CALLBACK_INFO 结构的大小。

输出缓冲区

没有。

输出缓冲区长度

没有。

状态块

总线或端口驱动程序 Irp->IoStatus.Status 设置为STATUS_SUCCESS或适当的错误状态。

要求

要求 价值
标头 usbioctl.h (包括 Usbioctl.h)