MmAllocateMappingAddressEx 함수는 나중에 임의의 주소를 매핑하는 데 사용할 수 있는 요청된 길이의 시스템 PTE 매핑을 할당합니다.
통사론
PVOID MmAllocateMappingAddressEx(
[in] SIZE_T NumberOfBytes,
[in] ULONG PoolTag,
[in] ULONG Flags
);
매개 변수
[in] NumberOfBytes
매핑에 걸쳐 있는 최대 바이트 수를 제공합니다.
[in] PoolTag
버퍼를 식별하는 데 사용되는 4자 태그를 지정합니다. 각 할당 코드 경로에 대해 고유한 PoolTag 태그를 사용합니다. 풀 태그에 대한 설명은 ExAllocatePoolWithTag를 참조하세요.
[in] Flags
이 작업에 대한 플래그를 지정합니다. 이 매개 변수를 0으로 설정하거나 다음 플래그 비트 중 하나 이상의 비트 OR로 설정합니다.
| Flag | Meaning |
|---|---|
| MM_MAPPING_ADDRESS_DIVISIBLE | 매핑 주소가 매핑 크기로 나눌 수 있어야 임을 나타냅니다. 이 플래그는 매핑 주소가 특정 하드웨어 요구 사항에 부합하도록 하는 데 유용합니다. |
반환 값
작업이 성공하면 MmAllocateMappingAddressEx는 예약된 메모리 버퍼의 시작 부분에 대한 포인터를 반환합니다. 그렇지 않으면 NULL을 반환합니다.
비고
MmAllocateMappingAddressEx 는 추가 플래그 지원과 함께 확장된 버전의 MmAllocateMappingAddress 를 제공합니다. 이 함수는 MmMapLockedPagesWithReservedMapping을 사용하여 이후 매핑 작업에 사용할 수 있는 다양한 시스템 가상 주소 공간을 예약합니다.
이 함수는 실제 메모리를 할당하지 않습니다. 가상 주소 공간만 예약합니다. 예약된 메모리는 MmMapLockedPagesWithReservedMapping을 사용하여 매핑될 때까지 액세스할 수 없습니다.
호출자는 할당을 식별하기 위해 0이 아닌 PoolTag 를 제공해야 합니다.
더 이상 필요하지 않은 경우 MmFreeMappingAddress 를 사용하여 예약된 주소 범위를 해제해야 합니다.
매우 큰 할당(>= 4GB 페이지)이 실패합니다. 시스템 PTE를 사용할 수 없는 경우 함수가 실패할 수 있습니다.
요구 사항
| 요구 | 값 |
|---|---|
| 지원되는 최소 클라이언트 | Windows 10 버전 2004 |
| 헤더 | wdm.h |
| IRQL | <=APC_LEVEL |