Partager via


Prise en charge du traitement des paquets IP bruts en Mo

Les pilotes miniport mo qui prennent en charge les trames de paquets IP brutes dans leur chemin de données d’envoi/réception doivent respecter les instructions suivantes :

Indicateurs de liste de mémoires tampons nettes (NBL) pour le traitement des paquets IP RAW

  • Pour les paquets IPv4 :

    Le membre NblFlags de la structure NET_BUFFER_LIST doit être défini sur NDIS_NBL_FLAGS_IS_IPV4.

    Le membre NetBufferListFrameType de la structure NET_BUFFER_LIST doit être défini sur 0x0800 (Ethertype IPv4) dans l’ordre d’octet du réseau.

  • Pour les paquets IPv6 :

    Le membre NblFlags de NET_BUFFER_LIST structure doit être défini sur NDIS_NBL_FLAGS_IS_IPV6.

    Le membre NetBufferListFrameType de la structure NET_BUFFER_LIST doit être défini sur 0x86dd (Ethertype IPv6) dans l’ordre d’octet du réseau.

Les pilotes miniport peuvent utiliser la macro NdisSetNblFlag pour définir des indicateurs dans la liste des mémoires tampons réseau. La ligne suivante montre comment définir l’indicateur de paquetS IPv4 dans la liste des mémoires tampons réseau :

NdisSetNblFlag(pNbl, NDIS_NBL_FLAGS_IS_IPV4);

Les pilotes miniport peuvent utiliser la NET_BUFFER_LIST_INFO pour obtenir et définir des informations dans une liste de mémoires tampons réseau. La ligne suivante montre comment modifier l’objet OOB NetBufferListFrameType dans la liste des mémoires tampons réseau pour les paquets IPV4 :

Value = ConvertToNetworkByteOrder(0x0800);
NET_BUFFER_LIST_INFO(pNbl, NetBufferListFrameType) = Value;

Traitement du chemin d’envoi

Le service MB définit ces indicateurs dans le NBL avant de transmettre la liste au pilote miniport à envoyer sur le réseau. Le pilote miniport peut vérifier les indicateurs dans le NBL d’entrée.

Traitement du chemin de réception

Les pilotes miniport doivent définir des indicateurs dans le NBL avant de passer le NBL au service Mo pour les paquets reçus.

Si votre pilote miniport implémente le traitement des paquets IP bruts pendant sa phase de développement du pilote, mais que l’usurpation de serveur DHCP est toujours activée (EnableDhcp = 1), votre pilote miniport doit s’assurer des éléments suivants :

  • L’adresse matérielle et sa longueur définie dans la réponse DHCP du pilote miniport doivent correspondre aux valeurs des membres CurrentMacAddress et MacAddressLength spécifiés par le pilote miniport dans la structure NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

  • L’ID de transaction (membre xid ) de la réponse DHCP du pilote miniport doit correspondre exactement à l’ID de transaction défini dans le message de requête DHCP du client.