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 EmulatorAccessEntriesContext;
    PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
    ULONG VdmPhysicalVideoMemoryLength;
    ULONG HardwareStateSize;
    ULONG DmaChannel;
    ULONG DmaPort;
    UCHAR DmaShareable;
    UCHAR InterruptShareable;
} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;

VIDEO_PORT_CONFIG_INFO contains bus-specific adapter configuration information. VideoPortInitialize allocates memory for and fills in as much information as it can in this structure before it calls the miniport driver’s HwVidFindAdapter function. If the input structure describes an adapter that the miniport supports, HwVidFindAdapter fills all remaining relevant members of this structure.

This structure is used to set up the video hardware and to supply the port driver with configuration information. The port driver can then allocate necessary system resources for the miniport driver and its adapter.

Members

Length
Is the size in bytes of this structure. The port driver always initializes the Length member. In effect, its value indicates the version of VIDEO_PORT_CONFIG_INFO being used by the system. Because this structure might grow from one version of the system to the next, a miniport driver should check this member to determine whether it is at least the sizeof(VIDEO_PORT_CONFIG_INFO) that the miniport uses to configure its adapter.
SystemIoBusNumber
Specifies the system-assigned number of the I/O bus on which the miniport’s adapter might be connected. The port driver always initializes this member.
AdapterInterfaceType
Specifies the type of bus interface. The video port driver always sets this member to the value passed in the VIDEO_HW_INITIALIZATION_DATA structure when the miniport’s DriverEntry function called VideoPortInitialize.
BusInterruptLevel
This member is irrelevant if the video hardware does not generate interrupts, indicated by setting the HwInterrupt member in the VIDEO_HW_INITIALIZATION_DATA structure to NULL. Otherwise, it specifies the bus-relative IRQL that corresponds to the interrupt request on Isa or MicroChannel type buses. The preset default value for this member is zero. A miniport driver must supply the correct value if it handles interrupts for a video adapter on an Isa or MicroChannel type bus, or for a video adapter configured for level-sensitive interrupts on an Eisa type bus.

If a miniport driver’s HwVidFindAdapter function finds that the video adapter does not generate interrupts or that it cannot determine a valid interrupt vector/level for the adapter, HwVidFindAdapter should set both BusInterruptLevel and BusInterruptVector to zero.

BusInterruptVector
This member is irrelevant if the video hardware does not generate interrupts, indicated by setting the HwInterrupt member in the VIDEO_HW_INITIALIZATION_DATA structure to NULL. Otherwise, it specifies the bus-relative vector used by the video hardware on I/O buses that use interrupt vectors, such as PCI buses. The preset default value for this member is zero.

If a miniport driver’s HwVidFindAdapter function finds that the video adapter does not generate interrupts or that it cannot determine a valid interrupt vector/level for the adapter, HwVidFindAdapter should set both BusInterruptVector and BusInterruptLevel to zero.

InterruptMode
Indicates whether the video hardware uses Latched or LevelSensitive interrupts. The port driver initializes this member if it is relevant, but a miniport driver with an ISR should check that it contains the correct value and reset it if necessary.
NumEmulatorAccessEntries
This member and all subsequent members through HardwareStateSize are irrelevant to miniport drivers that do not declare themselves to be VGA-compatible miniport drivers on x86-based Windows NT platforms. For miniport drivers that do not support VGA-compatible SVGA adapters on x86-based machines, this member should be zero. Otherwise, it specifies the number of EMULATOR_ACCESS_RANGE-type elements in the following array.
EmulatorAccessEntries
Points to an array of emulator access ranges set up by the VGA-compatible miniport driver. Each emulator access range must be a proper subset of the miniport’s VIDEO_ACCESS_RANGE-type array. Each element specifies a range of I/O ports to be hooked out by the V86 emulator and, possibly, monitored by a driver-supplied SvgaHwIoPortXxx function whenever an MS-DOS application, running full screen, attempts to write directly to the video adapter registers. Usually, this array describes all I/O port ranges in the corresponding access ranges array. If the miniport driver defines its array of emulator access entries statically in the driver itself, the port driver initializes this pointer to that array. If NumEmulatorAccessEntries is zero, this member is NULL.
EmulatorAccessEntriesContext
Specifies a value passed with each call to an SvgaHwIoPortXxx function described in the EmulatorAccessEntries array. Usually, a VGA-compatible miniport driver sets the value of this member to the HwDeviceExtension pointer, or to an offset within the device extension, so the miniport driver can maintain state, such as batched application-issued instructions, in its SvgaHwIoPortXxx functions.
VdmPhysicalVideoMemoryAddress
Specifies the base (mapped) logical address of a range of video memory to be mapped into a VDM’s address space for x86 BIOS INT10 support. For miniport drivers that do not support VGA-compatible adapters on x86-based machines, this member should be NULL.
VdmPhysicalVideoMemoryLength
Specifies the size in bytes of the range be mapped into a VDM’s address space for x86 BIOS support. For miniport drivers that do not support VGA-compatible adapters on x86-based machines, this member should be zero.
HardwareStateSize
Specifies the minimum size in bytes required to store hardware state information in response to an IOCTL_VIDEO_SAVE_HARDWARE_STATE request, which must be supported only by VGA-compatible miniport drivers on x86-based machines. The initialized value for this member is zero. A VGA-compatible miniport driver must set this member to the number of bytes it requires to hold saved adapter state.
DmaChannel
Is initialized to zero and should be left as is.
DmaPort
Is initialized to zero and should be left as is.
DmaShareable
Is initialized to zero and should be left as is.
InterruptShareable
If the miniport’s device interrupts, this parameter should be set to zero if the interrupt cannot be shared with another device, or set to one if the interrupt can be shared. Otherwise, a miniport driver can ignore this member.

See Also

HwVidFindAdapter, IOCTL_VIDEO_SAVE_HARDWARE_STATE, VIDEO_ACCESS_RANGE, VIDEO_HW_INITIALIZATION_DATA, VideoPortGetAccessRanges, VideoPortGetDeviceBase, VideoPortGetDeviceData, VideoPortVerifyAccessRanges