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) |