EMULATOR_ACCESS_ENTRY構造 (ミニポート.h)

EMULATOR_ACCESS_ENTRY構造体は、x86 ベースの NT ベースのオペレーティング システム プラットフォーム上の VGA 互換 (SVGA) アダプターのドライバーによって、VIDEO_PORT_CONFIG_INFO構造体に設定された EmulatorAccessEntries 配列内の要素を指定します。

構文

typedef struct _EMULATOR_ACCESS_ENTRY {
  ULONG                     BasePort;
  ULONG                     NumConsecutivePorts;
  EMULATOR_PORT_ACCESS_TYPE AccessType;
  UCHAR                     AccessMode;
  UCHAR                     StringSupport;
  PVOID                     Routine;
} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;

メンバー

BasePort

V86 エミュレーターによってフックされる I/O ポートまたはポートのバス相対物理アドレスを指定します。 この値とポートの範囲は、VideoPortGetAccessRanges または VideoPortVerifyAccessRanges によってレジストリに既に要求されている I/O ポートのアクセス範囲内にある必要があります。

NumConsecutivePorts

V86 エミュレーターによってフックされる連続するポートの数を BasePort から指定します。 この値は、フックされた各 I/O ポートの幅によって決まります。 たとえば、ポート アドレス0x3C0と0x3C1が 1 つの USHORT アドレス可能ポートとしてフックされている場合、この値は 1 である必要があります。

AccessType

指定された I/O ポートを介して転送されるデータのサイズを UcharUlong、または Ushort のいずれかとして指定します。

AccessMode

指定された I/O ポートに、次の値の 1 つまたは組み合わせ (ORed) としてアクセスする方法を指定します。

  • EMULATOR_READ_ACCESS

  • EMULATOR_WRITE_ACCESS

I/O ポート範囲は、上記のいずれかのモードでアクセスできる必要があります。

StringSupport

指定された AccessType の多くの値が I/O ポートを介して連続して "ポンプ" される場合に、ドライバーによって提供される SvgaHwIoPortXxx 関数が文字列アクセスをサポートするかどうかを示します。 このメンバーが TRUE に設定されている場合、 ルーチン メンバーはミニポート ドライバーが提供する SvgaHwIoPortXxxString 関数のエントリ ポイントを指定する必要があります。

Routine

この構造体で説明されているポートへのアクセスを処理するミニポート ドライバーの SvgaHwIoPortXxx へのポインター。

注釈

x86 ベースのマシンの SVGA ビデオ ハードウェアの VGA 互換ミニポート ドライバーでは、エミュレーター のアクセス範囲を定義する必要があります。VGA 互換ミニポート ドライバーは、高速 I/O のために全画面表示 MS-DOS アプリケーションから直接アクセスするように VideoPortSetTrappedEmulatorPorts を設定できます。 このようなドライバーでは、アプリケーションによって発行される INsINSB/INSW/INSD、OUT s、OUTSB/OUTSW/OUTSDの各 I/O ポート範囲を検証するために、SvgaHwIoPortXxx 関数のセットを指定する必要があります。

各EMULATOR_ACCESS_ENTRY型要素のデータは、ミニポート ドライバーのアクセス範囲内の I/O ポート (アダプター レジスタにアクセスできるメモリの場所) が x86 ベースのプラットフォーム上の V86 エミュレーターによって引き継がれた (フックアウト) かを判断するために使用されます。 全画面表示 MS-DOS アプリケーションによってこれらの場所に書き込まれた値は、ビデオ アダプターに書き込まれるか、ビデオ アダプターから読み取る前に、検証のためにミニポート ドライバーの対応する SvgaHwIoPortXxx 関数にトラップされて転送されます。 ただし、ミニポート ドライバーは、パフォーマンスを向上させるために VideoPortSetTrappedEmulatorPorts を呼び出すことによって、アプリケーションが特定の I/O ポート範囲に直接アクセスできるようにすることができます。

要件

要件
Header miniport.h (Miniport.h を含む)

こちらもご覧ください

VIDEO_PORT_CONFIG_INFO

VideoPortVerifyAccessRanges

VideoPortSetTrappedEmulatorPorts

VIDEO_ACCESS_RANGE

VideoPortGetAccessRanges