다음을 통해 공유


불완전한 구성 레지스터가 있는 PC 카드 지원

다기능 16비트 PC 카드 디바이스에 각 기능에 대한 구성 레지스터가 없는 경우 이러한 디바이스의 공급업체는 시스템 제공 다기능 버스 드라이버(mf.sys)를 사용할 수 있지만 사용자 지정 INF 파일 및 개별 함수에 대한 지원을 제공해야 합니다.

NT 기반 플랫폼의 이러한 디바이스 공급업체는 다음 시스템 제공 구성 요소를 사용할 수 있습니다.

이러한 디바이스의 공급업체는 다음을 제공해야 합니다.

  • 다기능 디바이스에 대한 사용자 지정 INF 파일입니다. (공급업체 제공)

    공급업체는 mf.sys 다기능 버스 드라이버로 지정하고, 클래스 "MultiFunction"(devguid.h에 정의된 대로 연결된 GUID 사용)을 지정하고, 누락된 구성 레지스터 정보를 제공하는 다기능 INF 파일을 제공해야 합니다. 이 섹션의 뒷부분에 있는 추가 정보를 참조하세요.

  • 디바이스의 각 함수에 대한 PnP 함수 드라이버입니다. (공급업체 제공)

    다기능 버스 드라이버는 다기능 의미 체계를 처리하므로 함수 드라이버는 함수가 개별 디바이스로 패키지될 때 사용되는 것과 동일한 드라이버가 될 수 있습니다.

  • 디바이스의 각 함수에 대한 INF 파일입니다. (공급업체 제공)

    INF 파일은 함수가 개별 디바이스로 패키지될 때 사용되는 것과 동일한 파일일 수 있습니다. INF 파일에는 특별한 다기능 의미 체계가 필요하지 않습니다.

이러한 디바이스에 대해 공급업체에서 제공하는 사용자 지정 INF는 다음을 지정해야 합니다.

  • 디바이스에 대한 서비스로 mf.sys.

    자세한 내용은 시스템 제공 다기능 버스 드라이버 사용을 참조하세요.

  • 다기능 디바이스의 리소스 요구 사항입니다.

    INF DDInstall.LogConfigOverride 섹션에서 리소스 요구 사항을 지정합니다.

  • 디바이스의 각 함수에 대한 하드웨어 ID입니다.

    INF DDInstall.HW 섹션에서 하드웨어 ID를 지정합니다.

  • 각 자식 함수에 필요한 부모 리소스를 식별하는 디바이스의 각 함수에 대한 리소스 맵입니다.

    INF DDInstall에서 리소스 맵을 지정합니다.HW 섹션입니다. 리소스 맵을 만드는 방법에 대한 자세한 내용은 다기능 디바이스에 대한 리소스 지도 만들기를 참조하세요.

재정의 구성이 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 드라이버는 디바이스의 자식 함수를 열거할 때 레지스트리에서 정보를 검색합니다.