Função ZwFlushVirtualMemory (ntifs.h)
A rotina ZwFlushVirtualMemory libera um intervalo de endereços virtuais dentro do espaço de endereço virtual de um processo especificado que mapeia para um arquivo de dados de volta para o arquivo de dados se eles tiverem sido modificados.
Sintaxe
NTSYSAPI NTSTATUS ZwFlushVirtualMemory(
[in] HANDLE ProcessHandle,
[in, out] PVOID *BaseAddress,
[in, out] PSIZE_T RegionSize,
[out] PIO_STATUS_BLOCK IoStatus
);
Parâmetros
[in] ProcessHandle
Um identificador aberto para o processo em cujo contexto as páginas a serem liberadas residem. Use a macro NtCurrentProcess, definida em Ntddk.h, para especificar o processo atual.
[in, out] BaseAddress
Um ponteiro para o endereço base do intervalo de endereços virtuais.
Na entrada, esse parâmetro especifica um ponteiro para o valor inicial do endereço base da região das páginas a serem liberadas.
No retorno, esse parâmetro fornece um ponteiro para uma variável que receberá o endereço base da região liberada.
[in, out] RegionSize
O tamanho, em bytes, do intervalo de endereços virtuais.
Na entrada, esse parâmetro especifica um ponteiro para o valor inicial do tamanho em bytes da região das páginas a serem liberadas para o disco. Esse argumento é arredondado para o próximo limite de tamanho de página de host pelo
No retorno, esse parâmetro especifica um ponteiro para uma variável que receberá o tamanho real em bytes da região liberada das páginas.
[out] IoStatus
Um ponteiro para uma estrutura IO_STATUS_BLOCK. Essa estrutura é onde o valor do status de E/S da última tentativa de operação de E/S é armazenado na saída.
Valor de retorno
ZwFlushVirtualMemory retorna STATUS_SUCCESS ou um código de status de erro. Os códigos de status de erro possíveis incluem o seguinte:
Código de retorno | Descrição |
---|---|
STATUS_ACCESS_DENIED | O parâmetro ProcessHandle especificado não era um identificador de processo válido. |
STATUS_INSUFFICIENT_RESOURCES | Recursos adicionais exigidos por essa função não estavam disponíveis. |
STATUS_INVALID_PARAMETER_2 | O BaseAddress especificado era um endereço inválido dentro do espaço de endereço virtual ou o RegionSize era inválido. |
STATUS_INVALID_HANDLE | O parâmetro ProcessHandle especificado não era um identificador de processo válido. |
STATUS_NOT_MAPPED_VIEW | Não foi possível localizar nenhum descritor de espaço de endereço virtual para o BaseAddressfornecido. |
STATUS_PROCESS_IS_TERMINATING | O processo e o espaço de endereço virtual associado foram excluídos. |
STATUS_FILE_LOCK_CONFLICT | O sistema de arquivos encontrou um conflito de bloqueio. |
Observações
Essa rotina aceita, como parâmetros de entrada, um intervalo de endereços na memória virtual que mapeiam um arquivo de dados. Se alguma memória nesse intervalo tiver sido modificada desde que o arquivo foi copiado para a memória, a rotina libera essa memória de volta para o arquivo de dados.
Para obter mais informações sobre o suporte ao gerenciamento de memória para drivers no modo kernel, consulte Gerenciamento de Memória para Drivers do Windows.
Nota
Se a chamada para a função ZwFlushVirtualMemory ocorrer no modo de usuário, você deverá usar o nome "NtFlushVirtualMemory" em vez de "ZwFlushVirtualMemory".
Para chamadas de drivers no modo kernel, as versões NtXxx e Zwxxx versões de uma rotina dos Serviços de Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas de serviços do sistema nativo.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP |
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |