NdisMFreeSharedMemory-Funktion (ndis.h)

NdisMFreeSharedMemory gibt Arbeitsspeicher frei, der zuvor von NdisMAllocateSharedMemory oder zugewiesen wurde. NdisMAllocateSharedMemoryAsyncEx durch den Treiber einer DMA-NIC.

Syntax

void NdisMFreeSharedMemory(
  [in] NDIS_HANDLE           MiniportAdapterHandle,
  [in] ULONG                 Length,
  [in] BOOLEAN               Cached,
  [in] PVOID                 VirtualAddress,
  [in] NDIS_PHYSICAL_ADDRESS PhysicalAddress
);

Parameter

[in] MiniportAdapterHandle

Gibt das Handle an, das ursprünglich für MiniportInitializeEx eingegeben wurde.

[in] Length

Gibt die Anzahl der ursprünglich zugewiesenen Bytes an.

[in] Cached

Gibt TRUE an, wenn die ursprüngliche Zuordnung zwischengespeichert werden konnte.

[in] VirtualAddress

Gibt die virtuelle Basisadresse an, die von NdisMAllocateSharedMemory oder NdisMAllocateSharedMemoryAsyncEx zurückgegeben wird.

[in] PhysicalAddress

Gibt die entsprechende physische Adresse an, die von NdisMAllocateSharedMemory oder NdisMAllocateSharedMemoryAsyncEx zurückgegeben wird.

Rückgabewert

Keine

Bemerkungen

Wenn es bereits einen erfolgreichen Aufruf von NdisMAllocateSharedMemory oder ausgeführt hat NdisMAllocateSharedMemoryAsyncEx, der Miniporttreiber eines DMA-Geräts, ruft NdisMFreeSharedMemory auf, wenn einer der folgenden Ereignisse auftritt:

  • Die MiniportInitializeEx-Funktion kann die NIC nicht initialisieren. Daher muss diese Funktion alle vorhandenen Ansprüche für Hardwareressourcen für diese NIC freigeben, bevor sie die Steuerung zurückgibt.
  • Die NIC, für die der Miniporttreiber den Arbeitsspeicher zugewiesen hat, wird entfernt.
  • Der Treiber wird entladen, unabhängig davon, ob das System heruntergefahren wird oder weil der Benutzer die auf dem Computer verwendeten Netzwerkkomponenten neu konfiguriert hat.
  • Der Treiber hat zusätzlichen freigegebenen Arbeitsspeicher mit NdisMAllocateSharedMemoryAsyncEx zugewiesen, wenn die E/A-Nachfrage für eine NIC hoch war, aber der Netzwerkdatenverkehr inzwischen auf ein durchschnittliches Niveau abgeklungen ist.
Ein Miniporttreiber kann NdisMFreeSharedMemory nicht aufrufen, um einen Unterbereich innerhalb eines zugeordneten freigegebenen Speicherbereichs freizugeben. Die an NdisMFreeSharedMemory übergebenen Parameter müssen genau mit denen übereinstimmen, die an NdisMAllocateSharedMemory oder NdisMAllocateSharedMemoryAsyncEx übergeben wurden.

NdisMFreeSharedMemory kann nicht über eine MiniportShutdownEx-Funktion aufgerufen werden.

Microsoft Windows Server 2003, Windows XP Service Pack 1 und höhere Versionen von Windows ermöglichen es sowohl Bus-master-DMA-NiCs als auch untergeordnete DMA-NICs, NdisMFreeSharedMemory aufzurufen. Bei früheren Releases können nur Bus-master DMA-NICs NdisMFreeSharedMemory aufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisMFreeSharedMemory (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisMFreeSharedMemory (NDIS 5.1)) in Windows XP.
Zielplattform Universell
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Miniport_Driver_Function(ndis), NdisMFreeSharedMemory(ndis)

Weitere Informationen

MiniportHaltEx

MiniportInitializeEx

MiniportSharedMemoryAllocateComplete

MiniportShutdownEx

NdisMAllocateSharedMemory

NdisMAllocateSharedMemoryAsyncEx