Compartilhar via


Implementar uma rotina de retorno de chamada de IRP de solicitação de inatividade USB

Quando MiniportIdleNotification é chamado, o driver de miniporta USB chama IoCallDriver para emitir um pacote de pedido de I/O (IRP) para uma solicitação ociosa USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) para o driver do barramento USB subjacente. O driver de miniporta emite esse IRP para informar ao controlador do barramento USB que o adaptador de rede está ocioso e deve ser suspenso.

O driver de miniporta USB deve fornecer uma rotina de retorno de chamada IRP para a requisição de inatividade USB. O driver do barramento USB chama essa rotina quando determina que o adaptador de rede pode ser suspenso e transitado a um estado de baixa potência.

Observação Depois de o driver de barramento USB manipular a solicitação IRP ocioso do USB, ele chama a rotina de retorno de chamada de forma síncrona no contexto da chamada para IoCallDriver ou de forma assíncrona após MiniportIdleNotification voltar.

A rotina de retorno de chamada só precisa executar NdisMIdleNotificationConfirm para notificar o NDIS de que pode continuar com a transição para o estado de baixa potência do adaptador de rede. Quando o driver chama NdisMIdleNotificationConfirm, ele também deve especificar o menor estado de energia do dispositivo para o qual o adaptador de rede pode fazer a transição.

No contexto da chamada para NdisMIdleNotificationConfirm, o NDIS executa as etapas necessárias para fazer a transição do adaptador de rede para um estado de baixa potência. Para obter mais informações, consulte Lidar com a notificação de ociosidade de suspensão seletiva do NDIS.

A seguir, um exemplo de uma rotina de retorno de chamada para a IRP de solicitação de inatividade do USB.

//
// MiniportUsbIdleRequestCallback()
//
// This is the USB selective suspend idle notification.  All that is 
// needed is to inform NDIS that the USB stack is ready to go to a 
// low-power state.  Be aware that USB devices will always be requested
// to transition to a power state of NdisDeviceStateD2.
//
VOID MiniportUsbIdleRequestCallback(PVOID AdapterContext)
{
    NdisMIdleNotificationConfirm(
        AdapterContext->MiniportAdapterHandle,
        NdisDeviceStateD2
        );

    return;
}

Para obter mais informações sobre a rotina de retorno de chamada de solicitação de inatividade USB, consulte a Rotina de retorno de chamada de IRP da Solicitação de Inatividade USB.