다음을 통해 공유


NtQueryVirtualMemory 함수(ntifs.h)

NtQueryVirtualMemory 루틴은 지정된 프로세스의 가상 주소 공간 내에 있는 페이지 영역의 상태, 보호 및 유형을 결정합니다.

통사론

__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryVirtualMemory(
  [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

쿼리할 페이지가 컨텍스트에 있는 프로세스에 대한 핸들입니다. NtCurrentProcess 매크로를 사용하여 현재 프로세스를 지정합니다.

[in, optional] BaseAddress

쿼리할 페이지 영역의 기본 주소입니다. 이 값은 다음 호스트-페이지 주소 경계로 반올림됩니다.

[in] MemoryInformationClass

정보를 검색할 메모리 정보 클래스입니다. 현재 지원되는 유일한 MEMORY_INFORMATION_CLASS 값은 MemoryBasicInformation.

[out] MemoryInformation

지정된 정보를 받는 버퍼에 대한 포인터입니다. 버퍼의 형식 및 콘텐츠는 MemoryInformationClass 매개 변수에 지정된 정보 클래스에 따라 달라집니다. MemoryBasicInformation 값이 MemoryInformationClass전달되면 MemoryInformation 매개 변수 값은 MEMORY_BASIC_INFORMATION 구조입니다.

[in] MemoryInformationLength

MemoryInformation 가리키는 버퍼의 길이(바이트)를 지정합니다.

[out, optional] ReturnLength

지정한 경우 MemoryInformation 버퍼에 배치된 바이트 수를 받는 선택적 포인터입니다.

반환 값

호출에 성공하면 STATUS_SUCCESS 반환합니다. 호출이 실패하면 가능한 오류 코드에는 다음이 포함됩니다.

반환 코드 묘사
STATUS_ACCESS_DENIED 호출자에게 요청된 작업을 수행할 수 있는 액세스 권한이 부족했습니다.
STATUS_ACCESS_VIOLATION 지정한 기본 주소가 잘못된 가상 주소입니다.
STATUS_INFO_LENGTH_MISMATCH MemoryInformation 버퍼는 MemoryInformationLength보다 큽합니다.
STATUS_INVALID_INFO_CLASS 지정한 MemoryInformationClass 매개 변수가 잘못되었습니다.
STATUS_INVALID_PARAMETER 지정된 기본 주소가 액세스 가능한 주소 범위를 벗어났습니다.

발언

ZwQueryVirtualMemory 지역 내의 첫 번째 페이지의 상태를 확인한 다음 전체 페이지 범위가 검색되거나 일치하지 않는 특성 집합이 있는 페이지가 나타날 때까지 기본 주소에서 위쪽으로 프로세스 주소 맵의 후속 항목을 검색합니다. 지역 특성, 일치하는 특성이 있는 페이지 영역의 길이 및 적절한 상태 값이 반환됩니다.

페이지의 전체 영역에 일치하는 특성 집합이 없으면 한 주소 예약 내의 하위 지역이 개별적으로 반환됩니다. *MemoryInformation.AllocationBase 값과 동일하고, 개별 크기는 *MemoryInformation.RegionSize, 주소 예약의 총 크기는 특정 *MemoryInformation.AllocationBase 값과 연결된 모든 *MemoryInformation.RegionSize 값을 합산하여 가져올 수 있습니다.

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

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

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000
대상 플랫폼 보편적
헤더 ntifs.h
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe

참고 항목

MEMORY_BASIC_INFORMATION

MEMORY_INFORMATION_CLASS

POWER_PLATFORM_INFORMATION

ZwQueryVirtualMemory