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에 대한 이전 호출을 통해 레지스트리에서 IoAddress 및 NumberOfUchars에 의해 설명된 범위를 성공적으로 클레임해야 합니다.
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 는 매핑의 기본 가상 주소를 반환합니다. 지정된 버스 상대 범위를 매핑할 수 없는 경우 VideoPortGetDeviceBase 는 NULL을 반환합니다.
설명
VideoPortMapMemory 및 VideoPortUnmapMemory를 제외하고 매핑된 가상 주소를 VideoPortReadXxx, VideoPortWriteXxx 및 VideoPortXxx메모리 함수에 전달할 수 있습니다.
미니포트 드라이버의 HwVidFindAdapter, HwVidQueryDeviceCallback 또는 HwVidQueryNamedValueCallback 함수에서 VideoPortGetDeviceBase를 호출해야 합니다.
HwVidFindAdapter가 컨트롤을 반환하기 전에 나중에 사용할 수 있도록 VideoPortGetDeviceBase에서 반환된 매핑된 기본 주소와 어댑터의 디바이스 확장(HwDeviceExtension이 가리키는)에 매핑된 액세스 범위의 길이를 모두 저장해야 합니다.
매핑된 주소 공간에 대한 액세스는 다음 규칙을 따라야 합니다.
- 주소가 I/O 공간에 있음을 나타내는 inIoSpace 가 VIDEO_MEMORY_SPACE_IO 경우 이 함수가 반환하는 가상 주소는 VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxx 및 VideoPortWritePortBufferXxx 함수로 전달되어야 합니다. 여기서 Xxx 는 Uchar, Ushort 또는 Ulong입니다.
- 주소 가 I /O 공간이 아니라 메모리 공간에 있음을 나타내는 VIDEO_MEMORY_SPACE_MEMORY 경우 이 함수가 반환하는 가상 주소는 VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxx 및 VideoPortWriteRegisterBufferXxx 함수로 전달되어야 합니다. 여기서 Xxx 는 Uchar, Ushort 또는 Ulong입니다.
- 드라이버는 NumberOfUchars로 구분된 범위를 벗어난 주소에 액세스해서는 안 됩니다.
모든 UMA(유니버설 메모리 아키텍처) 디스플레이 디바이스는 PCI 버스가 아닌 기본 메모리에 있는 프레임 버퍼를 사용합니다. 이 경우 VideoPortMapMemory 를 호출하여 프레임 버퍼를 매핑하지 마세요. UMA 프레임 버퍼를 시스템 공간에 매핑하려면 MmMapIoSpace를 호출합니다.
미니포트 드라이버가 논리 범위를 매핑한 어댑터를 지원하지 않는 경우 DriverEntry 함수에 컨트롤을 반환하기 전에 두 단계를 수행해야 합니다. VideoPortFreeDeviceBase 를 호출하여 시스템 공간에서 이전에 매핑된 범위를 매핑 해제하고 VideoPortGetAccessRanges 또는 VideoPortVerifyAccessRanges 를 호출하여 레지스트리의 범위에서 클레임을 해제합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | video.h(Video.h 포함) |
라이브러리 | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |