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.