PDRIVER_IO_PORT_UCHAR_STRING コールバック関数 (video.h)
SvgaHwIoPortUcharString は、x86 ベースのコンピューターの全画面 MS-DOS アプリケーションが UCHAR サイズのデータのシーケンスを送信している I/O ポートをトラップします。
構文
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
次の値の 1 つまたは組み合わせ (ORed) を使用できる、許可されるアクセスの種類を指定します。
- EMULATOR_READ_ACCESS
- EMULATOR_WRITE_ACCESS
Data
転送する UCHAR 文字列へのポインター。 文字列全体が転送されるまで、一度に 1 文字ずつフックされます。
DataLength
文字列内の UCHAR 値の数を指定します。
戻り値
SvgaHwIoPortUcharString は、操作の最終的な状態を返します。
注釈
VGA と互換性のある SVGA アダプターのミニポート ドライバーにのみ 、SvgaHwIoPortXxx 関数があります。 ( SVGA 関数に関するページを参照してください)。
SvgaHwIoPortUcharString は、全画面 MS-DOS アプリケーションによって試行されたすべてのバイト アクセスをインターセプトし、REP OUTSB DX、ESI、REP INSB EDI、DX のいずれかの命令を発行します。
ミニポート ドライバーが VideoSetTrappedEmulatorPorts を呼び出して直接アクセスするためのポートを有効にした場合、その SvgaHwIoPortUcharString 関数は呼び出されません。 このようなアプリケーションは、ミニポート ドライバーが VideoSetTrappedEmulatorPorts への別の呼び出しでポートを無効にしない限り、I/O ポートに直接アクセスできます。
1 つ以上のアプリケーションで発行された x86 INSB または OUTSB 命令が、VGA 互換アダプター シーケンサー レジスタ、その他の出力レジスタ、またはアダプター固有のレジスタの状態に影響を与える可能性があり、その結果、コンピューターがハングする場合、ミニポート ドライバーは VideoPortSetTrappedEmulatorPorts を呼び出して直接アクセスするためのポートを有効にすることはできません。
SvgaHwIoPortUcharString は、アプリケーションからの後続の命令をバッファーに格納し、コンピューターをハングできないチェックする必要があります。 アプリケーションがコンピューターをハングする可能性のある一連の命令を発行する場合、 SvgaHwIoPortUcharString はバッファー処理された命令を破棄する必要があります。 それ以外の場合は、指定されたマップされた I/O ポートに一度に UCHAR を出力する必要があります。
SvgaHwIoPortUcharString をページング可能にする必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | video.h (Video.h を含む) |