다음을 통해 공유


System-Supplied 다기능 버스 드라이버 사용

디바이스의 기본 버스가 PC 카드와 같은 다기능 버스 표준을 지원하는 경우 NT 기반 플랫폼의 다기능 디바이스 공급업체는 시스템 제공 다기능 버스 드라이버(mf.sys)를 사용하여 디바이스를 지원할 수 있습니다.

mf.sys 버스 드라이버는 디바이스 함수의 PnP 열거형을 처리하고 함수 간에 I/O 포트 및 IRQ와 같은 리소스를 중재합니다. mf.sys 드라이버는 부모 다기능 디바이스를 전원 관리하여 자식 함수에 대한 전원 관리를 처리합니다.

mf.sys 사용하려면 다기능 디바이스가 다음 요구 사항을 충족해야 합니다.

  • 디바이스의 기본 버스에는 다기능 표준이 있어야 합니다.

  • 자식 함수의 DEVICE_CAPABILITIES 동일해야 하며 부모 디바이스의 함수와 일치해야 합니다. 자식 함수(IRP_MN_QUERY_CAPABILITIES)의 디바이스 기능을 쿼리할 때 mf.sys 드라이버는 부모 디바이스의 디바이스 기능을 보고합니다.

  • pcmcia.sys 같은 다기능 디바이스가 상주하는 버스의 드라이버는 모든 IRP_MN_READ_CONFIGIRP_MN_WRITE_CONFIG 요청을 처리해야 합니다. mf.sys 드라이버는 이러한 IRP를 부모 버스 드라이버에 전달합니다.

  • 함수는 독립적이어야 합니다. 즉, 시작 순서 종속성을 가질 수 없습니다. 한 함수에 대한 리소스 요구 사항은 다른 함수의 리소스 측면에서 표현할 수 없습니다(예: function1은 I/O 포트 X를 사용하고 function2는 portX + 200을 사용함). 및 각 함수는 다른 함수와 동일한 드라이버에서 서비스를 제공하는 경우에도 별도의 디바이스로 작동할 수 있어야 합니다.

mf.sys 사용하기 위해 공급업체는 mf.sys 디바이스의 드라이버로 지정하는 다기능 디바이스에 대한 INF를 제공합니다. 디바이스가 기본 버스의 다기능 표준을 완전히 정확하게 준수하는 경우 이러한 디바이스의 공급업체는 시스템 제공 mf.inf를 사용할 수 있습니다. 디바이스가 표준을 완전히 준수하지 않는 경우 공급업체는 사용자 지정 INF를 제공해야 합니다.

두 경우 모두 공급업체는 디바이스의 개별 기능에 대한 드라이버 및 INF 파일도 제공합니다.

사용자 지정 다기능 INF의 다음 구조는 다기능 디바이스의 드라이버로 mf.sys 지정하는 데 필요한 구문을 보여 줍니다.

[Version]
; ...
Class = Multifunction   ; the system-defined class for MF devices
ClassGUID  = {4d36e971-e325-11ce-bfc1-08002be10318} ; GUID for MF
; ...
; ...
[ControlFlags]
ExcludeFromSelect = *   ; don't include PnP devices in a displayed list of
                        ; devices available for manual installation
[Manufacturer]
; ...
; ...
[ModelsSection.NTamd64]         ; models section
; ...
; ...
[DDInstall.NT]          ; install section
Include = mf.inf        ; specify that this device requires mf.sys
Needs = MFINSTALL.mf
; ...

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

[DDInstall.NT.HW]
AddReg=DDInstall.RegHW

[DDInstall.RegHW]
; put entries with child function hardware IDs here
; ...

; put override sections here...
; ...

[Strings]
; ...

LAN/모뎀 PC 카드 디바이스의 조합을 고려합니다. 특별한 다기능 지원이 없으면 PCMCIA 버스 드라이버에서 이러한 디바이스를 단일 모뎀 디바이스로 보고할 수 있습니다. 다기능 INF 및 mf.sys 버스 드라이버를 추가로 지원하면 디바이스의 두 기능이 모두 열거됩니다. 다음 그림에서는 필요한 다기능 지원을 사용하여 이러한 콤보 PC 카드에 대해 만들 수 있는 샘플 디바이스 스택을 보여 줍니다.

mf.sys 열거된 다기능 디바이스에 대한 디바이스 스택을 보여 주는 다이어그램

앞의 그림과 같이 다기능 디바이스가 있는 버스의 드라이버는 하나의 디바이스를 열거합니다. 다기능 INF 파일의 하드웨어 ID를 사용하면 PnP 관리자가 mf.sys 버스 드라이버를 디바이스의 함수 드라이버로 로드합니다. mf.sys 버스 드라이버는 LAN 디바이스와 모뎀이라는 두 개의 자식 디바이스를 열거합니다.

PnP 관리자는 각 자식 디바이스를 일반적인 디바이스처럼 취급하고, INF 파일을 찾고, 적절한 드라이버를 로드하고, AddDevice 루틴을 호출하는 등 각 디바이스에 대해 디바이스 스택이 만들어질 때까지 처리합니다. mf.sys 버스 드라이버는 자식 디바이스에 대한 리소스를 중재하고 디바이스의 다른 다기능 측면을 관리합니다. 다기능 카드 공급업체는 별도의 디바이스인 것처럼 여러 함수(LAN 및 모뎀)에 대한 함수 드라이버 및 INF를 제공합니다.

이 그림은 함수 드라이버 및 부모 버스 드라이버와 관련 FDO 및 PDO에 중점을 둡니다. 간단히 하기 위해 모든 필터 드라이버(및 필터 DO)를 생략합니다.