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