Funzione ZwFlushVirtualMemory (ntifs.h)
Il ZwFlushVirtualMemory routine scarica un intervallo di indirizzi virtuali all'interno dello spazio indirizzi virtuale di un processo specificato che esegue il mapping a un file di dati al file di dati se sono stati modificati.
Sintassi
NTSYSAPI NTSTATUS ZwFlushVirtualMemory(
[in] HANDLE ProcessHandle,
[in, out] PVOID *BaseAddress,
[in, out] PSIZE_T RegionSize,
[out] PIO_STATUS_BLOCK IoStatus
);
Parametri
[in] ProcessHandle
Handle aperto per il processo nel cui contesto si trovano le pagine da scaricare. Utilizzare la macro NtCurrentProcess
[in, out] BaseAddress
Puntatore all'indirizzo di base dell'intervallo di indirizzi virtuali.
In caso di immissione, questo parametro specifica un puntatore al valore iniziale dell'indirizzo di base dell'area delle pagine da scaricare.
In caso di restituzione, questo parametro fornisce un puntatore a una variabile che riceverà l'indirizzo di base dell'area scaricata.
[in, out] RegionSize
Dimensioni, in byte, dell'intervallo di indirizzi virtuali.
In ingresso, questo parametro specifica un puntatore al valore iniziale delle dimensioni in byte dell'area delle pagine da scaricare su disco. Questo argomento viene arrotondato fino al limite di dimensioni della pagina host successivo in base al ZwFlushVirtualMemory. Se questo valore viene specificato come zero, viene scaricato l'intervallo mappato dall'indirizzo di base alla fine dell'intervallo.
In caso di restituzione, questo parametro specifica un puntatore a una variabile che riceverà le dimensioni effettive in byte dell'area scaricata delle pagine.
[out] IoStatus
Puntatore a una struttura IO_STATUS_BLOCK. Questa struttura è la posizione in cui il valore dello stato di I/O per l'ultima operazione di I/O tentata viene archiviato nell'output.
Valore restituito
ZwFlushVirtualMemory restituisce STATUS_SUCCESS o un codice di stato di errore. I codici di stato di errore possibili includono quanto segue:
Codice restituito | Descrizione |
---|---|
STATUS_ACCESS_DENIED | Il parametro ProcessHandle specificato non è un handle di processo valido. |
STATUS_INSUFFICIENT_RESOURCES | Risorse aggiuntive richieste da questa funzione non erano disponibili. |
STATUS_INVALID_PARAMETER_2 | Il |
STATUS_INVALID_HANDLE | Il parametro ProcessHandle specificato non è un handle di processo valido. |
STATUS_NOT_MAPPED_VIEW | Non è possibile individuare alcun descrittore dello spazio degli indirizzi virtuale per il BaseAddress fornito. |
STATUS_PROCESS_IS_TERMINATING | Il processo e lo spazio indirizzi virtuale associato sono stati eliminati. |
STATUS_FILE_LOCK_CONFLICT | Il file system ha rilevato un conflitto di blocco. |
Osservazioni
Questa routine accetta, come parametri di input, un intervallo di indirizzi nella memoria virtuale che esegue il mapping di un file di dati. Se una memoria in questo intervallo è stata modificata dopo la copia del file in memoria, la routine scarica nuovamente la memoria nel file di dati.
Per altre informazioni sul supporto della gestione della memoria per i driver in modalità kernel, vedere Memory Management for Windows Drivers.
Nota
Se la chiamata alla funzione ZwFlushVirtualMemory viene eseguita in modalità utente, è necessario usare il nome "NtFlushVirtualMemory" anziché "ZwFlushVirtualMemory".
Per le chiamate da driver in modalità kernel, le NtXxx e ZwXxx versioni di una routine di Windows Native System Services possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP |
piattaforma di destinazione | Universale |
intestazione |
ntifs.h (include Ntifs.h) |
libreria |
NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |