Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per allocare risorse di memoria condivisa per una coda di macchine virtuali, un driver miniport chiama la funzione NdisAllocateSharedMemory. Ad esempio, il driver miniport alloca la memoria condivisa quando riceve l'OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE. Inoltre, un driver miniport può allocare memoria condivisa per la coda predefinita durante l'inizializzazione della scheda di rete. Per altre informazioni sull'allocazione delle code, vedere allocazione di una coda di macchine virtuali.
Il driver miniport può allocare più memoria per la coda fino a quando la coda non viene liberata. Per maggiori informazioni su come liberare una coda VM, vedere Liberare una coda VM.
La struttura NDIS_SHARED_MEMORY_PARAMETERS specifica i parametri di memoria condivisa per una richiesta di allocazione di memoria condivisa. I driver Miniport passano questa struttura alla funzione NdisAllocateSharedMemory. NDIS passa questa struttura alla funzione NetAllocateSharedMemory (ovvero il punto di ingresso ALLOCATE_SHARED_MEMORY_HANDLER).
Quando un driver miniport alloca memoria condivisa, specifica quanto segue:
Identificatore della coda.
Lunghezza della memoria condivisa.
Modalità di utilizzo della memoria condivisa. Ad esempio, il driver miniport specifica NdisSharedMemoryUsageReceive se la memoria condivisa deve essere usata per i buffer di ricezione.
Se il flag NDIS_SHARED_MEM_PARAMETERS_CONTIGUOUS non è impostato nel membro Flags, la memoria condivisa può essere specificata in un elenco di raccolta a dispersione contenuto in memoria non contigua.
L'enumerazione NDIS_SHARED_MEMORY_USAGE specifica la modalità di utilizzo della memoria condivisa. L'enumerazione NDIS_SHARED_MEMORY_USAGE viene utilizzata nelle strutture di NDIS_SHARED_MEMORY_PARAMETERS e NDIS_SCATTER_GATHER_LIST_PARAMETERS. Per informazioni sui parametri di memoria condivisa nei buffer di ricezione dei dati VMQ, vedere Memoria condivisa nei buffer di ricezione.
La funzione NdisAllocateSharedMemory fornisce quanto segue al chiamante:
Indirizzo virtuale della memoria allocata.
Elenco di raccolta a dispersione.
Handle di memoria condivisa: per le indicazioni di ricezione.
Handle di allocazione: utilizzato per identificare la memoria successivamente.
I driver Miniport chiamano la funzione NdisFreeSharedMemory per liberare memoria condivisa per una coda. Se il driver miniport ha allocato la memoria condivisa per una coda non predefinita, libera la memoria condivisa nel contesto dell'OID OID_RECEIVE_FILTER_FREE_QUEUE mentre sta liberando la coda. I driver Miniport liberano la memoria condivisa allocata per la coda predefinita nel contesto della funzione MiniportHaltEx.