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 |