Freigeben über


ZwFlushVirtualMemory-Funktion (ntifs.h)

Die ZwFlushVirtualMemory Routine löscht einen Bereich virtueller Adressen innerhalb des virtuellen Adressraums eines angegebenen Prozesses, der einer Datendatei bei Änderung zugeordnet ist.

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 dem sich die zu leerenden Seiten befinden. Verwenden Sie das NtCurrentProcess Makro, das in Ntddk.h definiert ist, 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 Seitenbereichs an, der geleert werden soll.

Bei 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 Seitenbereichs an, der auf den Datenträger geleert werden soll. Dieses Argument wird durch die ZwFlushVirtualMemoryauf die nächste Grenze der Hostseitengröße aufgerundet. Wenn dieser Wert als Null angegeben wird, wird der zugeordnete Bereich von der Basisadresse bis zum Ende des Bereichs geleert.

Bei Rückgabe gibt dieser Parameter einen Zeiger auf eine Variable an, die die tatsächliche Größe in Byte des geleerten Seitenbereichs 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 versuchten E/A-Vorgang in der Ausgabe gespeichert.

Rückgabewert

ZwFlushVirtualMemory gibt entweder STATUS_SUCCESS oder einen Fehlerstatuscode zurück. Mögliche Fehlerstatuscodes sind:

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

Bemerkungen

Diese Routine akzeptiert als Eingabeparameter einen Adressbereich im virtuellen Speicher, der eine Datendatei zuordnen soll. Wenn speicher in diesem Bereich seit dem Kopieren der Datei in den Speicher geändert wurde, löscht die Routine diesen Speicher wieder in die Datendatei.

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

Anmerkung

Wenn der Aufruf der ZwFlushVirtualMemory Funktion im Benutzermodus auftritt, 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 behandeln und interpretieren. Weitere Informationen zur Beziehung zwischen den NtXxx und ZwXxx- Versionen einer Routine finden Sie unter Using Nt and Zw Versions of the Native System Services Routines.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL

Siehe auch

ZwAllocateVirtualMemory