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