Initialisation d’un fournisseur de fractionnement Header-Data

Pour prendre en charge le fractionnement des données d’en-tête, un pilote miniport doit s’inscrire en tant que pilote NDIS 6.1 ou version ultérieure. Le fichier sources du pilote miniport doit spécifier DNDIS61_MINIPORT=1 au lieu de DNDIS60_MINIPORT=1. Le pilote miniport doit également spécifier NDIS 6.1 ou une version ultérieure dans la structure NDIS_MINIPORT_DRIVER_CHARACTERISTICS .

Pour inscrire ses attributs de fractionnement header-data, un pilote miniport NDIS 6.1 appelle la fonction NdisMSetMiniportAttributes à partir de sa fonction MiniportInitializeEx et transmet NdisMSetMiniportAttributes une structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES initialisée.

La structure NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES contient les informations suivantes :

  • Le membre HDSplitAttributes de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES contient un pointeur vers une structure de NDIS_HD_SPLIT_ATTRIBUTES qui spécifie les fonctionnalités de fractionnement des données d’en-tête fournies par un adaptateur miniport.

  • Le membre HardwareCapabilities de NDIS_HD_SPLIT_ATTRIBUTES contient les fonctionnalités de fractionnement d’en-tête-données prises en charge par l’adaptateur miniport. Ces fonctionnalités peuvent inclure des fonctionnalités actuellement désactivées par les paramètres de fichier INF ou via la page Propriétés avancées .

  • Le membre CurrentCapabilities de NDIS_HD_SPLIT_ATTRIBUTES contient les fonctionnalités actuelles de fractionnement d’en-tête-données prises en charge par l’adaptateur miniport. Si le fractionnement d’en-tête-données est activé via le mot clé INF standardisé *HeaderDataSplit, le pilote miniport utilise les mêmes indicateurs que le membre HardwareCapabilities pour indiquer la configuration actuelle du fractionnement d’en-tête-données. Pour plus d’informations sur *HeaderDataSplit, consultez Mots clés INF standardisés pour Header-Data Split.

  • Le membre HDSplitFlags de NDIS_HD_SPLIT_ATTRIBUTES contient des indicateurs de configuration de fractionnement d’en-tête-données. Le pilote miniport doit définir ce membre sur zéro avant d’appeler NdisMSetMiniportAttributes. NDIS définit ce membre avec un OR au niveau du bit des indicateurs de configuration. Une fois que NdisMSetMiniportAttributes est retourné, le pilote miniport doit case activée les paramètres d’indicateur dans HDSplitFlags et configurer le matériel en conséquence.

NDIS utilise l’indicateur NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT pour activer le fractionnement des données d’en-tête pour l’adaptateur miniport. NDIS ne définit pas NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT si le pilote miniport n’a pas défini l’indicateur NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT dans le membre CurrentCapabilities de la structure NDIS_HD_SPLIT_ATTRIBUTES . Le pilote miniport doit activer le fractionnement des données d’en-tête dans la carte réseau si NDIS définit l’indicateur NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT.

Le pilote miniport doit définir le membre BackfillSize de la structure NDIS_HD_SPLIT_ATTRIBUTES sur zéro avant d’appeler NdisMSetMiniportAttributes. NDIS définit le membre BackfillSize si le pilote miniport doit préallouer le stockage de remplissage dans la mémoire tampon de données des trames fractionnées. Après le retour de NdisMSetMiniportAttributes , le pilote miniport doit utiliser la valeur BackfillSize spécifiée par NDIS et préallouer les mémoires tampons de données. Pour plus d’informations sur la taille de renvoi de la mémoire tampon de données, consultez Allocation de remplissage pour la mémoire tampon de données.

Le pilote miniport doit définir le membre MaxHeaderSize de la structure NDIS_HD_SPLIT_ATTRIBUTES sur zéro avant d’appeler NdisMSetMiniportAttributes. NDIS définit ce membre sur la taille maximale autorisée pour la mémoire tampon d’en-tête des trames fractionnées. Une fois que NdisMSetMiniportAttributes a été retourné, le pilote miniport doit utiliser la valeur MaxHeaderSize spécifiée par NDIS. Pour plus d’informations sur la taille maximale de l’en-tête, consultez Allocation de la mémoire tampon d’en-tête.