Freigeben über


MmAllocateNonCachedMemory-Funktion (ntddk.h)

Die MmAllocateNonCachedMemory-Routine weist einen virtuellen Adressbereich aus nicht zwischengespeichertem und cacheorientiertem Arbeitsspeicher zu.

Syntax

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

Parameter

[in] NumberOfBytes

Gibt die Größe des zu zuweisenden Bereichs in Bytes an.

Rückgabewert

Wenn der angeforderte Arbeitsspeicher nicht zugeordnet werden kann, ist der Rückgabewert NULL. Andernfalls handelt es sich um die virtuelle Basisadresse des zugeordneten Bereichs.

Hinweise

MmAllocateNonCachedMemory kann aus einer DriverEntry-Routine aufgerufen werden, um einen nicht zwischengespeicherten Block des virtuellen Arbeitsspeichers für verschiedene gerätespezifische Puffer zuzuweisen. Die Funktion gibt unabhängig von der angeforderten Zuordnungsgröße immer ein vollständiges Vielfaches der Seitengröße des virtuellen Speichers des nicht ausgelagerten Systemadressspeichers zurück.

Nicht zwischengespeicherte Zuordnungen werden auf ein integrales Vielfaches der Datencachezeilengröße des Prozessors ausgerichtet, um Cache- und Kohenzprobleme zu vermeiden.

Die seiten des physischen Arbeitsspeichers, die MmAllocateNonCachedMemory zurückgibt, sind in der Regel keine zusammenhängenden Seiten.

Der von MmAllocateNonCachedMemory zugewiesene Arbeitsspeicher ist nicht initialisiert. Ein Kernelmodustreiber muss diesen Arbeitsspeicher zuerst null, wenn er für Software im Benutzermodus sichtbar macht (um zu vermeiden, dass potenziell privilegierte Inhalte verloren gehen).

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntddk.h (include Ntddk.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

Weitere Informationen

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory