EMULATOR_ACCESS_ENTRY 结构 (miniport.h)

EMULATOR_ACCESS_ENTRY 结构指定 EmulatorAccessEntries 数组中的元素,该数组由基于 x86 的基于 NT 的操作系统平台上 VGA 兼容 (SVGA) 适配器的驱动程序在VIDEO_PORT_CONFIG_INFO结构中设置。

语法

typedef struct _EMULATOR_ACCESS_ENTRY {
  ULONG                     BasePort;
  ULONG                     NumConsecutivePorts;
  EMULATOR_PORT_ACCESS_TYPE AccessType;
  UCHAR                     AccessMode;
  UCHAR                     StringSupport;
  PVOID                     Routine;
} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;

成员

BasePort

指定要由 V86 仿真器挂接的一个或多个 I/O 端口的总线相对物理地址。 此值和端口范围必须属于 VideoPortGetAccessRanges 或 VideoPortVerifyAccessRanges 已在注册表中声明的 I/O 端口的访问范围。

NumConsecutivePorts

指定 V86 模拟器从 BasePort 开始挂钩的连续端口数。 此值由每个挂钩 I/O 端口的宽度确定。 例如,如果将0x3C0和0x3C1的端口地址挂钩为单个 USHORT 可寻址端口,则此值应为 1。

AccessType

将通过给定 I/O 端口传输的数据的大小指定为 UcharUlongUshort 之一。

AccessMode

指定如何将给定 I/O 端口作为以下值的一个或组合 (ORed) 访问:

  • EMULATOR_READ_ACCESS

  • EMULATOR_WRITE_ACCESS

I/O 端口范围必须至少可在上述模式之一中访问。

StringSupport

指示驱动程序提供的 SvgaHwIoPortXxx 函数在给定 AccessType 的许多值连续通过 I/O 端口“抽水”的情况下是否支持字符串访问。 如果此成员设置为 TRUE则例程 成员必须指定微型端口驱动程序提供的 SvgaHwIoPortXxxString 函数的 入口点。

Routine

指向微型端口驱动程序的 SvgaHwIoPortXxx 的指针,该驱动程序处理对此结构中所述的一个或多个端口的访问。

注解

基于 x86 的计算机中 SVGA 视频硬件的 VGA 兼容微型端口驱动程序必须定义仿真器访问范围,VGA 兼容的微型端口驱动程序可以使用 VideoPortSetTrappedEmulatorPorts 设置该范围,以便直接从全屏 MS-DOS 应用程序访问,从而加快 I/O 速度。 此类驱动程序必须提供一组 SvgaHwIoPortXxx 函数,以验证应用程序颁发的 ININSB/INSW/INSDOUT和/或 OUTSB/OUTSW/OUTSD到每个此类 I/O 端口范围的任意序列。

每个EMULATOR_ACCESS_ENTRY类型元素中的数据用于确定哪些 I/O 端口 (内存位置,适配器寄存器可访问的位置,) 微型端口驱动程序的访问范围已被 V86 仿真器在基于 x86 的平台上挂接) (。 通过全屏 MS-DOS 应用程序写入这些位置的值将被捕获并转发到微型端口驱动程序的相应 SvgaHwIoPortXxx 函数进行验证,然后再将其写入视频适配器或从视频适配器读取这些值。 但是,微型端口驱动程序可以通过调用 VideoPortSetTrappedEmulatorPorts 来提高性能,使应用程序能够直接访问特定的 I/O 端口范围。

要求

要求
Header miniport.h (包括 Miniport.h)

另请参阅

VIDEO_PORT_CONFIG_INFO

VideoPortVerifyAccessRanges

VideoPortSetTrappedEmulatorPorts

VIDEO_ACCESS_RANGE

VideoPortGetAccessRanges