次の方法で共有


不完全な構成レジスターを持つ PC カードのサポート

多機能 16 ビット PC カード デバイスに各機能の構成レジスタがない場合、このようなデバイスのベンダーは、システム提供の多機能バス ドライバー (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 に存在する場合、PnP マネージャーはデバイスからのデバイス リソース要件を使用しないため、INF は、デバイスで指定されたすべてのリソース要件を再び適用する必要があります。

このようなデバイスの場合、構成オプション レジスタは、単一関数デバイスの プログラミングと同様に、 PcCardConfig エントリを使用してプログラミングできます。 PcCardConfig エントリには、デバイス全体に適用される情報が含まれています。 PcCardConfig エントリは INF LogConfig ディレクティブに記載されています。

多機能デバイスの PcCardConfig エントリを指定する場合、 ConfigIndex の形式は、単一関数デバイスに対して定義されている形式と同じです。 単一機能 PC カードの構成レジスタには、そのデバイスの属性で定義されているリソースのセットへのインデックスが含まれています。 このディレクティブは、構成オプション レジスタのインデックスベースの形式を使用する特定の多機能デバイスでも使用できます。

次の例は、mf.sysをバス ドライバーとして使用し、不完全な構成レジスタを持つ多機能デバイスをインストールするための INF ファイルを示しています。

; MFSupra.inf
; This file installs the Supra Dual 56K modem
; Copyright 1999 Microsoft Corporation

[version]
Signature   = "$Windows NT$"
Provider    = %MSFT%
Class       = MultiFunction              ; system-defined class
ClassGUID   = {4d36e971-e325-11ce-bfc1-08002be10318}
DriverVer   = 05/08/2023,1.0.0.0
CatalogFile = ExampleCat.cat
PnpLockdown = 1

[ControlFlags]
ExcludeFromSelect=*SUP2440  ; don't include PnP devices in lists of
                            ; devices to be manually installed

[Manufacturer]
%M_Supra% = Supra,NTamd64

[Supra.NTamd64]
%Supra1% = Sup2231GoCard.mf, *SUP2440

[Sup2231GoCard.mf.NT]
Include = mf.inf           ; specify that this device needs mf.sys
Needs = MFINSTALL.mf

[Sup2231GoCard.mf.NT.HW]
AddReg=Sup2231.mf.RegHW

[Sup2231.mf.RegHW]
HKR, Child0000, HardwareID,  ,  MF\Shotgun_DEV0  ;modem1
HKR, Child0000, ResourceMap,1,00,02
HKR, Child0001, HardwareID,  ,  MF\Shotgun_DEV1  ;modem2
HKR, Child0001, ResourceMap,1,01,02

[Sup2231GoCard.mf.NT.Services]
Include = mf.inf
Needs = MFINSTALL.mf.Services

[Sup2231GoCard.mf.NT.LogConfigOverride]
LogConfig = Sup223x.mf.Override0, Sup223x.mf.Override1, \
 Sup223x.mf.Override2, Sup223x.mf.Override3

[Sup223x.mf.Override0]
ConfigPriority = NORMAL
IOConfig     = 2F8-2FF                  ; Com2
IOConfig     = 20@100-FFFF%FFE0         ; NIC I/O
IRQConfig    = 3,4,5,7,9,10,11,12,15    ; IRQ
MemConfig    = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 59(W)                    ; ConfigIndex

[Sup223x.mf.Override1]
ConfigPriority = NORMAL
IOConfig     = 3E8-3EF                  ; Com3
IOConfig     = 20@100-FFFF%FFE0         ; NIC I/O
IRQConfig    = 3,4,5,7,9,10,11,12,15    ; IRQ
MemConfig    = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 69(W)                    ; ConfigIndex

[Sup223x.mf.Override2]
ConfigPriority = NORMAL
IOConfig     = 2E8-2EF                  ; Com4
IOConfig     = 20@100-FFFF%FFE0         ; NIC I/O
IRQConfig    = 3,4,5,7,9,10,11,12,15    ; IRQ
MemConfig    = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 79(W)                    ; ConfigIndex

[Sup223x.mf.Override3]
ConfigPriority = NORMAL
IOConfig     = 3F8-3FF                  ; Com1
IOConfig     = 20@100-FFFF%FFE0         ; NIC I/O
IRQConfig    = 3,4,5,7,9,10,11,12,15    ; IRQ
MemConfig    = 1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor
PCCardConfig = 49(W)                    ; ConfigIndex

[Strings]
MSFT = "Microsoft"
M_Supra = "Supra"
Supra1 = "Supra Dual 56K modem"

上記のような INF は、子関数の ID とリソース情報をレジストリにコピーします。 mf.sys ドライバーは、デバイスの子関数を列挙するときに、レジストリから情報を取得します。