IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION IOCTL (usbioctl.h)

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

发送此 IOCTL 时,调用方必须提供执行设备实际挂起的回调例程。 当设备安全关机时,USB 总线驱动程序将在PASSIVE_LEVEL调用此例程。 如果设备支持远程唤醒,并且没有等待/唤醒 IRP 已挂起,则回调例程应先将等待/唤醒 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或相应的错误状态。

要求

要求
Header usbioctl.h (包括 Usbioctl.h)