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)