OID_RECEIVE_FILTER_FREE_QUEUE

I driver del protocollo NDIS emettono richieste di set OID (OID) del set di OID_RECEIVE_FILTER_FREE_QUEUE per liberare una coda di ricezione.

Il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_QUEUE_FREE_PARAMETERS con un identificatore della coda di tipo NDIS_RECEIVE_QUEUE_ID.

Commenti

La richiesta del set OID di OID_RECEIVE_FILTER_FREE_QUEUE è facoltativa per i driver miniport NDIS 6.20 e versioni successive. È obbligatorio per i driver miniport che supportano l'interfaccia della coda di macchine virtuali.

Dopo che un driver overlying rilascia l'OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE per allocare una coda di ricezione, rilascia l'OID OID_RECEIVE_FILTER_FREE_QUEUE per liberare la coda di ricezione.

Quando NDIS richiede a un driver miniport di liberare una coda di ricezione VMQ, seguire questa procedura:

  1. La scheda di rete arresta il trasferimento DMA dei dati per ricevere buffer associati alla coda di ricezione, dopo la quale la coda deve immettere lo stato DMA Stopped. La scheda di rete ha probabilmente arrestato l'attività DMA quando ha ricevuto la richiesta OID OID_RECEIVE_FILTER_CLEAR_FILTER per cancellare l'ultimo filtro set nella coda di ricezione.

  2. Il driver miniport genera un'indicazione di stato NDIS_STATUS_RECEIVE_QUEUE_STATE con il membro QueueState della struttura NDIS_RECEIVE_QUEUE_STATE impostata su NdisReceiveQueueOperationalStateDmaStopped per notificare a NDIS che il trasferimento DMA è stato arrestato.

  3. Il driver miniport attende che tutti i pacchetti di ricezione indicati vengano restituiti al driver miniport.

  4. Il driver miniport libera tutta la memoria condivisa allocata per i buffer di ricezione della scheda di rete associati alla coda chiamando NdisFreeSharedMemory.

  5. Il driver miniport completa la richiesta OID OID_RECEIVE_FILTER_FREE_QUEUE per liberare la coda di ricezione.

I driver Miniport chiamano la funzione NdisFreeSharedMemory per liberare memoria condivisa per una coda. Se il driver miniport ha allocato la memoria condivisa per una coda non definita, il driver libera la memoria condivisa nel contesto dell'OID OID_RECEIVE_FILTER_FREE_QUEUE mentre libera la coda. I driver Miniport liberano memoria condivisa allocata per la coda predefinita nel contesto della funzione MiniportHaltEx .

Un driver overlying deve liberare tutti i filtri impostati su una coda prima di liberare la coda. Inoltre, un driver overlying deve liberare tutte le code di ricezione allocate in una scheda di rete prima di chiamare la funzione NdisCloseAdapterEx per chiudere un'associazione alla scheda di rete. NDIS libera tutte le code allocate su una scheda di rete prima di chiamare la funzione MiniportHaltEx del driver miniport .

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 completa la richiesta in modo asincrono. Dopo aver completato l'elaborazione, il driver miniport deve avere esito positivo alla richiesta chiamando la funzione NdisMOidRequestComplete , passando NDIS_STATUS_SUCCESS per il parametro Status .

NDIS_STATUS_NOT_ACCEPTED

Il driver miniport viene reimpostato.

NDIS_STATUS_REQUEST_ABORTED

Il driver miniport ha arrestato l'elaborazione della richiesta. Ad esempio, NDIS ha chiamato la funzione MiniportResetEx .

NDIS restituisce uno dei codici di stato seguenti per questa richiesta:

Codice stato Descrizione

NDIS_STATUS_SUCCESS

La coda richiesta è stata liberata correttamente.

NDIS_STATUS_PENDING

La richiesta è in sospeso. NDIS passerà il codice di stato finale e i risultati al gestore di completamento della richiesta OID per il chiamante dopo il completamento della richiesta.

NDIS_STATUS_INVALID_PARAMETER

L'identificatore della coda non è valido.

NDIS_STATUS_INVALID_LENGTH

Il buffer delle informazioni è troppo breve. NDIS imposta i DATI. METHOD_INFORMATION. Membro byteNeeded nella struttura NDIS_OID_REQUEST alle dimensioni minime del buffer necessarie.

Requisiti

Versione

Supportato in NDIS 6.20 e versioni successive.

Intestazione

Ntddndis.h (include Ndis.h)

Vedi anche

MiniportHaltEx

NDIS_OID_REQUEST

NDIS_RECEIVE_QUEUE_FREE_PARAMETERS

NDIS_STATUS_RECEIVE_QUEUE_STATE

NdisCloseAdapterEx

NdisFreeSharedMemory

OID_RECEIVE_FILTER_ALLOCATE_QUEUE