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 이면 범위가 시스템 공간에 매핑됩니다. InIoSpaceTRUE 이면 이 매개 변수는 무시됩니다.

[in] CacheType

매핑된 범위의 캐싱 동작을 지정하는 MEMORY_CACHING_TYPE 열거자입니다.

[out] VirtualAddress

매핑된 범위의 시작 부분의 주소를 받는 변수에 대한 포인터입니다. 매핑된 범위에 액세스하는 방법은 InIoSpaceMapToUserMode 의 값에 따라 달라집니다. 다음 표에는 매핑된 범위에 액세스하는 다양한 방법이 요약되어 있습니다.

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

참고 항목

MEMORY_CACHING_TYPE