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 웹 사이트 문서의 쓰기 결합 메모리 를 참조하세요. |
반환 값
성공하면 VideoPortGetDeviceBase 는 매핑의 기본 가상 주소를 반환합니다. 지정된 버스 상대 범위를 매핑할 수 없는 경우 VideoPortGetDeviceBase 는 NULL을 반환합니다.
설명
VideoPortMapMemory 및 VideoPortUnmapMemory를 제외하고 매핑된 가상 주소를 VideoPortReadXxx, VideoPortWriteXxx 및 VideoPortXxxMemory 함수에 전달할 수 있습니다.
미니포트 드라이버의 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 운영 체제의 Windows 2000 이상 버전에서 사용할 수 있습니다. |
| 대상 플랫폼 | 바탕 화면 |
| 헤더 | video.h(Video.h 포함) |
| 라이브러리 | Videoprt.lib |
| DLL | Videoprt.sys |
| IRQL | PASSIVE_LEVEL |
참조
피드백
다음에 대한 사용자 의견 제출 및 보기