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.
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 .