Condividi tramite


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

L'overlying driver genera richieste di metodo OID (Object Identifier) di OID_RECEIVE_FILTER_ALLOCATE_QUEUE per allocare una coda con un set iniziale di parametri di configurazione.

Il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_QUEUE_PARAMETERS . Una volta restituito correttamente dalla richiesta del metodo OID, il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_QUEUE_PARAMETERS con un nuovo identificatore della coda.

Commenti

La richiesta di metodo OID di OID_RECEIVE_FILTER_ALLOCATE_QUEUE è facoltativa per i driver miniport NDIS 6.20 e versioni successive. È obbligatorio per i driver miniport che supportano l'interfaccia VMQ (Virtual Machine Queue).

Il driver overlying inizializza la struttura NDIS_RECEIVE_QUEUE_PARAMETERS con la relativa configurazione della coda richiesta. NDIS assegna un identificatore di coda nel membro QueueId della struttura NDIS_RECEIVE_QUEUE_PARAMETERS e passa la richiesta di metodo al driver miniport.

Nota Il driver overlying può impostare i flag NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION e NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED nel membro Flags della struttura NDIS_RECEIVE_QUEUE_PARAMETERS . Gli altri flag non vengono usati per l'allocazione della coda.

Dopo che un driver miniport viene emesso una richiesta OID di OID_RECEIVE_FILTER_ALLOCATE_QUEUE e la gestisce correttamente, la coda si trova nello stato Sospeso.

Il driver overlying deve usare l'identificatore della coda fornito da NDIS nelle richieste OID successive, ad esempio, per modificare i parametri della coda o liberare la coda. L'identificatore della coda è incluso anche nei dati fuori banda (OOB) in tutte le strutture NET_BUFFER_LIST associate alla coda. I driver usano la macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID per recuperare l'identificatore della coda in una struttura NET_BUFFER_LIST .

Quando NDIS riceve una richiesta OID per allocare una coda di ricezione, verifica i parametri della coda. Dopo che NDIS alloca le risorse necessarie e l'identificatore della coda, invia la richiesta OID al driver miniport sottostante. L'identificatore della coda è univoco per la scheda di rete associata.

Se il driver miniport può allocare correttamente le risorse software e hardware necessarie per la coda di ricezione, completa la richiesta OID restituendo NDIS_STATUS_SUCCESS.

Il driver miniport deve mantenere gli identificatori della coda per le code di ricezione allocate. NDIS usa l'identificatore di coda di una coda di ricezione per le chiamate successive al driver miniport per impostare un filtro di ricezione sulla coda di ricezione, modificare i parametri della coda di ricezione o liberare la coda di ricezione.

Dopo che un driver eccessivamente alloca una o più code di ricezione e, facoltativamente, imposta i filtri iniziali, deve inviare OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE impostare richieste OID per notificare al driver miniport che l'allocazione è stata completata per il batch corrente di code di ricezione.

Il driver miniport non deve conservare alcun pacchetto in una coda di ricezione se non sono presenti filtri impostati su tale coda. Se una coda non ha mai impostato alcun filtro o tutti i filtri sono stati cancellati, la coda deve essere vuota e tutti i pacchetti devono essere eliminati. Ovvero, i pacchetti non vengono indicati nello stack di driver o conservati nella coda.

I driver eccessivamente usano richieste OID di OID_RECEIVE_FILTER_FREE_QUEUE per liberare le code allocate.

Codici di stato restituiti

NDIS o il driver miniport restituisce uno dei codici di stato seguenti per la richiesta del metodo OID di OID_RECEIVE_FILTER_ALLOCATE_QUEUE.

Codice stato Descrizione

NDIS_STATUS_SUCCESS

La coda è stata allocata correttamente. Il buffer delle informazioni contiene la struttura NDIS_RECEIVE_QUEUE_PARAMETERS aggiornata.

NDIS_STATUS_PENDING

La richiesta è in attesa di completamento. Il codice di stato finale e i risultati verranno passati a un gestore di completamento della richiesta OID del chiamante.

NDIS_STATUS_INVALID_PARAMETER

Uno o più parametri forniti dal driver overlying non sono validi.

NDIS_STATUS_INVALID_LENGTH

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

NDIS_STATUS_NOT_SUPPORTED

La versione NDIS del driver miniport è precedente alla versione 6.20.

NDIS_STATUS_FAILURE

La richiesta non è riuscita per altri motivi.

Requisiti

Versione

Supportato in NDIS 6.20 e versioni successive.

Intestazione

Ntddndis.h (include Ndis.h)

Vedi anche

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS