VIDEO_PORT_CONFIG_INFO 구조체(video.h)
VIDEO_PORT_CONFIG_INFO 구조에는 버스별 어댑터 구성 정보가 포함됩니다. 이 구조는 비디오 하드웨어를 설정하고 비디오 포트 드라이버에 구성 정보를 제공하는 데 사용됩니다. 그런 다음 비디오 포트 드라이버는 미니포트 드라이버 및 해당 어댑터에 필요한 시스템 리소스를 할당할 수 있습니다.
구문
typedef struct _VIDEO_PORT_CONFIG_INFO {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG NumEmulatorAccessEntries;
PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries;
ULONG_PTR EmulatorAccessEntriesContext;
PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
ULONG VdmPhysicalVideoMemoryLength;
ULONG HardwareStateSize;
ULONG DmaChannel;
ULONG DmaPort;
UCHAR DmaShareable;
UCHAR InterruptShareable;
BOOLEAN Master;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
BOOLEAN bMapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN DemandMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
BOOLEAN ScatterGather;
ULONG MaximumScatterGatherChunkSize;
PVIDEO_PORT_GET_PROC_ADDRESS VideoPortGetProcAddress;
PWSTR DriverRegistryPath;
ULONGLONG SystemMemorySize;
} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
멤버
Length
이 구조체의 크기(바이트)입니다. 비디오 포트 드라이버는 항상 Length 멤버를 초기화합니다. 실제로 해당 값은 시스템에서 사용하는 VIDEO_PORT_CONFIG_INFO 버전을 나타냅니다. 이 구조는 시스템의 한 버전에서 다음 버전으로 확장될 수 있으므로 미니포트 드라이버는 이 멤버를 검사 미니포트 드라이버가 어댑터를 구성하는 데 사용하는 최소 sizeof(VIDEO_PORT_CONFIG_INFO)인지 확인해야 합니다.
SystemIoBusNumber
미니포트 드라이버의 어댑터가 연결될 수 있는 시스템 할당 I/O 버스 수를 지정합니다. 비디오 포트 드라이버는 항상 이 멤버를 초기화합니다.
AdapterInterfaceType
버스 인터페이스의 유형을 지정합니다. 비디오 포트 드라이버는 항상 PnP 관리자가 디바이스를 검색한 버스에 따라 이 멤버를 설정합니다.
BusInterruptLevel
비디오 하드웨어가 인터럽트를 생성하지 않는 경우 이 멤버는 VIDEO_HW_INITIALIZATION_DATA 구조의 HwInterrupt 멤버를NULL로 설정하여 나타냅니다. 그렇지 않으면 Isa 또는 MicroChannel 유형 버스의 인터럽트 요청에 해당하는 버스 상대 IRQL을 지정합니다. 이 멤버의 미리 설정된 기본값은 0입니다. 미니포트 드라이버는 Isa 또는 MicroChannel 형식 버스의 비디오 어댑터 또는 Eisa 형식 버스의 수준 구분 인터럽트용으로 구성된 비디오 어댑터의 인터럽트를 처리하는 경우 올바른 값을 제공해야 합니다.
미니포트 드라이버의 HwVidFindAdapter 함수가 비디오 어댑터가 인터럽트를 생성하지 않거나 어댑터의 유효한 인터럽트 벡터/수준을 확인할 수 없는 경우 HwVidFindAdapter 는 BusInterruptLevel 및 BusInterruptVector 를 모두 0으로 설정해야 합니다.
BusInterruptVector
비디오 하드웨어가 인터럽트를 생성하지 않는 경우 이 멤버는 VIDEO_HW_INITIALIZATION_DATA 구조의 HwInterrupt 멤버를NULL로 설정하여 나타냅니다. 그렇지 않으면 PCI 버스와 같은 인터럽트 벡터를 사용하는 I/O 버스의 비디오 하드웨어에서 사용하는 버스 상대 벡터를 지정합니다. 이 멤버의 미리 설정된 기본값은 0입니다.
미니포트 드라이버의 HwVidFindAdapter 함수가 비디오 어댑터가 인터럽트를 생성하지 않거나 어댑터의 유효한 인터럽트 벡터/수준을 확인할 수 없는 경우 HwVidFindAdapter 는 BusInterruptVector 및 BusInterruptLevel 을 모두 0으로 설정해야 합니다.
InterruptMode
비디오 하드웨어에서 래치 된 인터럽트 또는 LevelSensitive 인터럽트를 사용하는지 여부를 나타냅니다. 비디오 포트 드라이버는 관련된 경우 이 멤버를 초기화하지만 ISR이 있는 미니포트 드라이버는 올바른 값이 포함되어 있는지 검사 필요한 경우 다시 설정해야 합니다.
NumEmulatorAccessEntries
이 멤버와 HardwareStateSize 를 통한 모든 후속 멤버는 x86 기반 NT 기반 운영 체제 플랫폼에서 VGA 호환 미니포트 드라이버로 자신을 선언하지 않는 미니포트 드라이버와 관련이 없습니다. x86 기반 컴퓨터에서 VGA 호환 SVGA 어댑터를 지원하지 않는 미니포트 드라이버의 경우 이 멤버는 0이어야 합니다. 그렇지 않으면 다음 배열의 EMULATOR_ACCESS_RANGE 형식 요소 수를 지정합니다.
EmulatorAccessEntries
VGA 호환 미니포트 드라이버에서 설정한 에뮬레이터 액세스 범위 배열에 대한 포인터입니다. 각 에뮬레이터 액세스 범위는 미니포트 드라이버의 VIDEO_ACCESS_RANGE 형식 배열의 적절한 하위 집합이어야 합니다. 각 요소는 V86 에뮬레이터에 의해 연결될 I/O 포트 범위를 지정하며, 전체 화면을 실행하는 MS-DOS 애플리케이션이 비디오 어댑터 레지스터에 직접 쓰려고 할 때마다 드라이버 제공 SvgaHwIoPortXxx 함수에 의해 모니터링될 수 있습니다. 일반적으로 이 배열은 해당 액세스 범위 배열의 모든 I/O 포트 범위를 설명합니다. 미니포트 드라이버가 드라이버 자체에서 정적으로 에뮬레이터 액세스 항목의 배열을 정의하는 경우 포트 드라이버는 해당 배열에 대한 이 포인터를 초기화합니다. NumEmulatorAccessEntries가 0이면 이 멤버는 NULL입니다.
EmulatorAccessEntriesContext
EmulatorAccessEntries 배열에 설명된 SvgaHwIoPortXxx 함수에 대한 각 호출과 함께 전달되는 값을 지정합니다. 일반적으로 VGA 호환 미니포트 드라이버는 이 멤버의 값을 HwDeviceExtension 포인터 또는 디바이스 확장 내의 오프셋으로 설정하므로 미니포트 드라이버는 SvgaHwIoPortXxx 함수에서 일괄 처리된 애플리케이션 발급 명령과 같은 상태를 유지할 수 있습니다.
VdmPhysicalVideoMemoryAddress
x86 BIOS INT10 지원을 위해 VDM의 주소 공간에 매핑할 비디오 메모리 범위의 기본(매핑된) 논리 주소를 지정합니다. x86 기반 컴퓨터에서 VGA 호환 어댑터를 지원하지 않는 미니포트 드라이버의 경우 이 멤버는 NULL이어야 합니다.
VdmPhysicalVideoMemoryLength
x86 BIOS 지원을 위해 VDM의 주소 공간에 매핑할 범위의 크기(바이트)를 지정합니다. x86 기반 컴퓨터에서 VGA 호환 어댑터를 지원하지 않는 미니포트 드라이버의 경우 이 멤버는 0이어야 합니다.
HardwareStateSize
x86 기반 컴퓨터의 VGA 호환 미니포트 드라이버에서만 지원되어야 하는 IOCTL_VIDEO_SAVE_HARDWARE_STATE 요청에 대한 응답으로 하드웨어 상태 정보를 저장하는 데 필요한 최소 크기(바이트)를 지정합니다. 이 멤버의 초기화된 값은 0입니다. VGA 호환 미니포트 드라이버는 이 멤버를 저장된 어댑터 상태를 유지하는 데 필요한 바이트 수로 설정해야 합니다.
DmaChannel
시스템에서 사용하도록 예약되었습니다.
DmaPort
시스템에서 사용하도록 예약되었습니다.
DmaShareable
시스템에서 사용하도록 예약되었습니다.
InterruptShareable
미니포트 드라이버의 디바이스가 중단되는 경우 인터럽트 를 다른 디바이스와 공유할 수 없는 경우 이 멤버를 0으로 설정하거나 인터럽트 공유가 가능한 경우 1로 설정해야 합니다. 그렇지 않으면 미니포트 드라이버가 이 멤버를 무시할 수 있습니다.
Master
시스템에서 사용하도록 예약되었습니다.
DmaWidth
시스템에서 사용하도록 예약되었습니다.
DmaSpeed
시스템에서 사용하도록 예약되었습니다.
bMapBuffers
시스템에서 사용하도록 예약되었습니다.
NeedPhysicalAddresses
시스템에서 사용하도록 예약되었습니다.
DemandMode
시스템에서 사용하도록 예약되었습니다.
MaximumTransferLength
시스템에서 사용하도록 예약되었습니다.
NumberOfPhysicalBreaks
시스템에서 사용하도록 예약되었습니다.
ScatterGather
시스템에서 사용하도록 예약되었습니다.
MaximumScatterGatherChunkSize
시스템에서 사용하도록 예약되었습니다.
VideoPortGetProcAddress
VideoPortGetProcAddress 콜백 루틴에 대한 포인터입니다. 이 멤버는 비디오 미니포트 드라이버가 직접 연결하지 않고 사용할 수 있는 비디오 포트 드라이버 함수의 주소를 찾는 데 사용됩니다. 이렇게 하면 드라이버 이진 파일을 이전 버전의 Windows에서 실행할 수 있습니다. 자세한 내용은 VideoPortGetProcAddress 사용을 참조하세요.
DriverRegistryPath
디바이스의 서비스를 포함하는 레지스트리 경로에 대한 포인터입니다. 디스플레이 드라이버는 유용하다고 판단되는 방식으로 이 정보를 사용할 수 있습니다.
SystemMemorySize
시스템에 있는 실제 메모리의 양(바이트)을 드라이버에 나타냅니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | video.h(Video.h 포함) |