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 |