IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION IOCTL (usbioctl.h)
A solicitação de E/ S IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION é usada pelos motoristas para informar ao motorista do ônibus USB que um dispositivo está ocioso e pode ser suspenso.
Ao enviar esse IOCTL, o chamador deve fornecer uma rotina de retorno de chamada que faça a suspensão real do dispositivo. O motorista do ônibus USB chamará essa rotina em PASSIVE_LEVEL quando for seguro que o dispositivo seja desligado. Se o dispositivo der suporte à ativação remota e não tiver nenhum IRP de Espera/Ativação já pendente, a rotina de retorno de chamada deverá enviar um IRP de Espera/Ativação para o driver de ônibus do dispositivo, antes de desligá-lo.
Para obter informações adicionais, consulte Supporting Devices that Have Wake-Up Capabilities and USB Selective Suspend.
IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION é uma solicitação de controle de E/S no modo kernel. Essa solicitação tem como destino o PDO do hub USB. Essa solicitação deve ser enviada em um IRQL de PASSIVE_LEVEL.
Código principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Buffer de entrada
Parameters.DeviceIoControl.Type3InputBuffer deve ser um ponteiro para uma estrutura USB_IDLE_CALLBACK_INFO . Essa estrutura deve conter um ponteiro para a rotina de retorno de chamada e um ponteiro para o contexto de rotina de retorno de chamada.
A estrutura que contém as informações de retorno de chamada é definida em usbioctl.h da seguinte maneira:
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;
Comprimento do buffer de entrada
O tamanho de uma estrutura USB_IDLE_CALLBACK_INFO .
Buffer de saída
Nenhum.
Comprimento do buffer de saída
Nenhum.
Bloco de status
O driver de barramento ou porta define Irp-IoStatus.Status> como STATUS_SUCCESS ou o erro apropriado status.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | usbioctl.h (include Usbioctl.h) |