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 캐싱에 대한 자세한 내용은 Video Miniport Drivers 웹 사이트의Write-Combining 메모리를 참조하세요. |
반환 값
성공하면 VideoPortGetDeviceBase 매핑의 기본 가상 주소를 반환합니다. 지정된 버스 상대 범위를 매핑할 수 없는 경우 VideoPortGetDeviceBase NULL 반환합니다.
발언
매핑된 가상 주소를 VideoPortReadXxx, VideoPortWrite Xxx, VideoPortXxx메모리 함수에 전달할 수 있습니다. VideoPortMapMemory 및 VideoPortUnmapMemory제외합니다.
미니포트 드라이버의 HwVidFindAdapter, HwVidQueryDeviceCallback또는 HwVidQueryNamedValueCallback 함수에서 VideoPortGetDeviceBase 호출해야 합니다.
HwVidFindAdapter 컨트롤을 반환하기 전에 나중에 사용하기 위해 VideoPortGetDeviceBase 반환된 매핑된 기본 주소와 매핑된 액세스 범위의 길이를 어댑터의 디바이스 확장(HwDeviceExtension참조)에 저장해야 합니다.
매핑된 주소 공간에 대한 액세스는 다음 규칙을 따라야 합니다.
- InIoSpace 주소가 I/O 공간에 있음을 나타내는 VIDEO_MEMORY_SPACE_IO 경우 이 함수가 반환하는 가상 주소는 VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxx및 VideoPortWritePortBufferXxx 함수에 전달되어야 합니다. 여기서 Xxx Uchar , Ushort또는 Ulong .
- 주소가 I/O 공간이 아니라 메모리 공간에 있음을 나타내는 InIoSpace 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 |