Funzione ZwFlushVirtualMemory (ntifs.h)

La routine ZwFlushVirtualMemory scarica un intervallo di indirizzi virtuali nello 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 risiedono le pagine da scaricare. Usare 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 ingresso, questo parametro specifica un puntatore al valore iniziale dell'indirizzo di base dell'area delle pagine da scaricare.

In caso di ritorno, 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.

Nella voce 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 da ZwFlushVirtualMemory. Se questo valore viene specificato come zero, l'intervallo mappato dall'indirizzo di base alla fine dell'intervallo viene scaricato.

In caso di ritorno, 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 degli errori possibili includono quanto segue:

Codice restituito Descrizione
STATUS_ACCESS_DENIED Il parametro ProcessHandle specificato non è stato un handle di processo valido.
STATUS_INSUFFICIENT_RESOURCES Le risorse aggiuntive richieste da questa funzione non erano disponibili.
STATUS_INVALID_PARAMETER_2 BaseAddress specificato è un indirizzo non valido all'interno dello spazio indirizzi virtuale o RegionSize non valido.
STATUS_INVALID_HANDLE Il parametro ProcessHandle specificato non è stato un handle di processo valido.
STATUS_NOT_MAPPED_VIEW Nessun descrittore dello spazio indirizzi virtuale può trovarsi per 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.

Commenti

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 la memoria nel file di dati.

Per altre informazioni sul supporto per la gestione della memoria per i driver in modalità kernel, vedere Gestione della memoria per i driver Windows.

Nota

Se la chiamata alla funzione ZwFlushVirtualMemory si verifica in modalità utente, è necessario usare il nome "NtFlushVirtualMemory" anziché "ZwFlushVirtualMemory".

Per le chiamate dai driver in modalità kernel, le versioni NtXxx e ZwXxx 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 Uso di nt e zw versioni delle routine di Servizi di sistema nativo.

Requisiti

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

Vedi anche

ZwAllocateVirtualMemory