Envoi de trames Ethernet
Le transport TCP/IP Windows prend en charge un ensemble d’exigences pour l’envoi de trames Ethernet. Tout pilote (par exemple, un pilote intermédiaire MUX ou un pilote de filtre) qui provient des requêtes d’envoi ou modifie les demandes d’envoi de pilotes sur-mentants doit prendre en charge les exigences que le transport TCP/IP implémente.
Note Si un pilote d’une pile de pilotes ne respecte pas ces exigences, les pilotes miniports sous-jacents, les pilotes intermédiaires MUX et les pilotes de filtre peuvent se comporter de manière imprévisible.
Pour les demandes d’envoi Ethernet, les pilotes doivent prendre en charge les exigences suivantes :
Si un pilote est à l’origine d’une demande d’envoi, il doit allouer une structure NET_BUFFER_LIST pour les trames Ethernet. Le membre NetBufferListInfo de chaque structure NET_BUFFER_LIST doit inclure les données hors bande (OOB) requises pour l’utilisation particulière. Les données OOB s’appliquent à toutes les structures NET_BUFFER associées à une structure de NET_BUFFER_LIST.
Si un pilote est à l’origine d’une demande d’envoi, le pilote doit allouer une ou plusieurs structures NET_BUFFER pour les trames Ethernet et lier ces structures à la structure NET_BUFFER_LIST. Chaque NET_BUFFER structure liée à une structure de NET_BUFFER_LIST décrit une trame Ethernet unique. Le pilote peut chaîner plusieurs structures NET_BUFFER_LIST dans une demande d’envoi.
Toutes les structures NET_BUFFER associées à une structure NET_BUFFER_LIST doivent avoir le même type de trame Ethernet et la même version de protocole IP (IPv4 ou IPv6).
Toutes les structures NET_BUFFER associées à une structure de NET_BUFFER_LIST doivent avoir les mêmes adresses MAC source et de destination.
Si un pilote envoie des trames TCP ou UDP, toutes les structures NET_BUFFER associées à une structure NET_BUFFER_LIST doivent être associées à la même connexion TCP ou UDP. Note Sous réserve des exigences suivantes, les trames Ethernet transmises peuvent être fractionnées. Autrement dit, plusieurs listes de descripteurs de mémoire (MDL) peuvent être associées à une structure NET_BUFFER dans une demande d’envoi.
Ne fractionnez pas l’en-tête MAC de l’image Ethernet de transmission entre plusieurs MDL. Traitez l’indicateur Virtual LAN (VLAN) (ou Priority), le cas échéant, dans le cadre de l’en-tête MAC. Par conséquent, cet indicateur doit se trouver dans la même MDL que le reste de l’en-tête MAC.
Si un pilote modifie les liens dans la chaîne MDL dans une structure de NET_BUFFER ou la chaîne de NET_BUFFER dans une structure de NET_BUFFER_LIST, le pilote doit restaurer les liens vers la configuration d’origine avant de renvoyer la propriété de l’NET_BUFFER_LIST à un pilote qui se superpose. Toutefois, les pilotes ne sont pas nécessaires pour restaurer les liens entre les structures NET_BUFFER_LIST.