MmMapIoSpaceEx 함수(wdm.h)

MmMapIoSpaceEx 루틴은 지정된 페이지 보호를 사용하여 지정된 실제 주소 범위를 페이징되지 않은 시스템 공간에 매핑합니다.

구문

PVOID MmMapIoSpaceEx(
  [in] PHYSICAL_ADDRESS PhysicalAddress,
  [in] SIZE_T           NumberOfBytes,
  [in] ULONG            Protect
);

매개 변수

[in] PhysicalAddress

매핑할 I/O 범위의 시작 실제 주소를 지정합니다.

[in] NumberOfBytes

매핑할 바이트 수를 나타내는 0보다 큰 값을 지정합니다.

[in] Protect

매핑된 범위에 사용할 보호를 지정하는 비트에 플래그를 지정합니다. 호출자는 Protect 매개 변수에서 다음 플래그 비트 중 하나를 설정해야 합니다.

플래그 비트 의미
PAGE_READONLY 매핑된 범위는 쓸 수 없는 읽기 전용입니다.
PAGE_READWRITE 매핑된 범위를 읽거나 쓸 수 있습니다.
PAGE_EXECUTE 매핑된 범위는 실행할 수 있지만 읽거나 쓸 수는 없습니다.
PAGE_EXECUTE_READ 매핑된 범위는 실행하거나 읽을 수 있지만 쓸 수는 없습니다.
PAGE_EXECUTE_READWRITE 매핑된 범위를 실행, 읽기 또는 쓸 수 있습니다.
 

또한 호출자는 Protect 매개 변수에서 다음 선택적 플래그 비트 중 하나(둘 다 아님)를 설정할 수 있습니다.

플래그 비트 의미
PAGE_NOCACHE 캐시되지 않은 메모리를 지정합니다.
PAGE_WRITECOMBINE 쓰기 결합 메모리를 지정합니다(메모리는 프로세서에서 캐시하면 안 되지만 메모리에 대한 쓰기는 프로세서에서 결합할 수 있습니다).

반환 값

MmMapIoSpaceEx 는 범위에 대한 기본 실제 주소를 매핑하는 기본 가상 주소를 반환합니다. 범위를 매핑할 공간이 충분하지 않으면 NULL을 반환합니다.

설명

드라이버는 CM_PARTIAL_RESOURCE_DESCRIPTOR 구조에서 CmResourceTypeMemory 형식의 변환된 리소스를 수신하는 경우 디바이스를 시작하는 동안 이 루틴을 호출해야 합니다. MmMapIoSpaceEx는 리소스 목록에 반환된 실제 주소를 드라이버가 디바이스 레지스터에 액세스할 수 있는 가상 주소에 매핑합니다.

예를 들어 장기 I/O 버퍼를 할당하는 PIO 디바이스의 드라이버는 이 루틴을 호출하여 이러한 버퍼에 액세스할 수 있도록 하거나 디바이스 메모리에 액세스할 수 있도록 할 수 있습니다.

이 루틴을 사용하는 방법에 대한 자세한 내용은 Bus-Relative 주소를 가상 주소에 매핑을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 시작해서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=DISPATCH_LEVEL

추가 정보

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace