다음을 통해 공유


MmSecureVirtualMemoryEx 함수(ntddk.h)

이 루틴은 요청된 주소 범위를 검색하고 지정된 주소 범위를 보호가 더 제한적이고 삭제되지 않도록 보호합니다.

구문

HANDLE MmSecureVirtualMemoryEx(
  PVOID  Address,
  SIZE_T Size,
  ULONG  ProbeMode,
  ULONG  Flags
);

매개 변수

Address

프로브 및 보안을 위한 기본 주소에 대한 포인터입니다.

Size

보호할 범위의 크기(바이트)를 지정합니다.

ProbeMode

허용되는 가장 제한적인 페이지 보호를 지정합니다. PAGE_READWRITE 사용하여 주소 범위가 읽기 가능하고 쓰기 가능한 상태로 유지되도록 지정하거나 PAGE_READONLY 사용하여 주소 범위만 읽을 수 있도록 지정합니다.

ProbeMode 의미
PAGE_READWRITE 보호를 PAGE_NOACCESS 또는 PAGE_READONLY 변경할 수 없습니다. 다른 모든 보호 변경이 허용됩니다.
PAGE_READONLY 보호를 PAGE_NOACCESS 변경할 수 없습니다. 다른 모든 보호 변경이 허용됩니다.

Flags

다음 플래그 중 하나 이상을 지정합니다.

플래그 설명
MM_SECURE_EXCLUSIVE 보안은 문제의 VAD에 이미 고정된 다른 보안이 없는 경우에만 성공합니다.
MM_SECURE_NO_CHANGE 적용된 후에는 제공된 가상 주소 지역에 대한 보호 변경이 허용되지 않습니다. 프로세스가 종료되는 경우에도 지역을 삭제할 수 있습니다.
MM_SECURE_USER_MODE_ONLY 이 보안에서 지정한 보호는 보호를 변경하려는 사용자 모드의 후속 호출에만 적용됩니다(커널 모드 호출자는 이 보안을 무시합니다).
MM_SECURE_NO_INHERIT 프로세스가 복제된 경우 부모 프로세스와 달리 자식 프로세스의 VAD는 보호되지 않습니다.

반환 값

범위의 보안 해제에만 사용할 핸들과 유사한 값을 반환합니다.

보호 문제, 커밋되지 않은 메모리 또는 잘못된 매개 변수로 인해 범위를 잠글 수 없는 경우 이 루틴은 NULL을 반환합니다.

설명

제공된 보기에서 보호 변경이 허용되지 않도록 MM_SECURE_NO_CHANGE 지정해야 하는 경우 MmSecureVirtualMemoryEx 대신 MmSecureVirtualMemoryEx를 사용합니다.

이 함수의 반환 값은 MmUnsecureVirtualMemory에서만 사용할 수 있습니다. 드라이버는 해당 루틴을 호출하여 범위를 정상 상태로 반환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1809
머리글 ntddk.h
IRQL APC_LEVEL

추가 정보