Поделиться через


Функция 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 Указанный BaseAddress был недопустимым адресом в виртуальном адресном пространстве или недопустимым RegionSize.
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

См. также

ZwAllocateVirtualMemory