Implementando uma rotina de retorno de chamada IRP de solicitação ociosa usb

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

O driver de miniporto USB deve fornecer uma rotina de retorno de chamada IRP para o IRP de solicitação ociosa USB. O motorista do barramento USB chama essa rotina quando determina que o adaptador de rede pode ser suspenso e transferido para um estado de baixa potência.

Nota Depois que o driver de barramento USB manipula a solicitação ociosa USB IRP, 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 o retorno de MiniportIdleNotification .

A rotina de retorno de chamada só precisa chamar NdisMIdleNotificationConfirm para notificar o NDIS de que ele pode continuar com a transição de estado de baixa potência do adaptador de rede. Quando o driver chama NdisMIdleNotificationConfirm, ele também deve especificar o estado de energia do dispositivo mais baixo 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 Manipulando a notificação ociosa de suspensão seletiva do NDIS.

Veja a seguir um exemplo de uma rotina de retorno de chamada para um IRP de solicitação ociosa 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 ociosa usb, consulte Rotina de retorno de chamada IRP de solicitação ociosa usb.