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 VMQ Receive Path.

Si le pilote de sur-couche de protocole définit l’indicateur NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED dans le membre Flags 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ée 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 Utilisation 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 la file d’attente terminée. Pour plus d’informations sur l’allocation et la libération des 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 telles mémoires tampons de mémoire partagée 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 dans la liste liée.

Remarque À partir de la version NDIS 6.30, le fractionnement des données de paquet en mémoires tampons de préanalyse distinctes n’est plus pris en charge. À compter de Windows Server 2012, le pilote de protocole superposant ne définit pas l’indicateur NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED dans le membre Flags de la structure NDIS_RECEIVE_QUEUE_PARAMETERS.