다음을 통해 공유


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

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

InIoSpace의 값 MapToUserMode가 FALSE임 MapToUserMode는 TRUE입니다.
FALSE READ_REGISTER_X WRITE_REGISTER_X 사용자 모드 코드는 일반 메모리 액세스를 수행합니다.
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