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版本。 由于此结构可能会从一个版本的系统增长到下一个版本,因此微型端口驱动程序应检查此成员,以确定其大小是否至少为微型端口驱动程序用于配置其适配器的 (VIDEO_PORT_CONFIG_INFO) 。
SystemIoBusNumber
指定微型端口驱动程序的适配器可能连接的 I/O 总线的系统分配编号。 视频端口驱动程序始终初始化此成员。
AdapterInterfaceType
指定总线接口的类型。 视频端口驱动程序始终基于 PnP 管理器检测到设备的总线设置此成员。
BusInterruptLevel
如果视频硬件未生成中断(通过将 VIDEO_HW_INITIALIZATION_DATA 结构中的 HwInterrupt 成员设置为 NULL 表示),则此成员无关紧要。 否则,它指定与 Isa 或 MicroChannel 类型总线上的中断请求相对应的总线相对 IRQL。 此成员的预设默认值为零。 如果微型端口驱动程序处理 Isa 或 MicroChannel 类型总线上的视频适配器的中断,或者为 Eisa 类型总线上为级别敏感中断配置的视频适配器的中断,则微型端口驱动程序必须提供正确的值。
如果微型端口驱动程序的 HwVidFindAdapter 函数发现视频适配器未生成中断,或者无法确定适配器的有效中断向量/级别, 则 HwVidFindAdapter 应将 BusInterruptLevel 和 BusInterruptVector 设置为零。
BusInterruptVector
如果视频硬件未生成中断(通过将 VIDEO_HW_INITIALIZATION_DATA 结构中的 HwInterrupt 成员设置为 NULL 表示),则此成员不相关。 否则,它指定使用中断向量(例如 PCI 总线)的 I/O 总线上的视频硬件使用的总线相对矢量。 此成员的预设默认值为零。
如果微型端口驱动程序的 HwVidFindAdapter 函数发现视频适配器不生成中断,或者它无法确定适配器的有效中断向量/级别, 则 HwVidFindAdapter 应将 BusInterruptVector 和 BusInterruptLevel 设置为零。
InterruptMode
指示视频硬件是使用 闩锁 中断还是 级别敏感 中断。 视频端口驱动程序初始化此成员(如果相关),但具有 ISR 的微型端口驱动程序应检查它包含正确的值,并在必要时对其进行重置。
NumEmulatorAccessEntries
此成员以及 HardwareStateSize 的所有后续成员与未在基于 x86 的 NT 的操作系统平台上声明自己为 VGA 兼容微型端口驱动程序的微型端口驱动程序无关。 对于不支持基于 x86 的计算机上的 VGA 兼容 SVGA 适配器的微型端口驱动程序,此成员应为零。 否则,它指定以下数组中EMULATOR_ACCESS_RANGE类型元素的数目。
EmulatorAccessEntries
指向由 VGA 兼容的微型端口驱动程序设置的仿真器访问范围的数组的指针。 每个模拟器访问范围必须是微型端口驱动程序 VIDEO_ACCESS_RANGE类型数组的正确子集。 每个元素指定一系列 I/O 端口,只要 MS-DOS 应用程序全屏运行,尝试直接写入视频适配器寄存器,V86 模拟器就会挂接,并且可能由驱动程序提供的 SvgaHwIoPortXxx 函数监视。 通常,此数组描述相应访问范围数组中的所有 I/O 端口范围。 如果微型端口驱动程序在驱动程序本身中静态定义其模拟器访问条目数组,则端口驱动程序会初始化指向该数组的此指针。 如果 NumEmulatorAccessEntries 为零,则此成员为 NULL。
EmulatorAccessEntriesContext
指定每次调用 SvgaHwIoPortXxx 函数时传递的值, 如 EmulatorAccessEntries 数组中所述。 通常,VGA 兼容的微型端口驱动程序将此成员的值设置为 HwDeviceExtension 指针或设备扩展中的偏移量,因此微型端口驱动程序可以在其 SvgaHwIoPortXxx 函数中维护状态,例如批处理应用程序发出的指令。
VdmPhysicalVideoMemoryAddress
指定要映射到 VDM 地址空间的一系列视频内存的基本 (映射) 逻辑地址,以支持 x86 BIOS INT10。 对于不支持基于 x86 的计算机上的 VGA 兼容适配器的微型端口驱动程序,此成员应为 NULL。
VdmPhysicalVideoMemoryLength
指定要映射到 VDM 的地址空间中的范围的大小(以字节为单位)以支持 x86 BIOS。 对于不支持基于 x86 的计算机上的 VGA 兼容适配器的微型端口驱动程序,此成员应为零。
HardwareStateSize
指定存储硬件状态信息以响应IOCTL_VIDEO_SAVE_HARDWARE_STATE请求所需的最小大小 ( 以字节为单位),该请求必须由基于 x86 的计算机上 VGA 兼容的微型端口驱动程序支持。 此成员的初始化值为零。 VGA 兼容的微型端口驱动程序必须将此成员设置为保留保存的适配器状态所需的字节数。
DmaChannel
预留给系统使用。
DmaPort
预留给系统使用。
DmaShareable
预留给系统使用。
InterruptShareable
如果微型端口驱动程序的设备中断,如果中断无法与其他设备共享,则应将此成员设置为零;如果可以共享中断,则应将此成员设置为零。 否则,微型端口驱动程序可以忽略此成员。
Master
预留给系统使用。
DmaWidth
预留给系统使用。
DmaSpeed
预留给系统使用。
bMapBuffers
预留给系统使用。
NeedPhysicalAddresses
预留给系统使用。
DemandMode
预留给系统使用。
MaximumTransferLength
预留给系统使用。
NumberOfPhysicalBreaks
预留给系统使用。
ScatterGather
预留给系统使用。
MaximumScatterGatherChunkSize
预留给系统使用。
VideoPortGetProcAddress
指向 VideoPortGetProcAddress 回调例程的指针。 此成员用于查找视频端口驱动程序函数的地址,视频微型端口驱动程序可以使用该函数,而无需直接链接到该函数。 这样,驱动程序二进制文件就可以在早期版本的 Windows 上运行。 有关详细信息,请参阅 使用 VideoPortGetProcAddress。
DriverRegistryPath
指向包含设备服务的注册表路径的指针。 显示驱动程序可以通过它认为有用的任何方式使用此信息。
SystemMemorySize
向驱动程序指示系统中的物理内存量(以字节为单位)。
要求
要求 | 值 |
---|---|
Header | video.h (包括 Video.h) |