DXGKCB_MAP_MEMORY 콜백 함수(dispmprt.h)
DxgkCbMapMemory 함수는 변환된 물리적 주소 범위(디스플레이 어댑터에 할당된 메모리 리소스와 연결됨)를 시스템 공간 또는 사용자 모드 프로세스의 가상 주소 공간에 매핑합니다.
구문
DXGKCB_MAP_MEMORY DxgkcbMapMemory;
NTSTATUS DxgkcbMapMemory(
[in] HANDLE DeviceHandle,
[in] PHYSICAL_ADDRESS TranslatedAddress,
[in] ULONG Length,
[in] BOOLEAN InIoSpace,
[in] BOOLEAN MapToUserMode,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *VirtualAddress
)
{...}
매개 변수
[in] DeviceHandle
디스플레이 어댑터를 나타내는 핸들입니다. 디스플레이 미니포트 드라이버는 이전에 DxgkDdiStartDevice에 전달된 DXGKRNL_INTERFACE 구조체의 DeviceHandle 멤버에서 이 핸들을 얻었습니다.
[in] TranslatedAddress
매핑할 메모리 범위의 기본 변환된 실제 주소입니다. 디스플레이 미니포트 드라이버는 이전에 DxgkCbGetDeviceInformation을 호출하여 이 주소를 얻었습니다.
[in] Length
매핑할 범위의 크기(바이트)입니다.
[in] InIoSpace
범위가 I/O 공간(TRUE) 또는 메모리 공간(FALSE)에 있는지 여부를 지정하는 부울 값입니다.
[in] MapToUserMode
범위가 사용자 모드 공간 또는 시스템 공간에 매핑되는지 여부를 지정하는 부울 값입니다. TRUE이면 범위가 현재 프로세스의 (사용자 모드) 가상 주소 공간에 매핑됩니다. FALSE이면 범위가 시스템 공간에 매핑됩니다. InIoSpace가 TRUE이면 이 매개 변수는 무시됩니다.
[in] CacheType
매핑된 범위의 캐싱 동작을 지정하는 MEMORY_CACHING_TYPE 열거자입니다.
[out] VirtualAddress
매핑된 범위의 시작 부분에 대한 주소를 수신하는 변수에 대한 포인터입니다. 매핑된 범위에 액세스하는 방법은 InIoSpace 및 MapToUserMode의 값에 따라 달라집니다. 다음 표에는 매핑된 범위에 액세스하는 다양한 방법이 요약되어 있습니다.
InIoSpace 값 | MapToUserMode는 FALSE입니다. | MapToUserMode는 TRUE입니다. |
---|---|---|
FALSE | READ_REGISTER_X WRITE_REGISTER_X | 사용자 모드 코드는 일반 메모리 액세스를 수행합니다. |
TRUE | READ_PORT_X WRITE_PORT_X | 불가능 |
반환 값
DxgkCbMapMemory는 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 Ntstatus.h에 정의된 오류 코드 중 하나를 반환합니다.
설명
PHYSICAL_ADDRESS 데이터 형식은 Ntdef.h에 정의되어 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
대상 플랫폼 | 데스크톱 |
머리글 | dispmprt.h(Dispmprt.h 포함) |
IRQL | PASSIVE_LEVEL |