Partager via


Indication des trames Ethernet reçues

Le pilote de protocole TCP/IP Windows impose un ensemble de conditions requises pour la réception de trames Ethernet. Tout pilote qui provient reçoit des indications de trames Ethernet ou des modifications reçoivent des indications de pilotes sous-jacents doit prendre en charge les exigences générales imposées par TCP/IP. Ces pilotes incluent les pilotes miniport Ethernet, les pilotes intermédiaires MUX et les pilotes de filtre.

Note Si un pilote ne respecte pas ces exigences, les pilotes excessivement appliqués (tels que le transport TCP/IP, les pilotes intermédiaires MUX et les pilotes de filtre) peuvent se comporter de manière imprévisible.

Les pilotes qui proviennent d’Ethernet reçoivent des indications doivent prendre en charge les exigences suivantes :

  • Le pilote doit allouer une structure NET_BUFFER_LIST pour le frame Ethernet reçu. Chaque structure NET_BUFFER_LIST doit inclure les données hors bande (OOB) définies dans le membre NetBufferListInfo du NET_BUFFER_LIST requis pour l’utilisation particulière.

  • Le pilote doit allouer une structure NET_BUFFER pour le frame et la lier à une structure NET_BUFFER_LIST . Le miniport Ethernet doit affecter exactement une structure NET_BUFFER à une structure de NET_BUFFER_LIST lors de l’indication des données reçues. Cette restriction s’applique uniquement au chemin de réception Ethernet. Elle ne s’applique pas aux autres types de supports, tels que l’interface laN sans fil 802.11 native. ou NDIS en général.

  • À compter de NDIS 6.1, dans certains scénarios, une structure NET_BUFFER peut être associée à plusieurs listes de descripteurs de mémoire (MDL) pour le frame Ethernet reçu. Même si une structure de NET_BUFFER_LIST doit contenir une structure de NET_BUFFER unique, l’utilisation de plusieurs MDL permet au pilote de fractionner les données de paquet reçues en mémoires tampons distinctes.

    Par exemple, les pilotes Ethernet qui prennent en charge l’interface de fractionnement d’en-tête-données divisent une trame Ethernet reçue à l’aide d’une liste liée de plusieurs DLL associées à une structure de NET_BUFFER unique. Pour plus d’informations, consultez Fractionnement d’en-tête-données.

    Pour des raisons de simplicité et de performances, nous recommandons vivement que les pilotes qui ne prennent pas en charge le fractionnement des données d’en-tête n’utilisent qu’une seule MDL pour chaque structure NET_BUFFER .

    Note Dans NDIS 6.0 pour Windows Vista, chaque structure NET_BUFFER ne doit contenir qu’une seule MDL.

  • Les pilotes ne doivent pas fractionner les trames Ethernet reçues au milieu de l’en-tête IP, des options IPv4, des en-têtes IPsec, des en-têtes d’extension IPv6 ou des en-têtes de protocole de couche supérieure, sauf si la première MDL contient au moins autant d’octets que NDIS spécifié pour la taille de lookahead.

Les pilotes de protocole et de filtre NDIS doivent prendre en charge les trames Ethernet fractionnées dans les indications de réception si ces trames de fractionnement sont conformes aux restrictions définies dans l’élément de liste précédent. Les restrictions garantissent que les pilotes de protocole et de filtre sont compatibles avec les futures versions de Windows.