Enumerazione dei filtri in una VMQ

Per ottenere un elenco di tutti i filtri impostati in una coda di ricezione, i driver e le applicazioni possono usare la richiesta OID (Method Object Identifier) OID_RECEIVE_FILTER_ENUM_FILTERS .

Il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene inizialmente un puntatore a una struttura NDIS_RECEIVE_FILTER_INFO_ARRAY . Quando formatta la struttura NDIS_RECEIVE_FILTER_INFO_ARRAY, il driver o l'applicazione overlying devono impostare il membro QueueId sull'identificatore (ID) della coda di ricezione. L'ID coda di ricezione viene ottenuto nei modi seguenti:

  • Il driver overlying ha ottenuto il valore id coda di ricezione dalle richieste del metodo OID precedenti di OID_RECEIVE_FILTER_ALLOCATE_QUEUE o OID_RECEIVE_FILTER_ENUM_QUEUES. Il driver può anche specificare NDIS_DEFAULT_RECEIVE_QUEUE_ID per la coda di ricezione predefinita.

  • Un'applicazione ha ottenuto il valore id coda di ricezione da una richiesta di metodo OID precedente di OID_RECEIVE_FILTER_ENUM_QUEUES. L'applicazione può anche specificare NDIS_DEFAULT_RECEIVE_QUEUE_ID per la coda di ricezione predefinita.

Dopo aver restituito correttamente la richiesta del metodo OID di OID_RECEIVE_FILTER_ENUM_FILTERS, il membro InformationBufferdella struttura NDIS_OID_REQUEST contiene un puntatore a una struttura NDIS_RECEIVE_FILTER_INFO_ARRAY aggiornata seguita da una o più strutture NDIS_RECEIVE_FILTER_INFO. Ogni struttura NDIS_RECEIVE_FILTER_INFO specifica l'ID per un filtro impostato nella coda di ricezione specificata.

I driver o le applicazioni overlying possono usare la richiesta di metodo OID OID_RECEIVE_FILTER_PARAMETERS per ottenere i parametri di un filtro specifico in una coda di ricezione.

Il membro InformationBuffer della struttura NDIS_OID_REQUEST contiene inizialmente un puntatore a una struttura NDIS_RECEIVE_FILTER_PARAMETERS . Il driver o l'applicazione sovralizza la struttura NDIS_RECEIVE_FILTER_PARAMETERS impostando il membro FilterId sul valore id diverso da zero del filtro i cui parametri devono essere restituiti.

Nota Il driver overlying ha ottenuto l'ID filtro da una richiesta di metodo OID precedente di OID_RECEIVE_FILTER_SET_FILTER o OID_RECEIVE_FILTER_ENUM_FILTERS. L'applicazione può ottenere l'ID filtro solo da una richiesta di metodo OID precedente di OID_RECEIVE_FILTER_ENUM_FILTERS.

NDIS gestisce le richieste OID del metodo OID_RECEIVE_FILTER_ENUM_FILTERS e OID_RECEIVE_FILTER_PARAMETERS per i driver miniport. NDIS ha ottenuto le informazioni da una cache interna dei dati ricevuti dalla richiesta OID OID_RECEIVE_FILTER_SET_FILTER .