ZwQueryVirtualMemory 함수(ntifs.h)
ZwQueryVirtualMemory 루틴은 주체 프로세스의 가상 주소 공간 내에 있는 페이지 영역의 상태, 보호 및 유형을 결정합니다.
통사론
NTSYSAPI NTSTATUS ZwQueryVirtualMemory(
[in] HANDLE ProcessHandle,
[in, optional] PVOID BaseAddress,
[in] MEMORY_INFORMATION_CLASS MemoryInformationClass,
[out] PVOID MemoryInformation,
[in] SIZE_T MemoryInformationLength,
[out, optional] PSIZE_T ReturnLength
);
매개 변수
[in] ProcessHandle
쿼리할 페이지가 컨텍스트에 있는 프로세스에 대한 핸들입니다. ZwCurrentProcess 매크로를 사용하여 현재 프로세스를 지정합니다.
[in, optional] BaseAddress
쿼리할 페이지 영역의 기본 주소입니다. 이 값은 다음 호스트 페이지 주소 경계로 반올림됩니다.
[in] MemoryInformationClass
정보를 검색할 메모리 정보 클래스입니다. 현재 지원되는 유일한 MEMORY_INFORMATION_CLASS 값은 MemoryBasicInformation.
[out] MemoryInformation
지정된 정보를 받는 버퍼에 대한 포인터입니다. 버퍼의 형식과 콘텐츠는 MemoryInformationClass 매개 변수에 지정된 정보 클래스에 따라 달라집니다. MemoryBasicInformation
[in] MemoryInformationLength
메모리 정보 버퍼의 길이(바이트)를 지정합니다.
[out, optional] ReturnLength
지정된 경우 메모리 정보 버퍼에 배치된 바이트 수를 받는 선택적 포인터입니다.
반환 값
호출에 성공하면 STATUS_SUCCESS 반환합니다. 호출이 실패하면 가능한 오류 코드에는 다음이 포함됩니다.
반환 코드 | 묘사 |
---|---|
STATUS_INVALID_PARAMETER | 지정된 기본 주소가 액세스 가능한 주소 범위를 벗어났습니다. |
STATUS_ACCESS_DENIED | 호출자에게 요청된 작업을 수행할 수 있는 액세스 권한이 부족했습니다. |
STATUS_INFO_LENGTH_MISMATCH | MemoryInformation 버퍼는 MemoryInformationLength보다 큽합니다. |
STATUS_INVALID_INFO_CLASS | MemoryBasicInformation 이외의 값이 MemoryInformationClass 매개 변수에 전달되었습니다. |
발언
ZwQueryVirtualMemory 지역 내의 첫 번째 페이지의 상태를 확인한 다음 전체 페이지 범위가 검색되거나 일치하지 않는 특성 집합이 있는 페이지가 나타날 때까지 기본 주소에서 위쪽으로 프로세스 주소 맵의 후속 항목을 검색합니다. 지역 특성, 일치하는 특성이 있는 페이지 영역의 길이 및 적절한 상태 값이 반환됩니다.
페이지의 전체 영역에 일치하는 특성 집합이 없는 경우 ReturnLength 매개 변수 값을 사용하여 검사되지 않은 페이지 영역의 주소와 길이를 계산할 수 있습니다.
NtQueryVirtualMemory 및 ZwQueryVirtualMemory 동일한 Windows 네이티브 시스템 서비스 루틴의 두 가지 버전입니다.
커널 모드 드라이버의 호출의 경우 windows Native System Services 루틴의 NtXxx**** 및 ZwXxx**** 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |