PDRIVER_IO_PORT_USHORT_STRING回调函数 (video.h)

SvgaHwIoPortUshortString 捕获基于 x86 的计算机中的全屏 MS-DOS 应用程序发送一系列 USHORT 大小的数据的 I/O 端口范围。

语法

PDRIVER_IO_PORT_USHORT_STRING PdriverIoPortUshortString;

VP_STATUS PdriverIoPortUshortString(
  ULONG_PTR Context,
  ULONG Port,
  UCHAR AccessMode,
  PUSHORT Data,
  ULONG DataLength
)
{...}

参数

Context

指定在 EmulatorAccessEntriesContext VIDEO_PORT_CONFIG_INFO 中设置的微型端口驱动程序确定的上下文值。

Port

指定要捕获的映射 I/O 端口。

AccessMode

指定允许的访问类型,可以是以下值的一种或一种组合(ORed):

EMULATOR_READ_ACCESS
EMULATOR_WRITE_ACCESS

Data

指向要传输的 USHORT 数据值的字符串的指针。 此字符串一次访问一个值,直到所有值都已挂钩。

DataLength

指定字符串中的 USHORT 值数。

返回值

SvgaHwIoPortUshortString 返回作的最终状态。

言论

只有 VGA 兼容的 SVGA 适配器的微型端口驱动程序 SvgaHwIoPortXxx 函数。 (请参阅 SVGA 函数。)

SvgaHwIoPortUshortString 截获全屏 MS-DOS 应用程序尝试的任何范围访问,或者 REP OUTSW DX、ESIREP INSW EDI、DX的指令。

如果微型端口驱动程序通过调用 VideoSetTrappedEmulatorPorts来启用 端口 范围,则不会调用其 SvgaHwIoPortUshortString 函数。 然后,此类应用程序将直接访问 I/O 端口范围,除非微型端口驱动程序禁用 端口 范围,并再次调用 VideoSetTrappedEmulatorPorts

如果一个或多个应用程序颁发的 x86 INSWOUTSW 指令可能会影响 VGA 兼容的适配器序列器寄存器的状态, 杂项输出寄存器或任何特定于适配器的寄存器,因此,导致计算机挂起,微型端口驱动程序必须 通过调用 VideoPortSetTrappedEmulatorPorts启用端口进行直接访问。

SvgaHwIoPortUshortString 必须缓冲应用程序中的后续指令,并检查是否可以挂起计算机。 如果应用程序发出可能挂起计算机的指令序列,SvgaHwIoPortUshortString 必须放弃缓冲指令。 否则,它应一次将 USHORT 输出到指定的映射 I/O 端口。

SvgaHwIoPortUshortString 进行分页。

要求

要求 价值
目标平台 桌面
标头 video.h (include Video.h)

另请参阅

EMULATOR_ACCESS_ENTRY

SVGA 函数

SvgaHwIoPortUshort

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetDeviceBase

VideoPortSetTrappedEmulatorPorts