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 값이 MemoryInformationClass에 전달되면 MemoryInformation 매개 변수 값은 MEMORY_BASIC_INFORMATION 구조입니다.

[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 매개 변수 값을 사용하여 검사되지 않은 페이지 영역의 주소와 길이를 계산할 수 있습니다.

NtQueryVirtualMemoryZwQueryVirtualMemory 는 동일한 Windows 네이티브 시스템 서비스 루틴의 두 버전입니다.

커널 모드 드라이버의 호출의 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxx**** 및 ZwXxx**** 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
대상 플랫폼 유니버설
헤더 ntifs.h
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe

추가 정보

POWER_PLATFORM_INFORMATION