Memoria condivisa nei buffer di ricezione

Questa sezione descrive il layout della memoria condivisa in VMQ riceve i buffer. Per altre informazioni sull'uso dei buffer nelle indicazioni di ricezione, vedere Percorso di ricezione VMQ.

Se il driver del protocollo overlying imposta il flag NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED nel membro Flagdella struttura NDIS_RECEIVE_QUEUE_PARAMETERS , la scheda di rete deve suddividere un pacchetto ricevuto in corrispondenza di un offset uguale o superiore alla dimensione di lookahead richiesta e usare DMA per trasferire i dati lookahead e i dati post-lookahead in segmenti di memoria condivisi separati.

I driver Miniport specificano le impostazioni per il tipo lookahead (NdisSharedMemoryUsageReceiveLookahead) o altri tipi di memoria condivisa quando viene allocata la memoria condivisa. Ad esempio, il driver miniport chiama la funzione NdisAllocateSharedMemory e imposta il membro Utilizzo nella struttura NDIS_SHARED_MEMORY_PARAMETERS su NdisSharedMemoryUsageReceiveLookahead. I driver miniport devono allocare memoria condivisa per una coda al termine dell'allocazione della coda. Per informazioni sull'allocazione e la liberazione delle risorse di memoria condivise per le code, vedere Allocazione di risorse di memoria condivisa.

Nella figura seguente vengono illustrate le relazioni per i dati di rete quando i dati in ingresso vengono suddivisi in due buffer di memoria condivisi.

Diagramma che mostra le relazioni di dati di rete con i dati in ingresso suddivisi in due buffer di memoria condivisi.

La struttura NET_BUFFER_SHARED_MEMORY specifica le informazioni di memoria condivise. Può essere presente un elenco collegato di tali buffer di memoria condivisa associati a una struttura NET_BUFFER .

Usare le macroNET_BUFFER_SHARED_MEM_NEXT_SEGMENT, NET_BUFFER_SHARED_MEM_FLAGS, NET_BUFFER_SHARED_MEM_HANDLE, NET_BUFFER_SHARED_MEM_OFFSETe NET_BUFFER_SHARED_MEM_LENGTH per accedere alle NET_BUFFER_SHARED_MEMORY in una struttura NET_BUFFER. Il membro SharedMemoryInfo della struttura NET_BUFFER contiene la prima struttura NET_BUFFER_SHARED_MEMORY nell'elenco collegato.

Nota A partire da NDIS 6.30, la suddivisione dei dati dei pacchetti in buffer lookahead separati non è più supportata. A partire da Windows Server 2012, il driver del protocollo overlying non imposta il flag di NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED nel membro Flag della struttura NDIS_RECEIVE_QUEUE_PARAMETERS .