Freigeben über


Freigegebener Arbeitsspeicher in Empfangspuffern

In diesem Abschnitt wird das Layout des freigegebenen Arbeitsspeichers in VMQ-Empfangspuffern beschrieben. Weitere Informationen zur Verwendung der Puffer in Empfangsanzeigen finden Sie unter VMQ-Empfangspfad.

Wenn der überlagernde Protokolltreiber das NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED-Flag im Flags-Element der NDIS_RECEIVE_QUEUE_PARAMETERS-Struktur festgelegt hat, sollte der Netzwerkadapter ein empfangenes Paket mit einem Offset teilen, der der angeforderten Lookaheadgröße entspricht oder größer ist, und DMA verwenden, um die Lookaheaddaten und die Nach-Lookahead-Daten in separate freigegebene Speichersegmente zu übertragen.

Miniport-Treiber geben die Einstellungen für den Lookahead-Typ (NdisSharedMemoryUsageReceiveLookahead) oder andere Shared Memory-Typen an, wenn der freigegebene Arbeitsspeicher zugewiesen wird. Der Miniporttreiber ruft beispielsweise die Funktion NdisAllocateSharedMemory auf und legt den Usage-Member in der NDIS_SHARED_MEMORY_PARAMETERS-Struktur auf NdisSharedMemoryUsageReceiveLookahead fest. Miniporttreiber sollten freigegebenen Arbeitsspeicher für eine Warteschlange zugewiesen werden, wenn die Warteschlangenzuordnung abgeschlossen ist. Informationen zum Zuweisen und Freigeben freigegebener Speicherressourcen für Warteschlangen finden Sie unter Zuordnung von Ressourcen für freigegebenen Arbeitsspeicher.

Die folgende Abbildung zeigt die Beziehungen für die Netzwerkdaten, wenn die eingehenden Daten in zwei freigegebene Speicherpuffer aufgeteilt werden.

Diagramm: Netzwerkdatenbeziehungen mit eingehenden Daten, die in zwei freigegebene Speicherpuffer aufgeteilt sind

Die NET_BUFFER_SHARED_MEMORY-Struktur gibt Informationen zum freigegebenen Speicher an. Es kann eine verknüpfte Liste solcher freigegebenen Speicherpuffer vorhanden sein, die einer NET_BUFFER Struktur zugeordnet sind.

Verwenden Sie die Makros NET_BUFFER_SHARED_MEM_NEXT_SEGMENT, NET_BUFFER_SHARED_MEM_FLAGS, NET_BUFFER_SHARED_MEM_HANDLE, NET_BUFFER_SHARED_MEM_OFFSET und NET_BUFFER_SHARED_MEM_LENGTH , um auf die NET_BUFFER_SHARED_MEMORY in einer NET_BUFFER-Struktur zuzugreifen. Das SharedMemoryInfo-Element der NET_BUFFER-Struktur enthält die erste NET_BUFFER_SHARED_MEMORY-Struktur in der verknüpften Liste.

Hinweis Ab NDIS 6.30 wird das Aufteilen von Paketdaten in separate Lookaheadpuffer nicht mehr unterstützt. Ab Windows Server 2012 legt der überlastende Protokolltreiber das NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED-Flag im Flags-Element der NDIS_RECEIVE_QUEUE_PARAMETERS-Struktur nicht fest.