コンフィギュレーション レジスタ アドレスが不完全なPCカード

多機能 16 ビット PC カード デバイスに各関数の構成レジスタがあるが、すべてのレジスタ セットへの属性メモリ内のポインターが含まれていない (LONGLINK_MFC タプルをサポートしていない) 場合、このようなデバイスのベンダーはシステム提供の多機能バス ドライバー (mf.sys) を使用できますが、カスタム INF ファイルと個々の関数のサポートを提供する必要があります。

NT ベースのプラットフォーム上のこのようなデバイスのベンダーは、多機能デバイスのシステム提供のファンクション ドライバーを使用できます。

デバイスのカスタム INF では、デバイスのファンクション ドライバーとしてmf.sysを指定する必要があります。 システム提供のmf.sys ドライバーは、デバイスの機能を列挙します。

システム提供のmf.sys ドライバーの使用 の詳細については、システム提供の多機能バス ドライバーの使用を参照してください。

このようなデバイスのベンダーは、次の情報を提供する必要があります。

  • 多機能デバイスのカスタム INF ファイル。 (ベンダー提供)

    ベンダーは、多機能バス ドライバーとしてmf.sysを指定し、クラス "MultiFunction" (devguid.h で定義されている関連付けられた GUID) を指定し、不足している構成レジスタ アドレスを提供する多機能 INF ファイルを提供する必要があります。 詳細については、このセクションの後半を参照してください。

  • デバイスの各関数の PnP 関数ドライバーを提供します。 (ベンダー提供)

    多機能バス ドライバーは多機能セマンティクスを処理するため、関数ドライバーは、関数が個々のデバイスとしてパッケージ化されるときに使用されるのと同じドライバーにすることができます。

  • デバイスの各関数の INF ファイル。 (ベンダー提供)

    INF ファイルは、関数が個々のデバイスとしてパッケージ化されるときに使用されるのと同じファイルにすることができます。 INF ファイルには、特別な多機能セマンティクスは必要ありません。

このような多機能デバイスのカスタム INF には、 INF DDInstall.LogConfigOverride セクションが少なくとも 1 つ含まれている必要があります。 override セクションには、構成レジスタの 各セットの場所を識別する、各関数の MfCardConfig エントリが含まれている必要があります。

オーバーライド構成が INF に存在する場合、PnP マネージャーはデバイスからのデバイス リソース要件を使用しないため、INF は、デバイスで指定されたすべてのリソース要件を再び適用する必要があります。

INF LogConfig ディレクティブで説明されている構文を使用して、 MfCardConfig エントリを指定します。

たとえば、モデムとネットワーク アダプターを含む多機能 PC カード デバイスのカスタム INF からの次の抜粋を考えてみましょう。

;...
 
[DDInstall.LogConfigOverride]
LogConfig = DDInstall.Override0
 
[DDInstall.Override0]
IOConfig     =    3F8-3FF                  ; Com1
IOConfig     =    10@100-FFFF%FFF0         ; NIC I/O
IRQConfig    =    3,4,5,7,9,10,11          ; IRQ
MemConfig    =    2000@0-FFFFFFFF%FFFFE000 ; Memory Descriptor 0
MemConfig    =    1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor 1
MfCardConfig =    1000:47:0(A)
MfCardConfig =    1080:47:1
;...

この例では、デバイスの関数ごとに 1 つずつ、2 つの MfCardConfig エントリを示します。 最初の MfCardConfig エントリには、次の情報が含まれています。

1000 (ConfigRegBase)
オフセット 0x1000のカードの属性メモリに一連の構成レジスタがあることを指定します。 この例では、これらのレジスタの情報は、カードのモデム機能を記述します。

47 (ConfigOptions)
ConfigRegBase オフセット (0x1000) の構成オプション レジスタにプログラムするバス ドライバーの 16 進数の値を指定します。

0 (IoConfigIndex)
このセクションの最初 の IOConfig エントリに、この関数の I/O リソースが表示されるように指定します。 0 のインデックスは最初のエントリを示します。この例では"IOConfig = 3F8-3FF" です。

A (attrs)
この関数のオーディオ 有効化をオンにするようにバス ドライバーに指示します。これはモデムの場合に一般的です。

2 番目 の MfCardConfig エントリには、デバイス上の 2 番目の関数 (この例ではネットワーク アダプター) に関する情報が含まれています。 このエントリは、オフセット 0x1080に構成レジスタの 2 つ目のセットがあることを指定します。 バス ドライバーは、この関数の 構成オプション レジスタに0x47の ConfigOptions 値を書き込みます。 1 の IoConfigIndex 値は、このセクションの 2 番目の IOConfig エントリ (IOConfig = 10@100-FFFF%FFF0) を使用して、この関数の I/O ベースと制限レジスタをプログラムするようにバス ドライバーに指示します。

非シーケンシャル I/O ポート範囲の複数の選択肢を指定するには、INF に複数の DDInstall.OverrideN セクションを含めます。

デバイスがゼロに基づいていないメモリウィンドウを使用する場合、 DDInstall.OverrideN セクションに PcCardConfig エントリを含める必要があります。 オーバーライド セクションに MfCardConfig エントリと PcCardConfig エントリの両方がある場合、PCMCIA バス ドライバーは PcCardConfig エントリの ConfigIndex 値を無視し、 MemoryCardBaseN 情報のみを使用します。 PcCardConfig エントリの詳細については、 不完全な構成レジスタを持つ PC カードのサポート を参照してください。