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。 否則,它會指定 I/O 總線上使用中斷向量的視訊硬體所使用的總線相對向量,例如 PCI 總線。 這個成員的預設預設值為零。
如果迷你埠驅動程式的 HwVidFindAdapter 函式發現視訊配接器不會產生中斷,或無法判斷適配卡的有效中斷向量/層級, HwVidFindAdapter 應該同時將 BusInterruptVector 和 BusInterruptLevel 設定為零。
InterruptMode
指出視訊硬體是否使用 閂鎖 或 LevelSensitive 中斷。 視訊埠驅動程式如果相關,則會初始化此成員,但具有ISR的迷你埠驅動程式應該檢查它是否包含正確的值,並視需要重設它。
NumEmulatorAccessEntries
此成員和透過 HardwareStateSize 的所有後續成員,與未宣告為 x86 型 NT 型作業系統平臺上 VGA 相容的迷你埠驅動程式的迷你埠驅動程序無關。 對於不支援 x86 計算機上 VGA 相容 SVGA 適配卡的迷你埠驅動程式,此成員應該是零。 否則,它會指定下列陣列中的EMULATOR_ACCESS_RANGE類型元素數目。
EmulatorAccessEntries
VGA 相容迷你埠驅動程式所設定的模擬器存取範圍陣列指標。 每個模擬器存取範圍都必須是迷你埠驅動程式 VIDEO_ACCESS_RANGE類型數位的適當子集。 每個元素都會指定要由 V86 模擬器連結的 I/O 連接埠範圍,而且可能由驅動程式提供的 SvgaHwIoPortXxx 函式監視,每當 MS-DOS 應用程式執行全螢幕時,嘗試直接寫入視訊配接器緩存器。 通常,此陣列描述對應存取範圍數位中的所有 I/O 連接埠範圍。 如果迷你埠驅動程式在驅動程式本身以靜態方式定義模擬器存取專案的數位,埠驅動程式就會初始化該數位的這個指標。 如果 NumEmulatorAccessEntries 為零,則此成員為 NULL。
EmulatorAccessEntriesContext
指定以模擬器AccessEntries 陣列中所述之 SvgaHwIoPortXxx 函式呼叫所傳遞的值。 通常,VGA 相容的迷你埠驅動程式會將此成員的值設定為 HwDeviceExtension 指標或裝置延伸模組內的位移,因此迷你埠驅動程式可以在其 SvgaHwIoPortXxx 函式中維護狀態,例如批次應用程式發出的指令。
VdmPhysicalVideoMemoryAddress
指定要對應至 x86 BIOS INT10 支援的 VDM 位址空間之一系列視訊記憶體的基底 (對應) 邏輯地址位址。 對於不支援 x86 計算機上 VGA 相容適配卡的迷你埠驅動程式,此成員應該是 NULL。
VdmPhysicalVideoMemoryLength
指定範圍的大小,以位元組為單位對應至 X86 BIOS 支援的 VDM 位址空間。 對於不支援 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
向驅動程式指出系統中實體記憶體的數量,以位元組為單位。
規格需求
需求 | 值 |
---|---|
標頭 | video.h (包含 Video.h) |