PDRIVER_IO_PORT_ULONG_STRING コールバック関数 (video.h)

SvgaHwIoPortUlongString は、x86 ベースのコンピューターの全画面表示 MS-DOS アプリケーションが ULONG サイズのデータのシーケンスを送信する I/O ポート範囲をトラップします。

構文

PDRIVER_IO_PORT_ULONG_STRING PdriverIoPortUlongString;

VP_STATUS PdriverIoPortUlongString(
  ULONG_PTR Context,
  ULONG Port,
  UCHAR AccessMode,
  PULONG Data,
  ULONG DataLength
)
{...}

パラメーター

Context

VIDEO_PORT_CONFIG_INFO の EmulatorAccessEntriesContext メンバーで設定されたミニポート ドライバーによって決定されたコンテキスト値を指定します。

Port

トラップするマップされた I/O ポートを指定します。

AccessMode

次の値の 1 つまたは組み合わせ (ORed) を使用できる、許可されるアクセスの種類を指定します。

EMULATOR_READ_ACCESS
EMULATOR_WRITE_ACCESS

Data

転送する ULONG データ文字列へのポインター。 文字列はすべて使用されるまで、一度に 1 つの値がフックされます。

DataLength

文字列内の ULONG 値の数を指定します。

戻り値

SvgaHwIoPortUlongString は 、操作の最終的な状態を返します。

注釈

VGA 互換 SVGA アダプターのミニポート ドライバーにのみ 、SvgaHwIoPortXxx 関数があります。 ( 「SVGA 関数」を参照)。

SvgaHwIoPortUlongString は、 REP OUTSD DX、ESI、REP INSDEDI、DX のいずれかの命令を発行する全画面表示 MS-DOS アプリケーションによって試行されたすべての範囲アクセスをインターセプトします。

ミニポート ドライバーが VideoSetTrappedEmulatorPorts を呼び出して直接アクセスするためのポート範囲を有効にした場合、その SvgaHwIoPortUlongString 関数は呼び出されません。 このようなアプリケーションは、ミニポート ドライバーが VideoSetTrappedEmulatorPorts への別の呼び出しでポート範囲を無効にしない限り、I/O ポート範囲に直接アクセスできます。

1 つ以上のアプリケーションが発行した x86 INSD または OUTSD 命令が、VGA 互換アダプター シーケンサー レジスタ、その他の出力レジスタ、またはアダプター固有のレジスタの状態に影響を与える可能性があるため、コンピューターがハングする場合、ミニポート ドライバーは VideoPortSetTrappedEmulatorPorts を呼び出して直接アクセスするためのポートを有効にしてはいけません

SvgaHwIoPortUlongString は、アプリケーションからの後続の命令をバッファーに格納し、コンピューターをハングできないチェックする必要があります。 アプリケーションがコンピューターをハングする可能性のある一連の命令を発行した場合、 SvgaHwIoPortUlongString はバッファー内の命令を破棄する必要があります。 それ以外の場合は、指定されたマップされた I/O ポートに一度に ULONG を出力する必要があります。

SvgaHwIoPortUlongString をページング可能にする必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header video.h (Video.h を含む)

こちらもご覧ください

EMULATOR_ACCESS_ENTRY

SVGA 関数

SvgaHwIoPortUlong

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetDeviceBase

VideoPortSetTrappedEmulatorPorts