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) |