Udostępnij przez


Pamięć współdzielona w buforach odbiorczych

W tej sekcji opisano układ pamięci udostępnionej w buforach odbioru VMQ. Aby uzyskać więcej informacji na temat używania w oznaczeniach odbioru, zobacz ścieżka odbierania VMQ.

Jeśli sterownik nadrzędnego protokołu ustawił flagę NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED w Flags elementu członkowskiego struktury NDIS_RECEIVE_QUEUE_PARAMETERS, karta sieciowa powinna podzielić odebrany pakiet z przesunięciem równym lub większym niż żądany rozmiar danych przetwarzanych z góry i użyć DMA do transferu tych danych oraz danych po lookahead do oddzielnych segmentów pamięci współdzielonej.

Sterowniki miniportu określają ustawienia typu lookahead (NdisSharedMemoryUsageReceiveLookahead) lub innych typów pamięci współużytkowanej po przydzieleniu pamięci udostępnionej. Na przykład sterownik miniportu wywołuje funkcję NdisAllocateSharedMemory i ustawia element Usage w strukturze NDIS_SHARED_MEMORY_PARAMETERS na wartość NdisSharedMemoryUsageReceiveLookahead. Sterowniki miniportu powinny przydzielać pamięć udostępnioną dla kolejki po zakończeniu alokacji kolejki. Aby uzyskać informacje na temat przydzielania i zwalniania zasobów pamięci udostępnionej dla kolejek, zobacz przydział zasobów pamięci udostępnionych.

Poniższa ilustracja przedstawia relacje dotyczące danych sieciowych, gdy dane przychodzące są podzielone na dwa bufory pamięci współdzielonej.

Diagram przedstawiający relacje danych sieciowych z danymi przychodzącymi podzielonymi na dwa bufory pamięci współdzielonej.

Struktura NET_BUFFER_SHARED_MEMORY określa informacje o pamięci udostępnionej. Może istnieć połączona lista takiej pamięci współużytkowanej, powiązanych ze strukturą NET_BUFFER.

Użyj makr NET_BUFFER_SHARED_MEM_NEXT_SEGMENT, NET_BUFFER_SHARED_MEM_FLAGS, NET_BUFFER_SHARED_MEM_HANDLE, NET_BUFFER_SHARED_MEM_OFFSETi NET_BUFFER_SHARED_MEM_LENGTH, aby uzyskać dostęp do NET_BUFFER_SHARED_MEMORY w strukturze NET_BUFFER. Element członkowski SharedMemoryInfo struktury NET_BUFFER zawiera pierwszą strukturę NET_BUFFER_SHARED_MEMORY na liście połączonej.

Uwaga Począwszy od NDIS 6.30, dzielenie danych pakietów na oddzielne bufory lookahead nie jest już obsługiwane. Począwszy od systemu Windows Server 2012, wierzchni sterownik protokołu nie ustawi flagi NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED w składowej Flags struktury NDIS_RECEIVE_QUEUE_PARAMETERS.