Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Suivez les instructions de cette rubrique pour gérer vos structures NET_RING et leurs éléments pendant le transfert de données réseau. Les règles de cette rubrique décrivent les membres des éléments de l'anneau net que les pilotes clients peuvent modifier, ainsi que le moment approprié pour le faire, selon le scénario du chemin de données. Elles fournissent également des informations générales que les pilotes clients doivent garder à l'esprit concernant ces structures.
Important
Les pilotes clients doivent respecter ces instructions pendant toutes les phases de développement. Si un pilote client ne respecte pas ces instructions lors du test avec le vérificateur de pilote, le vérificateur de pilotes signale une violation et déclenche une vérification de bogue sur l’appareil testé.
NET_RING
Lorsque la file d’attente de paquets parent de NET_RING est démarrée, tous les index de l’anneau sont initialisés à 0.
Le tableau suivant décrit les membres de l'anneau réseau que les pilotes clients peuvent modifier.
| Terrain | Le pilote client est autorisé à modifier |
|---|---|
| OSReserved1 | Non |
| ElementStride | Non |
| NumberOfElements | Non |
| ElementIndexMask | Non |
| Indice de fin | Non |
| OSReserved0 | Non |
| OSReserved2 | Non |
| BeginIndex | Oui (obligatoire) |
| NextIndex | Oui (facultatif) Remarque : l’infrastructure ne lit jamais NextIndex. |
| Gratter | Oui (facultatif) Remarque : l’infrastructure ne lit jamais Scratch. |
| Buffer | Non |
Les pilotes clients ne doivent pas modifier les membres en lecture seule de cette structure, ni ne doivent-ils jamais incrémenter BeginIndex au-delà de EndIndex pendant un appel à EvtPacketQueueAdvance.
Pour plus d’informations sur la propriété d’index dans les anneaux nets, consultez Présentation des anneaux nets.
NET_PACKET
Les champs d’un NET_PACKET sont sensibles aux différents contextes dans lesquels le chemin de données fonctionne. Que le champ Ignore du paquet soit défini ou non et que le pilote soit en train de recevoir (Rx) ou de transmettre (Tx) le paquet, cela modifie l’ensemble de règles appliqué au paquet.
Le tableau suivant fournit des instructions pour les pilotes dans chaque scénario.
| Rx ou Tx | Le champ ignoré est défini par... | Remarques |
|---|---|---|
| Rx | Pilote client |
|
| Tx | NetAdapterCx |
|
NET_PACKET_LAYOUT
Pendant les opérations Rx, le champ Disposition de l’NET_PACKET est soumis aux règles suivantes :
- Tous les champs à l’exception de Reserved0 doivent être initialisés par le pilote client.
- Si Layer2Type est défini sur NetPacketLayer2TypeEthernet, Layer2HeaderLength doit être égal à 14 ou supérieur.
- Si Layer2Type est défini sur NetPacketLayer2TypeNull, Layer2HeaderLength doit être défini sur 0.
- Si Layer3Type est un type IPv4, Layer3HeaderLength doit être supérieur ou égal à 20 .
- Si Layer3Type est un type IPv6, Layer3HeaderLength doit être supérieur ou égal à 40 .
- Si Layer4Type est défini sur Tcp, Layer4HeaderLength doit être supérieur ou égal à 40 .
- Si Layer4Type est défini sur Udp, Layer4HeaderLength doit être supérieur ou égal à 8 .
- Les champs de type de couche doivent se trouver dans la plage d’énumération appropriée.
La mise en page n’est pas utilisée pendant Tx.
FRAGMENT_RÉSEAU
NET_FRAGMENT règles de champ varient selon que le pilote reçoit ou transmet, et si les mémoires tampons de fragment sont attachées aux paquets par le pilote ou par l’infrastructure.
| Rx ou Tx | Remarques |
|---|---|
| Rx |
|
| Tx |
|