다음을 통해 공유


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
대상 플랫폼 데스크톱
머리글 dispmprt.h(Dispmprt.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

MEMORY_CACHING_TYPE