共用方式為


VideoPortSetTrappedEmulatorPorts 函式 (video.h)

VGA 兼容 (SVGA) 迷你埠驅動程式會呼叫 VideoPortSetTrappedEmulatorPorts 函式,以動態變更 VDM (視訊顯示監視器時所截獲的 I/O 連接埠清單,) 在 x86 型電腦上以全螢幕模式執行。

語法

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortSetTrappedEmulatorPorts(
       PVOID               HwDeviceExtension,
       ULONG               NumAccessRanges,
  [in] PVIDEO_ACCESS_RANGE AccessRange
);

參數

HwDeviceExtension

迷你埠驅動程式裝置延伸模組的指標。

NumAccessRanges

指定 AccessRange 陣列中的項目數目。

[in] AccessRange

VIDEO_ACCESS_RANGE項目的陣列指標。 每個元素都會描述 miniport 驅動程式在 VIDEO_PORT_CONFIG_INFO 中設定的適當 EmulatorAccessEntries 子範圍。 將 AccessRange 元素的 RangeVisible 成員設定為 TRUE,可讓全螢幕 MS-DOS 應用程式直接存取 I/O 連接埠範圍。 將 RangeVisible 成員設定為 FALSE 會導致應用程式發出的 INs、 INSB/INSW/INSDs、 OUTs 和/或 OUTSB/OUTSW/OUTSD設為該範圍,以截獲並轉送至對應的迷你埠驅動程式 SvgaHwIoPortXxx 函式以進行驗證。

傳遞至 VideoPortSetTrappedEmulatorPortsAccessRange 陣列必須是 ( () 在 VIDEO_PORT_CONFIG_INFO 結構的 EmulatorAccessEntries 陣組中設定 HwVidFindAdapter 函式的適當 I/O 連接埠範圍子集。 存取範圍陣列中未包含在 EmulatorAccessEntries 陣列中的任何 I/O 埠範圍,會截獲並反映到使用者模式 VDD

傳回值

VideoPortSetTrappedEmulatorPorts 如果已成功變更已截獲的埠,則會傳回NO_ERROR。 否則會傳回ERROR_INVALID_PARAMETER。

備註

根據預設,全螢幕 MS-DOS 應用程式可以直接存取的 I/O 連接埠 AccessRange 不會包含任何描述在 VIDEO_PORT_CONFIG_INFO 結構的 EmulatorAccessEntries 陣列中也有對應元素的存取範圍數位元素。 也就是說,具有對應模擬器存取專案的 I/O 連接埠範圍預設會連結至迷你埠驅動程式的 SvgaHwIoPortXxx 函式,以便將應用程式發出的指示轉送到 SvgaHwIoPortXxx 函式以進行驗證。

VGA 兼容的 SVGA 迷你埠驅動程式可以視需要啟用和停用 I/O 連接埠的範圍,並呼叫 VideoPortSetTrappedEmulatorPorts。 啟用的埠範圍可讓全螢幕 MS-DOS 應用程式直接存取這些 I/O 連接埠,而不需要先將應用程式發出的元件指令截獲並轉送至迷你埠驅動程式的 SvgaHwIoPortXxx 函式以進行驗證。 這類應用程式的直接 I/O 埠存取可讓使用者更快取得視訊 I/O 回應時間。

VideoPortSetTrappedEmulatorPorts 會掃描從第一個專案到最後一個專案的 AccessRange 參數陣列,並依照每個元素中的指示啟用和停用 I/O 埠。 請注意,如果迷你埠驅動程式包含相同範圍的重複描述,且 RangeVisible 成員設定為 FALSE,則可以在相同的呼叫中再次停用 RangeVisible 成員設定為 TRUE) (啟用的埠範圍。 另請注意,迷你埠驅動程式可以在 AccessRange 陣列的初始元素中啟用各種 I/O 連接埠,並在呼叫 VideoPortSetTrappedEmulatorPorts 時,選擇性地停用後續數位元素中的埠子範圍。

所有全螢幕 MS-DOS 應用程式都會在 x86 型機器中使用相同的 IOPM (I/O 許可權對應) ,因此,啟用或停用的 I/O 連接埠集相同。 在每個切換至這類全螢幕應用程式時,都會使用 IOCTL_VIDEO_ENABLE_VDM VRP 呼叫 VGA 相容的迷你埠驅動程式 HwVidStartIO 函式。 接著,迷你埠驅動程序應該重新初始化一組直接存取的 I/O 連接埠,其可包含 EmulatorAccessEntries 陣組中的任何埠。

雖然在 x86 型電腦上提供全螢幕 MS-DOS 應用程式直接存取視訊埠,可讓應用程式起始的視訊作業更快速,但每個 VGA 兼容的 SVGA 迷你埠驅動程式都必須繼續捕捉重要 I/O 埠的子集,以防止這類應用程式將電腦掛斷。 特別是,這類迷你埠驅動程序 應該一律 將應用程式 I/O 設陷到 VGA 相容的配接器序列器和其他輸出緩存器。 這類迷你埠驅動程式也應該設陷並驗證應用程式發出的直接 I/O,這可能會讓電腦停止回應任何額外的 I/O 埠子集。

再次呼叫 VideoPortSetTrappedEmulatorPorts 並將 AccessRange 元素的 RangeVisible 成員重設為 FALSE,會導致該範圍的應用程式發出的指示轉送至對應的迷你埠驅動程式 SvgaHwIoPortXxx 函式。

規格需求

需求
最低支援的用戶端 適用於 Windows 2000 和更新版本的 Windows 作業系統。
目標平台 桌面
標頭 video.h (包含 Video.h)
程式庫 Videoprt.lib
Dll Videoprt.sys
IRQL PASSIVE_LEVEL

另請參閱

EMULATOR_ACCESS_ENTRY

HwVidFindAdapter

HwVidStartIO

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortSynchronizeExecution