Freigeben über


Shared Memory-Ressourcenzuordnung

Um freigegebene Speicherressourcen für eine VM-Warteschlange zuzuweisen, ruft ein Miniporttreiber die NdisAllocateSharedMemory-Funktion auf . Beispielsweise weist der Miniporttreiber freigegebenen Arbeitsspeicher zu, wenn er die OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID empfängt. Außerdem kann ein Miniporttreiber während der Initialisierung des Netzwerkadapters freigegebenen Arbeitsspeicher für die Standardwarteschlange zuordnen. Weitere Informationen zum Zuweisen von Warteschlangen finden Sie unter Zuweisen einer VM-Warteschlange.

Der Miniporttreiber kann mehr Arbeitsspeicher für die Warteschlange zuweisen, bis die Warteschlange freigegeben wird. Weitere Informationen zum Freigeben einer Warteschlange finden Sie unter Freigeben einer VM-Warteschlange.

Die NDIS_SHARED_MEMORY_PARAMETERS-Struktur gibt die Parameter für gemeinsam genutzten Arbeitsspeicher für eine Anforderung zur Zuweisung gemeinsam genutzter Arbeitsspeichers an. Miniport-Treiber übergeben diese Struktur an die NdisAllocateSharedMemory-Funktion . NDIS übergibt diese Struktur an die NetAllocateSharedMemory-Funktion (d. a. den ALLOCATE_SHARED_MEMORY_HANDLER Einstiegspunkt).

Wenn ein Miniporttreiber gemeinsam genutzten Arbeitsspeicher zuordnet, gibt er Folgendes an:

  • Warteschlangenbezeichner.

  • Länge des freigegebenen Arbeitsspeichers.

  • Verwendung des freigegebenen Speichers. Der Miniporttreiber gibt beispielsweise NdisSharedMemoryUsageReceive an, wenn der freigegebene Arbeitsspeicher für Empfangspuffer verwendet werden soll.

Wenn das flag NDIS_SHARED_MEM_PARAMETERS_CONTIGOUS im Flags-Element nicht festgelegt ist, kann freigegebener Arbeitsspeicher in einer Punktsammlungsliste angegeben werden, die im nicht zusammenhängenden Speicher enthalten ist.

Die NDIS_SHARED_MEMORY_USAGE-Enumeration gibt an, wie gemeinsam genutzter Arbeitsspeicher verwendet wird. Die NDIS_SHARED_MEMORY_USAGE-Enumeration wird in den NDIS_SHARED_MEMORY_PARAMETERS - und NDIS_SCATTER_GATHER_LIST_PARAMETERS-Strukturen verwendet. Informationen zu Shared Memory-Parametern in VMQ-Empfangsdatenpuffern finden Sie unter Shared Memory in Receive Buffers.

Die NdisAllocateSharedMemory-Funktion stellt dem Aufrufer Folgendes bereit:

  • Virtuelle Adresse des zugeordneten Arbeitsspeichers.

  • Punktsammlungsliste.

  • Handle für gemeinsam genutzten Speicher: Für Empfangsanzeigen.

  • Zuordnungshandle: Wird verwendet, um den Speicher später zu identifizieren.

Miniport-Treiber rufen die NdisFreeSharedMemory-Funktion auf, um freigegebenen Arbeitsspeicher für eine Warteschlange freizugeben. Wenn der Miniporttreiber den freigegebenen Arbeitsspeicher für eine nicht standardmäßige Warteschlange zugewiesen hat, gibt er den freigegebenen Arbeitsspeicher im Kontext der OID_RECEIVE_FILTER_FREE_QUEUE OID frei, während die Warteschlange freigegeben wird. Miniport-Treiber geben freigegebenen Arbeitsspeicher frei, den sie für die Standardwarteschlange im Kontext der MiniportHaltEx-Funktion zugewiesen haben.