Compartir a través de


Implementar una rutina de devolución de llamada IRP de solicitud inactiva USB

Cuando se llama a MiniportIdleNotification , el controlador de minipuerto USB llama a IoCallDriver para emitir un paquete de solicitud de E/S (IRP) para una solicitud de inactividad USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) al controlador de bus USB subyacente. El controlador de minipuerto emite este IRP para informar al controlador del bus USB de que el adaptador de red está inactivo y debe suspenderse.

El controlador de minipuerto USB debe proporcionar una rutina de devolución de llamada IRP para el IRP de solicitud inactiva USB. El controlador de bus USB llama a esta rutina cuando determina que el adaptador de red se puede suspender y pasar a un estado de bajo consumo.

Nota Una vez que el controlador de bus USB controla el IRP de solicitud inactiva USB, llama a la rutina de devolución de llamada de forma sincrónica en el contexto de la llamada a IoCallDriver o de forma asincrónica después de que miniportIdleNotification devuelva.

La rutina de devolución de llamada solo tiene que llamar a NdisMIdleNotificationConfirm para notificar a NDIS que puede continuar con la transición de estado de baja energía del adaptador de red. Cuando el controlador llama a NdisMIdleNotificationConfirm, también debe especificar el estado de energía del dispositivo más bajo al que el adaptador de red puede realizar la transición.

En el contexto de la llamada a NdisMIdleNotificationConfirm, NDIS realiza los pasos necesarios para realizar la transición del adaptador de red a un estado de bajo consumo. Para obtener más información, consulte Control de la notificación de suspensión inactiva selectiva de NDIS.

A continuación se muestra un ejemplo de una rutina de devolución de llamada para un IRP de solicitud inactiva 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 obtener más información sobre la rutina de devolución de llamada de solicitud inactiva USB, consulte Rutina de devolución de llamada IRP de solicitud inactiva USB.