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 é mapeado 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 ZwFlushVirtualMemory. Se esse valor for especificado como zero, o intervalo mapeado do endereço base até o final do intervalo será liberado.
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 da status de E/S da última tentativa de operação de E/S é armazenado na saída.
Retornar valor
ZwFlushVirtualMemory retorna STATUS_SUCCESS ou um código de status de erro. Possíveis códigos de status de erro 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 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 | Nenhum descritor de espaço de endereço virtual pode estar localizado para o BaseAddress fornecido. |
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. |
Comentários
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 liberará 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.
Observação
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 de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services 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 Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de