ZwFlushVirtualMemory-Funktion (ntifs.h)

Die ZwFlushVirtualMemory-Routine löscht einen Bereich von virtuellen Adressen innerhalb des virtuellen Adressraums eines angegebenen Prozesses, der einer Datendatei zugeordnet wird, wenn sie geändert wurden.

Syntax

NTSYSAPI NTSTATUS ZwFlushVirtualMemory(
  [in]      HANDLE           ProcessHandle,
  [in, out] PVOID            *BaseAddress,
  [in, out] PSIZE_T          RegionSize,
  [out]     PIO_STATUS_BLOCK IoStatus
);

Parameter

[in] ProcessHandle

Ein geöffnetes Handle für den Prozess, in dessen Kontext sich die zu leerenden Seiten befinden. Verwenden Sie das in Ntddk.h definierte NtCurrentProcess-Makro , um den aktuellen Prozess anzugeben.

[in, out] BaseAddress

Ein Zeiger auf die Basisadresse des virtuellen Adressbereichs.

Bei der Eingabe gibt dieser Parameter einen Zeiger auf den Anfangswert der Basisadresse des Bereichs der zu leerenden Seiten an.

Bei der Rückgabe stellt dieser Parameter einen Zeiger auf eine Variable bereit, die die Basisadresse des geleerten Bereichs empfängt.

[in, out] RegionSize

Die Größe des virtuellen Adressbereichs in Bytes.

Bei der Eingabe gibt dieser Parameter einen Zeiger auf den Anfangswert der Größe in Byte des Bereichs von Seiten an, der auf den Datenträger geleert werden soll. Dieses Argument wird durch die ZwFlushVirtualMemory auf die nächste Hostseitengrößengrenze aufgerundet. Wenn dieser Wert als null angegeben wird, wird der zugeordnete Bereich von der Basisadresse bis zum Ende des Bereichs geleert.

Bei der Rückgabe gibt dieser Parameter einen Zeiger auf eine Variable an, die die tatsächliche Größe des geleerten Seitenbereichs in Byte empfängt.

[out] IoStatus

Ein Zeiger auf eine IO_STATUS_BLOCK-Struktur . In dieser Struktur wird der Wert des E/A-status für den letzten E/A-Vorgang in der Ausgabe gespeichert.

Rückgabewert

ZwFlushVirtualMemory gibt entweder STATUS_SUCCESS oder einen Fehler status Code zurück. Mögliche Fehler status Codes:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED Der angegebene ProcessHandle-Parameter war kein gültiges Prozesshandle.
STATUS_INSUFFICIENT_RESOURCES Zusätzliche Ressourcen, die für diese Funktion erforderlich waren, waren nicht verfügbar.
STATUS_INVALID_PARAMETER_2 Die angegebene BaseAddress war eine ungültige Adresse innerhalb des virtuellen Adressraums, oder die RegionSize war ungültig.
STATUS_INVALID_HANDLE Der angegebene ProcessHandle-Parameter war kein gültiges Prozesshandle.
STATUS_NOT_MAPPED_VIEW Für die angegebene BaseAddress konnte kein virtueller Adressraumdeskriptor gefunden werden.
STATUS_PROCESS_IS_TERMINATING Der Prozess und der zugeordnete virtuelle Adressraum wurden gelöscht.
STATUS_FILE_LOCK_CONFLICT Im Dateisystem ist ein Sperrkonflikt aufgetreten.

Hinweise

Diese Routine akzeptiert als Eingabeparameter einen Adressbereich im virtuellen Speicher, der eine Datendatei ordnet. Wenn arbeitsspeicher in diesem Bereich geändert wurde, seit die Datei in den Arbeitsspeicher kopiert wurde, leert die Routine diesen Speicher wieder in die Datendatei.

Weitere Informationen zur Unterstützung der Speicherverwaltung für Kernelmodustreiber finden Sie unter Arbeitsspeicherverwaltung für Windows-Treiber.

Hinweis

Wenn der Aufruf der ZwFlushVirtualMemory-Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtFlushVirtualMemory" anstelle von "ZwFlushVirtualMemory" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, wie sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der systemeigenen Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Weitere Informationen

ZwAllocateVirtualMemory