OID_PNP_SET_POWER
L’OID OID_PNP_SET_POWER avertit un pilote miniport que sa carte réseau sous-jacente passera à l’état d’alimentation de l’appareil spécifié dans InformationBuffer. L’état d’alimentation de l’appareil est spécifié comme l’une des valeurs NDIS_DEVICE_POWER_STATE suivantes :
- NdisDeviceStateD0
- NdisDeviceStateD1
- NdisDeviceStateD2
- NdisDeviceStateD3
Une demande de OID_PNP_SET_POWER peut être précédée d’une demande de OID_PNP_QUERY_POWER .
À compter de NDIS 6.30, NDIS ne met pas en pause et ne redémarre pas les pilotes NDIS dans la pile de pilotes pendant les transitions d’état d’alimentation si les conditions suivantes sont remplies :
Le pilote miniport sous-jacent définit l’indicateur NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND dans la structure NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Le pilote passe un pointeur vers cette structure dans son appel à la fonction NdisMSetMiniportAttributes .
Tous les pilotes de filtre qui sont attachés au pilote miniport prennent en charge NDIS 6.30 ou versions ultérieures de NDIS.
Tous les pilotes de protocole qui sont liés au pilote miniport prennent en charge NDIS 6.30 ou versions ultérieures de NDIS.
Transition vers un état Low-Power (D1-D3)
Lorsque le pilote miniport gère une demande de OID_PNP_SET_POWER de transition vers un état de faible consommation, il doit effectuer les opérations suivantes :
Préparez entièrement la carte réseau pour l’état d’alimentation du périphérique réseau indiqué. La tâche effectuée par le pilote miniport pour effectuer cette opération dépend de l’appareil.
Attendez que les appels à la fonction NdisMIndicateReceiveNetBufferLists retournent.
Attendez que les demandes d’envoi traitées par la carte réseau se terminent. Une fois terminé, le pilote miniport doit appeler la fonction NdisMSendNetBufferListsComplete . Le pilote doit définir le membre Status dans chaque structure NET_BUFFER_LIST sur la valeur NDIS_STATUS_Xxx appropriée.
Terminez toutes les demandes d’envoi en attente en appelant la fonction NdisMSendNetBufferListsComplete . Le pilote doit définir le membre Status dans chaque structure NET_BUFFER_LIST sur NDIS_STATUS_LOW_POWER_STATE.
Rejetez immédiatement toutes les nouvelles demandes d’envoi adressées à sa fonction MiniportSendNetBufferLists en appelant la fonction NdisMSendNetBufferListsComplete . Le pilote doit définir le membre Status dans chaque structure NET_BUFFER_LIST sur NDIS_STATUS_LOW_POWER_STATE.
Le pilote miniport qui prend en charge NDIS 6.30 et versions ultérieures de NDIS doit également effectuer les opérations suivantes :
N’attendez pas la fin des indications de réception en attente par le biais d’appels à sa fonction MiniportReturnNetBufferLists . En outre, le pilote miniport ne doit pas modifier la structure NET_BUFFER_LIST ou les données pour les paquets qui attendent d’être terminés.
Gérez la demande de OID_PNP_SET_POWER à un état de faible consommation à partir des états de l’adaptateur suspendu ou en cours d’exécution. Pour plus d’informations sur ces états, consultez États et opérations de l’adaptateur Miniport.
Avant que la carte réseau passe à l’état D3, le pilote miniport doit désactiver tout ce qui est sous le contrôle du pilote miniport en effectuant les tâches suivantes :
Désactivez les interruptions et le moteur DMA sur la carte réseau.
Arrêtez le moteur de réception sur la carte réseau.
Ne libérez pas ou ne modifiez pas les descripteurs de réception et les tampons de paquets associés aux indications de réception en attente.
Annulez tous les minuteurs NDIS.
Note Un pilote miniport ne peut pas accéder à la carte réseau une fois que le pilote de bus a fait passer la carte réseau à l’état D3.
Transition vers l’état Full-Power (D0)
Lorsque le pilote miniport gère une demande définie de OID_PNP_SET_POWER pour passer à un état d’alimentation totale, il doit restaurer le moteur de réception de la carte réseau à l’état dans lequel se trouvait le moteur de réception avant que l’adaptateur ne soit passé à l’état de faible consommation.
Note Le pilote miniport ne doit pas accéder ou modifier les mémoires tampons de réception associées aux indications de réception en attente.
NDIS appelle la fonction MiniportRestart du pilote miniport après la transition vers un état d’alimentation totale uniquement si NDIS a appelé la fonction MiniportPause du pilote avant la transition vers un état de faible puissance.
Note Un pilote intermédiaire doit toujours retourner NDIS_STATUS_SUCCESS à une requête de OID_PNP_SET_POWER. Un pilote intermédiaire ne doit jamais propager une requête OID_PNP_SET_POWER à un pilote miniport sous-jacent.
Retourner les codes status
La fonction MiniportOidRequest du pilote miniport renvoie l’une des valeurs suivantes pour cette requête :
Terme | Description |
---|---|
NDIS_STATUS_SUCCESS |
Le pilote miniport a effectué la demande avec succès. |
NDIS_STATUS_PENDING |
Le pilote miniport effectue la requête de manière asynchrone. Une fois que le pilote miniport a terminé tout le traitement, il doit réussir la demande en appelant la fonction NdisMOidRequestComplete , en passant NDIS_STATUS_SUCCESS pour le paramètre Status . |
NDIS_STATUS_NOT_ACCEPTED |
Le pilote miniport est réinitialisé. |
Spécifications
Version |
Pris en charge pour NDIS 5.1 et NDIS 6.0 et versions ultérieures. |
En-tête |
Ntddndis.h (inclure Ndis.h) |
Voir aussi
NdisMIndicateReceiveNetBufferLists