Функция ZwFlushVirtualMemory (ntifs.h)
ZwFlushVirtualMemory обычно очищает диапазон виртуальных адресов в пределах виртуального адресного пространства указанного процесса, который сопоставляется с файлом данных обратно с файлом данных, если они были изменены.
Синтаксис
NTSYSAPI NTSTATUS ZwFlushVirtualMemory(
[in] HANDLE ProcessHandle,
[in, out] PVOID *BaseAddress,
[in, out] PSIZE_T RegionSize,
[out] PIO_STATUS_BLOCK IoStatus
);
Параметры
[in] ProcessHandle
Открытый дескриптор процесса, в контексте которого страницы должны находиться. Используйте макрос NtCurrentProcess, определенный в Ntddk.h, чтобы указать текущий процесс.
[in, out] BaseAddress
Указатель на базовый адрес диапазона виртуальных адресов.
При входе этот параметр указывает указатель на начальное значение базового адреса региона страниц на очистку.
При возврате этот параметр предоставляет указатель на переменную, которая получит базовый адрес области очистки.
[in, out] RegionSize
Размер в байтах диапазона виртуальных адресов.
При входе этот параметр указывает указатель на начальное значение размера в байтах области страниц для очистки на диск. Этот аргумент округляется до следующей границы размера страницы узла ZwFlushVirtualMemory. Если это значение указано как нулевое, сопоставленный диапазон от базового адреса до конца диапазона очищается.
При возврате этот параметр указывает указатель на переменную, которая получит фактический размер в байтах области промытых страниц.
[out] IoStatus
Указатель на структуру IO_STATUS_BLOCK. Эта структура определяет, где значение состояния ввода-вывода для последней попытки операции ввода-вывода хранится в выходных данных.
Возвращаемое значение
ZwFlushVirtualMemory возвращает либо STATUS_SUCCESS, либо код состояния ошибки. Возможные коды состояния ошибок включают следующие:
Возвращаемый код | Описание |
---|---|
STATUS_ACCESS_DENIED | Указанный параметр ProcessHandle не является допустимым дескриптором процесса. |
STATUS_INSUFFICIENT_RESOURCES | Дополнительные ресурсы, необходимые этой функции, недоступны. |
STATUS_INVALID_PARAMETER_2 | Указанный |
STATUS_INVALID_HANDLE | Указанный параметр ProcessHandle не является допустимым дескриптором процесса. |
STATUS_NOT_MAPPED_VIEW | Дескриптор виртуального адресного пространства не может быть расположен для предоставленного BaseAddress. |
STATUS_PROCESS_IS_TERMINATING | Процесс и связанное виртуальное адресное пространство были удалены. |
STATUS_FILE_LOCK_CONFLICT | Файловая система столкнулась с конфликтом блокировки. |
Замечания
Эта подпрограмма принимает в качестве входных параметров диапазон адресов в виртуальной памяти, сопоставленных с файлом данных. Если память в этом диапазоне была изменена после копирования файла в память, подпрограмма очищает эту память обратно в файл данных.
Дополнительные сведения о поддержке управления памятью для драйверов в режиме ядра см. в разделе Управление памятью для драйверов Windows.
Заметка
Если вызов функции ZwFlushVirtualMemory происходит в пользовательском режиме, следует использовать имя "NtFlushVirtualMemory" вместо "ZwFlushVirtualMemory".
Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |