Détermination des fonctionnalités VMQ d’une carte réseau
NDIS fournit l’interface permettant de déterminer les fonctionnalités VMQ d’une carte réseau, telles que :
Fonctionnalités de filtrage générique d’une carte réseau.
Fonctionnalités de file d’attente de machines virtuelles prises en charge.
Prise en charge de lookahead pour permettre le fractionnement de la mémoire des données réseau en deux mémoires tampons distinctes.
Note À compter de NDIS 6.30, le fractionnement des données de paquets en mémoires tampons de recherche distinctes n’est plus pris en charge.
Les pilotes Miniport fournissent les informations suivantes à NDIS lors de l’initialisation de la carte réseau :
Fonctionnalités matérielles VMQ que la carte réseau peut prendre en charge.
Fonctionnalités VMQ actuellement activées.
Fonctionnalités de filtrage de réception globales activées ou désactivées sur une carte réseau.
Les pilotes et les applications trop étendus peuvent utiliser les demandes de requête OID suivantes pour obtenir les fonctionnalités de carte réseau.
OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES
OID_RECEIVE_FILTER_CURRENT_CAPABILITIES
OID_RECEIVE_FILTER_GLOBAL_PARAMETERS
NDIS gère ces requêtes OID pour les pilotes miniport. Par conséquent, la requête n’est pas demandée pour les pilotes miniport. NDIS signale les fonctionnalités VMQ de réception actuellement activées d’une carte réseau lors de l’initialisation. Par conséquent, les pilotes qui se superposent n’ont pas besoin d’interroger ces OID.
La structure NDIS_RECEIVE_FILTER_CAPABILITIES spécifie les fonctionnalités de filtrage d’une carte réseau. Cette structure est utilisée de la manière suivante :
Lorsque NDIS appelle la fonction MiniportInitializeEx , le pilote miniport enregistre ses fonctionnalités de filtrage en initialisant une structure NDIS_RECEIVE_FILTER_CAPABILITIES . Le pilote définit ensuite le membre HardwareReceiveFilterCapabilities de la structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES pour qu’il pointe vers la structure NDIS_RECEIVE_FILTER_CAPABILITIES . Le pilote appelle ensuite la fonction NdisMSetMiniportAttributes , puis définit le paramètre MiniportAttributes sur un pointeur vers la structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Un pilote de protocole overlying reçoit la structure NDIS_RECEIVE_FILTER_CAPABILITIES dans la structure NDIS_BIND_PARAMETERS lorsque NDIS appelle la fonction ProtocolBindAdapterEx du pilote.
Un pilote de filtre excessivement reçoit la structure NDIS_RECEIVE_FILTER_CAPABILITIES dans la structure NDIS_FILTER_ATTACH_PARAMETERS lorsque NDIS appelle la fonction FilterAttach du pilote.
Les pilotes excessivement reçoivent la structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES en émettant une requête OID de OID_RECEIVE_FILTER_CURRENT_CAPABILITIES ou de OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES. Les membres HardwareReceiveFilterCapabilities et CurrentReceiveFilterCapabilities pointent vers une structure NDIS_RECEIVE_FILTER_CAPABILITIES .
La structure NDIS_RECEIVE_FILTER_CAPABILITIES comprend les informations suivantes :
EnabledFilterTypes
Types des filtres de réception pris en charge. L’indicateur NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED spécifie que les filtres de file d’attente de machines virtuelles (VMQ) sont activés.
EnabledQueueTypes
Types de files d’attente de réception prises en charge. L’indicateur NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED spécifie que les files d’attente de machines virtuelles sont activées.
NumQueues
Nombre de files d’attente de réception que la carte réseau prend en charge. Pour prendre en charge VMQ, ce nombre doit être égal ou inférieur au nombre d’adresses MAC en monodiffusion prises en charge par la carte réseau. Ce nombre ne doit pas inclure la file d’attente par défaut.
Note Le nombre d’adresses MAC monodiffusion ou de files d’attente de machines virtuelles prises en charge par une carte réseau n’inclut pas l’adresse MAC de la carte réseau associée.
SupportedQueueProperties
Propriétés de file d’attente prises en charge par la carte réseau. L’indicateur NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED spécifie que la carte réseau fournit la configuration minimale requise pour prendre en charge le filtrage VMQ. Une carte réseau compatible VMQ doit fournir une entrée de table MSI-X pour chaque file d’attente de réception. Par conséquent, un pilote miniport VMQ doit définir l’indicateur NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED.
SupportedFilterTests
Opérations de test de filtre qu’un pilote miniport prend en charge. Par exemple, la carte réseau prend en charge le test du champ d’en-tête sélectionné pour déterminer s’il est égal à une valeur donnée. Un pilote de miniport VMQ doit définir l’indicateur NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED.
SupportedHeaders
Types d’en-têtes de paquets réseau qu’un pilote miniport peut inspecter. Par exemple, la carte réseau peut inspecter l’en-tête MAC d’un paquet réseau. L’en-tête MAC inclut le type de paquet, les adresses MAC de destination et source, l’identificateur de réseau local virtuel et les champs de balise de priorité. Un pilote de miniport VMQ doit définir l’indicateur NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED.
SupportedMacHeaderFields
Types de champs d’en-tête MAC qu’un pilote miniport peut inspecter. Un pilote de miniport VMQ doit définir l’indicateur NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED.
MaxMacHeaderFilters
Nombre maximal de filtres d’en-tête MAC pris en charge par le pilote miniport. Il doit y avoir au moins autant de filtres d’en-tête qu’il y a de files d’attente de machines virtuelles.
MaxQueueGroups
Ce membre est réservé à NDIS.
MaxQueuesPerQueueGroup
Ce membre est réservé à NDIS.
MinLookaheadSplitSize
Taille minimale, en octets, prise en charge par la carte réseau pour les segments de paquets de lookahead.
Note À compter de NDIS 6.30, le fractionnement des données de paquets en mémoires tampons de recherche distinctes n’est plus pris en charge. Les pilotes Miniport qui prennent en charge NDIS 6.30 ou versions ultérieures doivent définir ce membre sur zéro.
MaxLookaheadSplitSize
Taille maximale, en octets, prise en charge par la carte réseau pour les segments de paquets de tête de recherche.
Note À compter de NDIS 6.30, le fractionnement des données de paquets en mémoires tampons de recherche distinctes n’est plus pris en charge. Les pilotes Miniport qui prennent en charge NDIS 6.30 ou versions ultérieures doivent définir ce membre sur zéro.
Après un retour réussi à partir de la requête OID OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES , le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_FILTER_CAPABILITIES. Ces fonctionnalités peuvent inclure des fonctionnalités matérielles VMQ qui sont actuellement désactivées par les paramètres de fichier INF ou via la page Propriétés avancées . Pour plus d’informations sur les paramètres des fichiers INF VMQ, consultez Entrées INF standard VMQ.
Les pilotes miniport NDIS fournissent les fonctionnalités matérielles de filtrage de réception lors de l’initialisation dans le membre HardwareReceiveFilterCapabilities de la structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Après un retour réussi à partir de la requête OID OID_RECEIVE_FILTER_CURRENT_CAPABILITIES , le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_FILTER_CAPABILITIES . Ces fonctionnalités incluent les fonctionnalités VMQ actuellement activées.
Les pilotes miniport NDIS fournissent les fonctionnalités de filtrage de réception actuellement activées lors de l’initialisation dans le membre CurrentReceiveFilterCapabilities de la structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
NDIS signale les fonctionnalités de filtrage de réception actuellement activées d’une carte réseau sous-jacente sur les pilotes de protocole dans le membre ReceiveFilterCapabilities de la structure NDIS_BIND_PARAMETERS pendant l’opération de liaison.
La structure NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS est utilisée dans l’OID de requête OID_RECEIVE_FILTER_GLOBAL_PARAMETERS pour obtenir les paramètres de filtre de réception globaux actuels.
NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS inclut les informations suivantes :
EnabledFilterTypes
Types de filtres de réception activés. L’indicateur NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED spécifie que les filtres de file d’attente de machines virtuelles (VMQ) sont activés.
EnabledQueueTypes
Types de files d’attente de réception activées. L’indicateur NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED spécifie que les files d’attente de machines virtuelles sont activées.
Après un retour réussi à partir de la requête OID OID_RECEIVE_FILTER_GLOBAL_PARAMETERS , le membre InformationBuffer de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS . La structure NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS spécifie les fonctionnalités de filtrage de réception activées ou désactivées sur une carte réseau.
Les pilotes de protocole NDIS utilisent OID_RECEIVE_FILTER_GLOBAL_PARAMETERS pour interroger les paramètres de configuration globale actuels pour le filtrage de réception sur une carte réseau. Par exemple, les pilotes de protocole peuvent utiliser cet OID pour déterminer si les types de filtres de réception ou de files d’attente de réception sont activés ou désactivés.