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 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
| 대상 플랫폼 | 데스크톱 |
| 헤더 | dispmprt.h(Dispmprt.h 포함) |
| IRQL | PASSIVE_LEVEL |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기