OID_PNP_SET_POWER

Il OID_PNP_SET_POWER OID notifica a un driver miniport che la scheda di rete sottostante esegue la transizione allo stato di alimentazione del dispositivo specificato in InformationBuffer. Lo stato di alimentazione del dispositivo viene specificato come uno dei NDIS_DEVICE_POWER_STATE seguenti :

  • NdisDeviceStateD0
  • NdisDeviceStateD1
  • NdisDeviceStateD2
  • NdisDeviceStateD3

Una OID_PNP_SET_POWER richiesta può essere preceduta da una OID_PNP_QUERY_POWER richiesta .

A partire da NDIS 6.30, NDIS non sospende e riavvia i driver NDIS nello stack di driver durante le transizioni dello stato di alimentazione se si verificano le condizioni seguenti:

  • Il driver miniport sottostante imposta il flag NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND nella struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES sottostante. Il driver passa un puntatore a questa struttura nella chiamata alla funzione NdisMSetMiniportAttributes .

  • Tutti i driver di filtro overlying collegati al driver miniport supportano NDIS 6.30 o versioni successive di NDIS.

  • Tutti i driver di protocollo overlying associati al driver miniport supportano NDIS 6.30 o versioni successive di NDIS.

Transizione a uno stato Low-Power (D1-D3)

Quando il driver miniport gestisce una richiesta impostata di OID_PNP_SET_POWER per la transizione a uno stato a basso consumo, è necessario eseguire le operazioni seguenti:

Anche il driver miniport che supporta NDIS 6.30 e versioni successive di NDIS deve eseguire le operazioni seguenti:

  • Non attendere il completamento delle indicazioni di ricezione in sospeso tramite chiamate alla funzione MiniportReturnNetBufferLists . Inoltre, il driver miniport non deve modificare la NET_BUFFER_LIST o i dati per tutti i pacchetti in attesa di essere completati.

  • Gestire la OID_PNP_SET_POWER a uno stato a basso consumo dagli stati dell'adattatore In pausa o In esecuzione. Per altre informazioni su questi stati, vedere Stati e operazioni dell'adapter Miniport.

Prima della transizione della scheda di rete allo stato D3, il driver miniport deve disattivare tutti gli elementi sotto il controllo del driver miniport eseguendo le attività seguenti:

  • Disabilitare gli interrupt e il motore DMA nella scheda di rete.

  • Arrestare il motore di ricezione sulla scheda di rete.

  • Non deallocare o modificare i descrittori di ricezione e i buffer di pacchetti associati alle indicazioni di ricezione in sospeso.

  • Annullare tutti i timer NDIS.

Nota Un driver miniport non può accedere alla scheda di rete dopo che il driver del bus ha transizione la scheda di rete allo stato D3.

Transizione allo stato Full-Power (D0)

Quando il driver miniport gestisce una richiesta impostata di OID_PNP_SET_POWER per la transizione a uno stato a alimentazione completa, deve ripristinare il motore di ricezione della scheda di rete allo stesso stato del motore di ricezione prima della transizione della scheda allo stato a basso consumo.

Nota Il driver miniport non deve accedere o modificare i buffer di ricezione associati alle indicazioni di ricezione in sospeso.

NDIS chiama la funzione MiniportRestart del driver miniport dopo la transizione a uno stato di alimentazione completa solo se NDIS ha chiamato la funzione MiniportPause del driver prima della transizione a uno stato a basso consumo.

Nota Un driver intermedio deve sempre restituire NDIS_STATUS_SUCCESS una query di OID_PNP_SET_POWER. Un driver intermedio non deve mai propagare una OID_PNP_SET_POWER richiesta a un driver miniport sottostante.

Codici di stato restituiti

La funzione MiniportOidRequest del driver miniport restituisce uno dei valori seguenti per questa richiesta:

Termine Descrizione

NDIS_STATUS_SUCCESS

Il driver miniport ha completato correttamente la richiesta.

NDIS_STATUS_PENDING

Il driver miniport completerà la richiesta in modo asincrono. Dopo che il driver miniport ha completato l'elaborazione, deve completare la richiesta chiamando la funzione NdisMOidRequestComplete , passando NDIS_STATUS_SUCCESS per il parametro Status.

NDIS_STATUS_NOT_ACCEPTED

Il driver miniport sta reimpostando.

Requisiti

Versione

Supportato per NDIS 5.1 e NDIS 6.0 e versioni successive.

Intestazione

Ntddndis.h (includere Ndis.h)

Vedi anche


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST