VideoPortGetDeviceBase 함수(video.h)

VideoPortGetDeviceBase 함수는 버스 상대 디바이스 메모리 또는 I/O 주소의 범위를 시스템 공간에 매핑합니다.

구문

VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
  PVOID            HwDeviceExtension,
  PHYSICAL_ADDRESS IoAddress,
  ULONG            NumberOfUchars,
  UCHAR            InIoSpace
);

매개 변수

HwDeviceExtension

미니포트 드라이버의 디바이스 확장에 대한 포인터입니다.

IoAddress

매핑할 범위의 기본 실제 주소입니다. VideoPortGetDeviceData, VideoPortGetRegistryParameters 또는 VideoPortGetAccessRanges를 호출하여 이 버스 상대 값을 가져옵니다. 그렇지 않으면 이 값은 디바이스 메모리 또는 I/O 포트에 대해 드라이버 제공 기본 주소입니다.

VideoPortVerifyAccessRanges 또는 VideoPortGetAccessRanges에 대한 이전 호출을 통해 레지스트리에서 IoAddressNumberOfUchars에 의해 설명된 범위를 성공적으로 클레임해야 합니다.

NumberOfUchars

매핑할 IoAddress부터 시작하는 바이트 수입니다.

InIoSpace

IoAddress 범위의 위치입니다. 이 매개 변수는 다음 플래그 또는 이러한 플래그의 호환 가능한 ORed 조합 중 하나일 수 있습니다.

플래그 의미
VIDEO_MEMORY_SPACE_DENSE 사용되지 않습니다.
VIDEO_MEMORY_SPACE_IO 주소 범위는 메모리 공간이 아닌 I/O 공간에 있습니다.
VIDEO_MEMORY_SPACE_MEMORY 주소 범위는 I/O 공간이 아닌 메모리 공간에 있습니다.
VIDEO_MEMORY_SPACE_P6CACHE 프로세서는 일련의 쓰기 작업을 집계하고 캐시 줄로 보내고 나중에 캐시를 플러시합니다. 이 플래그는 VIDEO_MEMORY_SPACE_IO 설정되지 않은 경우에만 의미가 있습니다. 비디오 메모리를 WC(쓰기 결합)로 지정합니다. WC 캐싱에 대한 자세한 내용은 비디오 미니포트 드라이버의 쓰기 결합 메모리 웹 사이트 문서를 참조하세요.

반환 값

성공하면 VideoPortGetDeviceBase 는 매핑의 기본 가상 주소를 반환합니다. 지정된 버스 상대 범위를 매핑할 수 없는 경우 VideoPortGetDeviceBaseNULL을 반환합니다.

설명

VideoPortMapMemory 및 VideoPortUnmapMemory를 제외하고 매핑된 가상 주소를 VideoPortReadXxx, VideoPortWriteXxxVideoPortXxx메모리 함수에 전달할 수 있습니다.

미니포트 드라이버의 HwVidFindAdapter, HwVidQueryDeviceCallback 또는 HwVidQueryNamedValueCallback 함수에서 VideoPortGetDeviceBase 호출해야 합니다.

HwVidFindAdapter가 컨트롤을 반환하기 전에 나중에 사용할 수 있도록 VideoPortGetDeviceBase에서 반환된 매핑된 기본 주소와 어댑터의 디바이스 확장(HwDeviceExtension이 가리키는)에 매핑된 액세스 범위의 길이를 모두 저장해야 합니다.

매핑된 주소 공간에 대한 액세스는 다음 규칙을 따라야 합니다.

  • 주소가 I/O 공간에 있음을 나타내는 inIoSpace 가 VIDEO_MEMORY_SPACE_IO 경우 이 함수가 반환하는 가상 주소는 VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxxVideoPortWritePortBufferXxx 함수로 전달되어야 합니다. 여기서 XxxUchar, Ushort 또는 Ulong입니다.
  • 주소 가 I /O 공간이 아니라 메모리 공간에 있음을 나타내는 VIDEO_MEMORY_SPACE_MEMORY 경우 이 함수가 반환하는 가상 주소는 VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxxVideoPortWriteRegisterBufferXxx 함수로 전달되어야 합니다. 여기서 XxxUchar, Ushort 또는 Ulong입니다.
  • 드라이버는 NumberOfUchars로 구분된 범위를 벗어난 주소에 액세스해서는 안 됩니다.
VideoPortGetDeviceBaseVideoPortMapMemory 는 모두 비디오 미니포트 드라이버에서 호출하여 비디오 메모리를 가상 주소 공간에 매핑할 수 있습니다. 이러한 두 함수를 모두 호출하여 동일한 실제 주소를 매핑하거나 함수 중 하나를 두 번 이상 호출하여 동일한 실제 주소를 매핑하는 경우 동일한 실제 주소 범위에 매핑되는 가상 주소 범위가 두 개 이상 있을 수 있습니다. 이 경우 InIoSpace 매개 변수의 VIDEO_MEMORY_SPACE_P6CACHE 플래그를 모든 호출에서 동일한 값으로 설정해야 합니다.

모든 UMA(유니버설 메모리 아키텍처) 디스플레이 디바이스는 PCI 버스가 아닌 기본 메모리에 있는 프레임 버퍼를 사용합니다. 이 경우 VideoPortMapMemory 를 호출하여 프레임 버퍼를 매핑하지 마세요. UMA 프레임 버퍼를 시스템 공간에 매핑하려면 MmMapIoSpace를 호출합니다.

미니포트 드라이버가 논리 범위를 매핑한 어댑터를 지원하지 않는 경우 DriverEntry 함수에 컨트롤을 반환하기 전에 두 단계를 수행해야 합니다. VideoPortFreeDeviceBase 를 호출하여 시스템 공간에서 이전에 매핑된 범위를 매핑 해제하고 VideoPortGetAccessRanges 또는 VideoPortVerifyAccessRanges 를 호출하여 레지스트리의 범위에서 클레임을 해제합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 video.h(Video.h 포함)
라이브러리 Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

추가 정보

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory