다음을 통해 공유


MmMapIoSpace 함수(wdm.h)

MmMapIoSpace 루틴은 지정된 실제 주소 범위를 페이지가 지정되지 않은 시스템 공간에 매핑합니다.

구문

PVOID MmMapIoSpace(
  [in] PHYSICAL_ADDRESS    PhysicalAddress,
  [in] SIZE_T              NumberOfBytes,
  [in] MEMORY_CACHING_TYPE CacheType
);

매개 변수

[in] PhysicalAddress

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

[in] NumberOfBytes

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

[in] CacheType

실제 주소 범위를 매핑하는 데 사용할 캐시 특성을 나타내는 MEMORY_CACHING_TYPE 값을 지정합니다.

반환 값

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

설명

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

MmMapIoSpace 는 잠겨 있는 페이지(MDL 또는 I/O 공간의 잠긴 페이지에 속함)에서만 사용해야 합니다. 그렇지 않으면 메모리 소유자가 이를 해제할 수 있습니다(또는 메모리를 페이징/아웃 등으로 페이징할 수 있음).

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

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

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

추가 정보

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace