Freigeben über


MmAllocateNonCachedMemory-Funktion (ntddk.h)

Die MmAllocateNonCachedMemory Routine weist einen virtuellen Adressbereich von nicht zwischengespeichertem und zwischengespeichertem Speicher zu.

Syntax

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

Parameter

[in] NumberOfBytes

Gibt die Größe in Byte des bereichs an, der zugewiesen werden soll.

Rückgabewert

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

Bemerkungen

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

Nicht zwischengespeicherte Zuordnungen werden an einem integralen Vielfachen der Datencachezeilengröße des Prozessors ausgerichtet, um Cache- und Kohärenzprobleme zu vermeiden.

Die physischen Speicherseiten, die MmAllocateNonCachedMemory zurückgegeben werden, sind in der Regel keine zusammenhängenden Seiten.

Speicher, der MmAllocateNonCachedMemory zugeordnet wird, ist nicht initialisiert. Ein Kernelmodustreiber muss zuerst diesen Speicher null sein, wenn er für Software im Benutzermodus sichtbar macht (um zu vermeiden, dass potenziell privilegierte Inhalte verloren gehen).

Anforderungen

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

Siehe auch

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory