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
플러시할 페이지가 컨텍스트에 있는 프로세스에 대한 열린 핸들입니다. Ntddk.h에 정의된 NtCurrentProcess 매크로를 사용하여 현재 프로세스를 지정합니다.
[in, out] BaseAddress
가상 주소 범위의 기본 주소에 대한 포인터입니다.
항목에서 이 매개 변수는 플러시할 페이지 영역의 기본 주소 초기 값에 대한 포인터를 지정합니다.
반환 시 이 매개 변수는 플러시된 지역의 기본 주소를 받을 변수에 대한 포인터를 제공합니다.
[in, out] RegionSize
가상 주소 범위의 크기(바이트)입니다.
항목에서 이 매개 변수는 디스크로 플러시할 페이지 영역의 크기(바이트)에 대한 포인터를 지정합니다. 이 인수는 ZwFlushVirtualMemory다음 호스트 페이지 크기 경계로 반올림됩니다. 이 값을 0으로 지정하면 기본 주소에서 범위 끝까지 매핑된 범위가 플러시됩니다.
반환 시 이 매개 변수는 플러시된 페이지 영역의 실제 크기(바이트)를 받는 변수에 대한 포인터를 지정합니다.
[out] IoStatus
IO_STATUS_BLOCK 구조체에 대한 포인터입니다. 이 구조체는 마지막으로 시도한 I/O 작업의 I/O 상태 값이 출력에 저장되는 위치입니다.
반환 값
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 드라이버
메모
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
PASSIVE_LEVEL |