MapUserPhysicalPagesScatter-Funktion (winbase.h)

Ordnet zuvor physische Speicherseiten an einer angegebenen Adresse in einer AWE-Region ( Address Windowing Extensions ) zu.

64-Bit-Windows auf Itanium-basierten Systemen: Aufgrund der unterschiedlichen Seitengrößen wird MapUserPhysicalPagesScatter für 32-Bit-Anwendungen nicht unterstützt.

Syntax

BOOL MapUserPhysicalPagesScatter(
  [in] PVOID      *VirtualAddresses,
  [in] ULONG_PTR  NumberOfPages,
  [in] PULONG_PTR PageArray
);

Parameter

[in] VirtualAddresses

Ein Zeiger auf ein Array von Startadressen der Speicherbereiche, die neu zugeordnet werden sollen.

Jeder Eintrag in VirtualAddresses muss sich innerhalb des Adressbereichs befinden, den die VirtualAlloc-Funktion zurückgibt, wenn die AWE-Region ( Address Windowing Extensions ) zugeordnet wird. Der Wert in NumberOfPages gibt die Größe des Arrays an. Einträge können aus mehreren AWE-Regionen (Address Windowing Extensions) stammen.

[in] NumberOfPages

Die Größe des physischen Arbeitsspeichers und des virtuellen Adressraums, für den Übersetzungen in Seiten erstellt werden sollen.

Das Array bei VirtualAddresses gibt den virtuellen Adressbereich an.

[in] PageArray

Ein Zeiger auf ein Array von Werten, das angibt, wie jede entsprechende Seite in VirtualAddresses behandelt werden soll.

Ein 0 (null) gibt an, dass der entsprechende Eintrag in VirtualAddresses nicht zugeordnet werden soll, und dass jeder nichtzero-Wert, den er hat, zugeordnet werden soll.

Wenn dieser Parameter NULL ist, wird jede Adresse im VirtualAddresses-Array nicht zugeordnet.

Der Wert in NumberOfPages gibt die Größe des Arrays an.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE, und die Funktion ordnet die Zuordnung nicht zu oder hebt die Zuordnung nicht auf – partielle oder anderweitige. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die physischen Seiten sind möglicherweise nicht zugeordnet, aber sie werden nicht freigegeben. Sie müssen FreeUserPhysicalPages aufrufen, um die physischen Seiten freizugeben.

Sie können eine beliebige Anzahl von Seiten des physischen Arbeitsspeichers angeben, aber der Arbeitsspeicher kann sich nicht außerhalb des virtuellen Adressraums erweitern, der von VirtualAlloc zugewiesen wird. Vorhandene Adresszuordnungen werden automatisch mit den neuen Übersetzungen überschrieben, und die alten Übersetzungen werden nicht zugeordnet.

Sie können keine physischen Speicherseiten außerhalb des bereichs zuordnen, der in AllocateUserPhysicalPages angegeben ist. Sie können mehrere Regionen gleichzeitig zuordnen, aber sie können sich nicht überlappen.

Physische Seiten können sich an jeder physischen Adresse befinden, aber machen Sie keine Annahmen über die Kontinuität der physischen Seiten.

In einer Multiprozessorumgebung behält diese Funktion die Kohärenz des Hardwareübersetzungspuffers bei. Wenn sie von dieser Funktion zurückgegeben werden, wird garantiert, dass alle Threads auf allen Prozessoren die richtige Zuordnung sehen.

Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie das _WIN32_WINNT Makro als 0x0500 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Adressfenstererweiterungen

AllocateUserPhysicalPages

FreeUserPhysicalPages

MapUserPhysicalPages

Speicherverwaltungsfunktionen