Partager via


Mémoire partagée dans les mémoires tampons de réception

Cette section décrit la disposition de la mémoire partagée dans les mémoires tampons de réception vmQ. Pour plus d’informations sur l’utilisation des mémoires tampons dans les indications de réception, consultez Chemin de réception VMQ.

Si le pilote de protocole surdimensionné définit l’indicateur de NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED dans le membre Indicateurs de la structure NDIS_RECEIVE_QUEUE_PARAMETERS , la carte réseau doit fractionner un paquet reçu à un décalage égal ou supérieur à la taille de lookahead demandée et utiliser DMA pour transférer les données de lookahead et les données post-lookahead vers des segments de mémoire partagés distincts.

Les pilotes miniport spécifient les paramètres du type lookahead (NdisSharedMemoryUsageReceiveLookahead) ou d’autres types de mémoire partagée lorsque la mémoire partagée est allouée. Par exemple, le pilote miniport appelle la fonction NdisAllocateSharedMemory et définit le membre Usage dans la structure NDIS_SHARED_MEMORY_PARAMETERS sur NdisSharedMemoryUsageReceiveLookahead. Les pilotes miniport doivent allouer de la mémoire partagée pour une file d’attente une fois l’allocation de file d’attente terminée. Pour plus d’informations sur l’allocation et la libération de ressources de mémoire partagée pour les files d’attente, consultez Allocation de ressources de mémoire partagée.

L’illustration suivante montre les relations pour les données réseau lorsque les données entrantes sont fractionnées en deux mémoires tampons partagées.

Diagramme montrant les relations de données réseau avec les données entrantes divisées en deux mémoires tampons partagées.

La structure NET_BUFFER_SHARED_MEMORY spécifie les informations de mémoire partagée. Il peut y avoir une liste liée de ces mémoires tampons partagées qui sont associées à une structure NET_BUFFER .

Utilisez les macros NET_BUFFER_SHARED_MEM_NEXT_SEGMENT, NET_BUFFER_SHARED_MEM_FLAGS, NET_BUFFER_SHARED_MEM_HANDLE, NET_BUFFER_SHARED_MEM_OFFSET et NET_BUFFER_SHARED_MEM_LENGTH pour accéder aux NET_BUFFER_SHARED_MEMORY dans une structure de NET_BUFFER. Le membre SharedMemoryInfo de la structure NET_BUFFER contient la première structure NET_BUFFER_SHARED_MEMORY de la liste liée.

Note À compter de NDIS 6.30, le fractionnement des données de paquets en mémoire tampons de recherche distinctes n’est plus pris en charge. À compter de Windows Server 2012, le pilote de protocole trop important ne définit pas l’indicateur NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED dans le membre Indicateurs de la structure NDIS_RECEIVE_QUEUE_PARAMETERS .