Condividi tramite


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 definita in Ntddk.h per specificare il processo corrente.

[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 BaseAddress specificato non è valido all'interno dello spazio indirizzi virtuale o il RegionSize non è valido.
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

Vedere anche

ZwAllocateVirtualMemory