Prise en charge de Header-Data fractionnement dans les pilotes de protocole et les pilotes de filtre

Les pilotes de protocole et les pilotes de filtre NDIS 6.0 et versions ultérieures doivent prendre en charge les indications de réception avec l’en-tête et les données dans des mémoires tampons non contiguës.

Vous ne devez pas supposer qu’il n’y a qu’une seule MDL dans une structure de NET_BUFFER . Les pilotes de protocole et les pilotes de filtre ne sont pas nécessaires pour prendre en charge l’inscription fractionnée des données d’en-tête. Toutefois, le code de gestion de la réception du pilote doit gérer plusieurs MDL dans la chaîne MDL et doit utiliser les macros MDL NDIS suivantes pour accéder à la chaîne MDL :

Avec les mémoires tampons fractionnées, la longueur des données qui est associée à la structure NET_BUFFER (dans le membre DataLength de la structure NET_BUFFER_DATA ) est divisée en plusieurs DLL. Par exemple, si un pilote de protocole essayait d’accéder à l’intégralité de la mémoire tampon de données dans la première mdl, le pilote pourrait accéder à des données non valides.

Note Une fois l’appel d’indication de réception retourné à un pilote miniport, le pilote miniport peut récupérer les DLL d’en-tête. Les pilotes qui se superposent ou leurs clients ne doivent pas accéder aux DLL d’en-tête après le retour de l’appel d’indication de réception au pilote miniport. Cette restriction s’applique également même lorsque le pilote miniport n’indique pas les données reçues avec une status de NDIS_RECEIVE_FLAGS_RESOURCES.