OID_PNP_SET_POWER
L'OID OID_PNP_SET_POWER notifica a un driver miniport che la scheda di rete sottostante passerà allo stato di alimentazione del dispositivo specificato nella InformationBuffer. Lo stato di alimentazione del dispositivo viene specificato come uno dei valori di NDIS_DEVICE_POWER_STATE seguenti:
- NdisDeviceStateD0
- NdisDeviceStateD1
- NdisDeviceStateD2
- NdisDeviceStateD3
Una richiesta di OID_PNP_SET_POWER può essere preceduta da una richiesta di OID_PNP_QUERY_POWER.
A partire da NDIS 6.30, NDIS non sospende e riavvia i driver NDIS nello stack di driver durante le transizioni di alimentazione se sono vere le condizioni seguenti:
Il driver miniport sottostante imposta il flag NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND nella struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES. Il driver passa un puntatore a questa struttura nella chiamata alla funzione NdisMSetMiniportAttributes.
Tutti i driver di filtro eccessivamente 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 di Low-Power (D1-D3)
Quando il driver miniport gestisce una richiesta set di OID_PNP_SET_POWER per la transizione a uno stato a basso consumo, deve eseguire le operazioni seguenti:
Preparare completamente la scheda di rete per lo stato di alimentazione del dispositivo di rete indicato. L'attività eseguita dal driver miniport per eseguire questa operazione è dipendente dal dispositivo.
Attendere le chiamate alla funzione NdisMIndicateReceiveNetBufferLists da restituire.
Attendere il completamento delle richieste di invio elaborate dalla scheda di rete. Al termine, il driver miniport deve chiamare la funzione NdisMSendNetBufferListsComplete. Il driver deve impostare il membro Status in ogni struttura di NET_BUFFER_LIST sul valoreNDIS_STATUS_ xxx appropriato.
Completare tutte le richieste di invio in sospeso chiamando la funzione NdisMSendNetBufferListsComplete. Il driver deve impostare il membro status di in ogni struttura NET_BUFFER_LIST su NDIS_STATUS_LOW_POWER_STATE.
Rifiuta tutte le nuove richieste di invio effettuate al relativo MiniportSendNetBufferLists funzione immediatamente chiamando la funzione NdisMSendNetBufferListsComplete. Il driver deve impostare il membro status di in ogni struttura NET_BUFFER_LIST su NDIS_STATUS_LOW_POWER_STATE.
Anche il driver miniport che supporta NDIS 6.30 e versioni successive di NDIS deve eseguire le operazioni seguenti:
Non attendere il completamento della ricezione in sospeso delle indicazioni tramite chiamate alla relativa funzione MiniportReturnNetBufferLists. Inoltre, il driver miniport non deve modificare la struttura NET_BUFFER_LIST o i dati per eventuali pacchetti in attesa di essere completati.
Gestire la richiesta di OID_PNP_SET_POWER a uno stato a basso consumo dagli stati della scheda Sospesa o In esecuzione. Per altre informazioni su questi stati, vedere stati e operazioni dell'adattatore Miniport.
Prima che la scheda di rete passi allo stato D3, il driver miniport deve disattivare tutto 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 nella scheda di rete.
Non deallocare o modificare descrittori di ricezione e buffer di pacchetti associati alle indicazioni di ricezione in sospeso.
Annulla tutti i timer NDIS.
Nota un driver miniport non può accedere alla scheda di rete dopo che il driver del bus ha passato la scheda di rete allo stato D3.
Transizione allo stato Full-Power (D0)
Quando il driver miniport gestisce una richiesta di set di OID_PNP_SET_POWER per la transizione a uno stato di alimentazione completa, deve ripristinare il motore di ricezione della scheda di rete allo stesso stato in cui si trovava il motore di ricezione prima che la scheda fosse passata allo stato a basso consumo.
Nota Il driver miniport non deve accedere o modificare eventuali buffer di ricezione associati a 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 prima della transizione a uno stato a basso consumo.
Nota Un driver intermedio deve restituire sempre NDIS_STATUS_SUCCESS a una query di OID_PNP_SET_POWER. Un driver intermedio non deve mai propagare una richiesta di OID_PNP_SET_POWER a un driver miniport sottostante.
Restituire i codici di stato
La funzione di miniportOidRe quest 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 aver completato tutta l'elaborazione, il driver miniport deve avere esito positivo alla richiesta chiamando la funzioneNdisMOidRequestCompleteNdisMOidComplete, passando NDIS_STATUS_SUCCESS per il parametro Status. |
NDIS_STATUS_NOT_ACCEPTED |
Il driver miniport viene reimpostato. |
Fabbisogno
Versione |
Supportato per NDIS 5.1 e NDIS 6.0 e versioni successive. |
Intestazione |
Ntddndis.h (include Ndis.h) |
Vedere anche
NdisMIndicateReceiveNetBufferLists