Compartir a través de


Implementación de una rutina de finalización de 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 también debe llamar a IoSetCompletionRoutineEx para registrar una rutina de finalización para el IRP de solicitud inactiva USB. El controlador de bus USB llama a la rutina de finalización cuando completa el IRP después de que el controlador de miniporte USB lo cancele. El controlador de minipuerto USB cancela el IRP cuando NDIS cancela la notificación inactiva llamando a MiniportCancelIdleNotification.

La rutina de finalización solo tiene que llamar a NdisMIdleNotificationComplete para notificar a NDIS que puede continuar con la transición de estado de energía completa del adaptador de red.

Nota La rutina de finalización debe devolver STATUS_MORE_PROCESSING_REQUIRED si el controlador de minipuerto USB reutilizará los recursos IRP durante otra notificación inactiva de NDIS.

A continuación se muestra un ejemplo de una rutina de finalización para el IRP de solicitud inactiva USB.

//
// MiniportUsbIdleRequestCompletion()
//
// This is the IO_COMPLETION_ROUTINE for the selective suspend IOCTL.
// All that is needed is to inform NDIS that the IdleNotification
// operation is complete.
//
VOID MiniportUsbIdleRequestCompletion(PVOID AdapterContext)
{
    NdisMIdleNotificationComplete(Adapter->MiniportAdapterHandle);

    // We will be reusing the IRP later, so do not let the IO manager delete it.
    return STATUS_MORE_PROCESSING_REQUIRED;
}

Para obtener más información sobre la rutina de devolución de llamada de solicitud inactiva USB, consulte Rutina de finalización de IRP de solicitud inactiva USB.