Partager via


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 :

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


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST