PDRIVER_IO_PORT_UCHAR_STRING回调函数 (video.h)

SvgaHwIoPortUcharString 捕获 I/O 端口,基于 x86 的计算机中的全屏 MS-DOS 应用程序将一系列 UCHAR 大小的数据发送到该端口。

语法

PDRIVER_IO_PORT_UCHAR_STRING PdriverIoPortUcharString;

VP_STATUS PdriverIoPortUcharString(
  ULONG_PTR Context,
  ULONG Port,
  UCHAR AccessMode,
  PUCHAR Data,
  ULONG DataLength
)
{...}

参数

Context

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

Port

指定映射的 I/O 端口。

AccessMode

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

EMULATOR_READ_ACCESS
EMULATOR_WRITE_ACCESS

Data

指向要传输的 UCHAR 字符串的指针。 一次挂接一个字符,直到传输整个字符串。

DataLength

指定字符串中 UCHAR 值的数目。

返回值

SvgaHwIoPortUcharString 返回操作的最终状态。

注解

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

SvgaHwIoPortUcharString 截获全屏 MS-DOS 应用程序尝试的任何字节访问,发出 REP OUTSB DX、ESIREP INSB EDI、DX 指令或两个指令。

如果微型端口驱动程序通过调用 VideoSetTrappedEmulatorPorts 启用端口进行直接访问,则不会调用其 SvgaHwIoPortUcharString 函数。 然后,此类应用程序将具有对 I/O 端口的直接访问权限,除非微型端口驱动程序通过另一次调用 VideoSetTrappedEmulatorPorts 来禁用该端口。

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

SvgaHwIoPortUcharString 必须缓冲来自应用程序的后续指令,并检查没有人可以挂起计算机。 如果应用程序发出可能挂起计算机的任何指令序列, SvgaHwIoPortUcharString 必须放弃缓冲的指令。 否则,它应将它们(一次一个 UCHAR)输出到指定的映射 I/O 端口。

SvgaHwIoPortUcharString 应可分页。

要求

要求
目标平台 桌面
标头 video.h (包括 Video.h)

另请参阅

EMULATOR_ACCESS_ENTRY

SVGA 函数

SvgaHwIoPortUchar

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetDeviceBase

VideoPortSetTrappedEmulatorPorts