Partager via


Implémentation d’une routine de rappel IRP de demande d’inactivité USB

Lorsque MiniportIdleNotification est appelé, le pilote miniport USB appelle IoCallDriver pour émettre un paquet de demandes d’E/S (IRP) pour une demande d’inactivité USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) au pilote de bus USB sous-jacent. Le pilote miniport émet cette IRP pour informer le pilote de bus USB que la carte réseau est inactive et doit être suspendue.

Le pilote miniport USB doit fournir une routine de rappel IRP pour l’IRP de demande d’inactivité USB. Le pilote de bus USB appelle cette routine lorsqu’il détermine que la carte réseau peut être suspendue et passer à un état de faible consommation.

Note Une fois que le pilote de bus USB a géré l’IRP de la demande d’inactivité USB, il appelle la routine de rappel de manière synchrone dans le contexte de l’appel à IoCallDriver ou de manière asynchrone après les retours de MiniportIdleNotification .

La routine de rappel doit uniquement appeler NdisMIdleNotificationConfirm pour notifier NDIS qu’elle peut continuer avec la transition d’état de faible consommation de la carte réseau. Lorsque le pilote appelle NdisMIdleNotificationConfirm, il doit également spécifier l’état d’alimentation de l’appareil le plus bas vers lequel la carte réseau peut effectuer la transition.

Dans le contexte de l’appel à NdisMIdleNotificationConfirm, NDIS effectue les étapes nécessaires à la transition de la carte réseau vers un état de faible consommation. Pour plus d’informations, consultez Gestion de la notification d’inactivité de suspension sélective NDIS.

Voici un exemple de routine de rappel pour un IRP de requête inactive 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;
}

Pour plus d’informations sur la routine de rappel des demandes d’inactivité USB, consultez Routine de rappel IRP de la demande d’inactivité USB.