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 表示),则成员无关紧要。 否则,它指定与 IsaMicroChannel 类型总线上的中断请求相对应的总线相对 IRQL。 此成员的预设默认值为零。 如果微型端口驱动程序处理 IsaMicroChannel 类型总线上的视频适配器的中断,或者为 Eisa 类型总线上为级别敏感中断配置的视频适配器的中断,则微型端口驱动程序必须提供正确的值。

如果微型端口驱动程序的 HwVidFindAdapter 函数发现视频适配器未生成中断,或者无法确定适配器的有效中断向量/级别, 则 HwVidFindAdapter 应将 BusInterruptLevelBusInterruptVector 设置为零。

BusInterruptVector

如果视频硬件未生成中断(通过将 VIDEO_HW_INITIALIZATION_DATA 结构中的 HwInterrupt 成员设置为 NULL 表示),则此成员不相关。 否则,它指定使用中断向量(例如 PCI 总线)的 I/O 总线上的视频硬件使用的总线相对矢量。 此成员的预设默认值为零。

如果微型端口驱动程序的 HwVidFindAdapter 函数发现视频适配器不生成中断,或者它无法确定适配器的有效中断向量/级别, 则 HwVidFindAdapter 应将 BusInterruptVectorBusInterruptLevel 设置为零。

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)

另请参阅

HwVidFindAdapter

IOCTL_VIDEO_SAVE_HARDWARE_STATE

VIDEO_ACCESS_RANGE

VIDEO_HW_INITIALIZATION_DATA

VideoPortGetAccessRanges

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortGetProcAddress

VideoPortVerifyAccessRanges