Sdílet prostřednictvím


Přidělení prostředků sdílené paměti

Pokud chcete přidělit sdílené paměťové prostředky pro frontu virtuálních počítačů, ovladač miniportu volá funkci NdisAllocateSharedMemory. Například ovladač miniportu přiděluje sdílenou paměť, když obdrží identifikátor OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID. Ovladač miniportu může také přidělit sdílenou paměť pro výchozí frontu během inicializace síťového adaptéru. Další informace o přidělování front najdete v tématu Přidělení fronty virtuálních počítačů.

Ovladač miniportu může přidělit více paměti pro frontu až do doby, kdy bude fronta uvolněna. Další informace o uvolnění fronty virtuálního počítače najdete v tématu Uvolnění fronty virtuálního počítače.

Struktura NDIS_SHARED_MEMORY_PARAMETERS určuje parametry sdílené paměti pro požadavek na přidělení sdílené paměti. Ovladače miniportu předávají tuto strukturu funkci NdisAllocateSharedMemory. NDIS předá tuto strukturu funkcí NetAllocateSharedMemory (což je vstupní bod ALLOCATE_SHARED_MEMORY_HANDLER).

Když ovladač miniportu přidělí sdílenou paměť, určuje následující:

  • Identifikátor fronty.

  • Délka sdílené paměti.

  • Způsob použití sdílené paměti Například ovladač miniportu určuje NdisSharedMemoryUsageReceive, pokud má být sdílená paměť použita pro příjemové vyrovnávací paměti.

Pokud není příznak NDIS_SHARED_MEM_PARAMETERS_CONTIGOUS nastaven v členu příznaků, lze sdílenou paměť zadat ve scatter-gather seznamu, který je obsažen v nesouvislé paměti.

Výčet NDIS_SHARED_MEMORY_USAGE určuje, jak se používá sdílená paměť. Výčet NDIS_SHARED_MEMORY_USAGE se používá ve strukturách NDIS_SHARED_MEMORY_PARAMETERS a NDIS_SCATTER_GATHER_LIST_PARAMETERS. Informace o parametrech sdílené paměti ve vyrovnávacích pamětech VMQ pro příjem dat naleznete v tématu Sdílená paměť ve vyrovnávacích pamětech pro příjem.

Funkce NdisAllocateSharedMemory volajícímu poskytuje následující:

  • Virtuální adresa přidělené paměti.

  • Seznam bodového shromáždění

  • Držák sdílené paměti – pro přijímání indikací

  • Identifikátor přidělení – slouží k pozdější identifikaci paměti.

Ovladače miniportu volají funkci NdisFreeSharedMemory k uvolnění sdílené paměti pro frontu. Pokud ovladač miniportu přidělil sdílenou paměť pro nedefaultní frontu, uvolní tuto sdílenou paměť v rámci kontextu OID_RECEIVE_FILTER_FREE_QUEUE OID, zatímco uvolňuje frontu. Ovladače miniportu uvolňují sdílenou paměť, kterou přidělili výchozí frontě v kontextu funkce MiniportHaltEx.