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:
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.
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.
Il driver miniport attende che tutti i pacchetti di ricezione indicati vengano restituiti al driver miniport.
Il driver miniport libera tutta la memoria condivisa allocata per i buffer di ricezione della scheda di rete associati alla coda chiamando NdisFreeSharedMemory.
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
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS