次の方法で共有


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 は、REP OUTSB DX、ESI 、および REP INSB EDI、DX 命令のいずれかまたは両方を発行する全画面表示 MS-DOS アプリケーションによって試行されたバイト アクセスをインターセプトします。

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

1 つ以上のアプリケーションによって発行された x86 INSB または OUTSB 命令が VGA 互換アダプター シーケンサー レジスタの状態に影響する可能性がある場合は、 その他の出力レジスタ、または任意のアダプター固有のレジスタと、これにより、コンピューターがハングする原因となるミニポート ドライバーは、VideoPortSetTrappedEmulatorPorts 呼び出すことによって、直接アクセスのポートを有効に しない 必要があります。

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

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

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー video.h (Video.h を含む)

関連項目

EMULATOR_ACCESS_ENTRY

SVGA 関数 する

SvgaHwIoPortUchar

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetDeviceBase

VideoPortSetTrappedEmulatorPorts