OID_RECEIVE_FILTER_ALLOCATE_QUEUE
Les pilotes excessivement émettent des demandes de méthode d’identificateur d’objet (OID) de OID_RECEIVE_FILTER_ALLOCATE_QUEUE d’allouer une file d’attente qui a un ensemble initial de paramètres de configuration.
Le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_QUEUE_PARAMETERS . Après un retour réussi à partir de la demande de méthode OID, le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_QUEUE_PARAMETERS qui a un nouvel identificateur de file d’attente.
Notes
La demande de méthode OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE est facultative pour les pilotes miniport NDIS 6.20 et versions ultérieures. Il est obligatoire pour les pilotes miniport qui prennent en charge l’interface de file d’attente de machines virtuelles (VMQ).
Le pilote de sur-position initialise la structure NDIS_RECEIVE_QUEUE_PARAMETERS avec sa configuration de file d’attente demandée. NDIS affecte un identificateur de file d’attente dans le membre QueueId de la structure NDIS_RECEIVE_QUEUE_PARAMETERS et transmet la demande de méthode au pilote miniport.
Note Le pilote en sur-position peut définir les indicateurs NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION et NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED dans le membre Indicateurs de la structure NDIS_RECEIVE_QUEUE_PARAMETERS . Les autres indicateurs ne sont pas utilisés pour l’allocation de file d’attente.
Une fois qu’un pilote miniport a émis une requête OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE et qu’il l’a correctement gérée, la file d’attente est à l’état Suspendu.
Le pilote qui se superpose doit utiliser l’identificateur de file d’attente fourni par NDIS dans les requêtes OID suivantes, par exemple, pour modifier les paramètres de file d’attente ou libérer la file d’attente. L’identificateur de file d’attente est également inclus dans les données hors bande (OOB) de toutes les structures NET_BUFFER_LIST associées à la file d’attente. Les pilotes utilisent la macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID pour récupérer l’identificateur de file d’attente dans une structure de NET_BUFFER_LIST .
Quand NDIS reçoit une demande OID pour allouer une file d’attente de réception, il vérifie les paramètres de la file d’attente. Une fois que NDIS alloue les ressources nécessaires et l’identificateur de file d’attente, il envoie la demande OID au pilote miniport sous-jacent. L’identificateur de file d’attente est unique à la carte réseau associée.
Si le pilote miniport peut allouer correctement les ressources matérielles et logicielles nécessaires pour la file d’attente de réception, il termine la requête OID en retournant NDIS_STATUS_SUCCESS.
Le pilote miniport doit conserver les identificateurs de file d’attente pour les files d’attente de réception allouées. NDIS utilise l’identificateur de file d’attente d’une file d’attente de réception pour les appels ultérieurs au pilote miniport afin de définir un filtre de réception sur la file d’attente de réception, de modifier les paramètres de file d’attente de réception ou de libérer la file d’attente de réception.
Une fois qu’un pilote trop chargé alloue une ou plusieurs files d’attente de réception et définit éventuellement les filtres initiaux, il doit émettre OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE définir des demandes OID pour informer le pilote miniport que l’allocation est terminée pour le lot actuel de files d’attente de réception.
Le pilote miniport ne doit pas conserver de paquets dans une file d’attente de réception si aucun filtre n’est défini sur cette file d’attente. Si une file d’attente n’a jamais eu de filtres défini ou si tous les filtres ont été effacés, la file d’attente doit être vide et tous les paquets doivent être ignorés. Autrement dit, les paquets ne sont pas indiqués dans la pile des pilotes ni conservés dans la file d’attente.
Les pilotes trop utilisent les requêtes OID de OID_RECEIVE_FILTER_FREE_QUEUE pour libérer les files d’attente qu’ils allouent.
Codes d’état de retour
NDIS ou le pilote miniport retourne l’un des codes status suivants pour la demande de méthode OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE.
Code d’état | Description |
---|---|
NDIS_STATUS_SUCCESS |
La file d’attente a été allouée avec succès. La mémoire tampon d’informations contient la structure NDIS_RECEIVE_QUEUE_PARAMETERS mise à jour. |
NDIS_STATUS_PENDING |
La demande est en attente d’achèvement. Le dernier status code et les résultats seront transmis à un gestionnaire de saisie semi-automatique de requête OID de l’appelant. |
NDIS_STATUS_INVALID_PARAMETER |
Un ou plusieurs des paramètres fournis par le pilote trop important n’étaient pas valides. |
NDIS_STATUS_INVALID_LENGTH |
La mémoire tampon d’informations était trop courte. NDIS définit les DONNÉES. METHOD_INFORMATION. BytesNeeded member dans la structure NDIS_OID_REQUEST à la taille de mémoire tampon minimale requise. |
NDIS_STATUS_NOT_SUPPORTED |
La version NDIS du pilote miniport est antérieure à la version 6.20. |
NDIS_STATUS_FAILURE |
La demande a échoué pour d’autres raisons. |
Spécifications
Version |
Pris en charge dans NDIS 6.20 et versions ultérieures. |
En-tête |
Ntddndis.h (inclure Ndis.h) |
Voir aussi
NET_BUFFER_LIST_RECEIVE_QUEUE_ID