Verwenden des System-Supplied Multifunktionsbustreibers

Wenn der zugrunde liegende Bus eines Geräts einen Multifunktionsbusstandard wie pc Card unterstützt, kann der Hersteller für ein Multifunktionsgerät auf einer NT-basierten Plattform den vom System bereitgestellten Multifunktionsbustreiber (mf.sys) zur Unterstützung des Geräts verwenden.

Der mf.sys Bustreibers verarbeitet die PnP-Enumeration der Gerätefunktionen und vermittelt Ressourcen wie E/A-Ports und IRQs zwischen den Funktionen. Der mf.sys Treiber übernimmt die Energieverwaltung für die untergeordneten Funktionen, indem er das übergeordnete Multifunktionsgerät verwaltet.

Um mf.sys verwenden zu können, muss ein Multifunktionsgerät die folgenden Anforderungen erfüllen:

  • Der dem Gerät zugrunde liegende Bus muss über einen Multifunktionsstandard verfügen.

  • Die DEVICE_CAPABILITIES der untergeordneten Funktionen muss identisch sein und mit denen des übergeordneten Geräts übereinstimmen. Wenn sie nach den Gerätefunktionen einer untergeordneten Funktion (IRP_MN_QUERY_CAPABILITIES) abgefragt werden, meldet der mf.sys Treiber die Gerätefunktionen des übergeordneten Geräts.

  • Der Treiber für den Bus, in dem sich das Multifunktionsgerät befindet, z. B. pcmcia.sys, muss alle IRP_MN_READ_CONFIG - und IRP_MN_WRITE_CONFIG-Anforderungen verarbeiten. Der mf.sys Treiber übergibt diese IRPs einfach an den übergeordneten Bustreiber.

  • Die Funktionen müssen unabhängig sein: Sie können keine Startreihenfolgenabhängigkeiten aufweisen; die Ressourcenanforderungen für eine Funktion können nicht in Bezug auf die Ressourcen einer anderen Funktion ausgedrückt werden (z. B. verwendet function1 E/A-Port X und Function2 verwendet portX + 200); und jede Funktion muss in der Lage sein, als separates Gerät zu arbeiten, auch wenn sie von denselben Treibern wie eine andere Funktion verwaltet wird.

Um mf.sys zu verwenden, stellt ein Anbieter ein INF für das Multifunktionsgerät bereit, das mf.sys als Treiber für das Gerät angibt. Wenn ein Gerät vollständig und genau dem Multifunktionsstandard für seinen zugrunde liegenden Bus entspricht, kann der Hersteller eines solchen Geräts das vom System bereitgestellte mf.inf verwenden. Wenn ein Gerät nicht vollständig dem Standard entspricht, muss der Hersteller eine benutzerdefinierte INF bereitstellen.

In beiden Fällen liefert der Anbieter auch Treiber und INF-Dateien für die einzelnen Funktionen auf dem Gerät.

Das folgende Gerüst eines benutzerdefinierten Multifunktions-INF veranschaulicht die erforderliche Syntax zum Angeben von mf.sys als Treiber für ein Multifunktionsgerät:

[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]
; ...

Ziehen Sie eine Kombination aus LAN/Modem-PC-Kartengerät in Betracht. Ohne spezielle Multifunktionsunterstützung kann ein solches Gerät vom PCMCIA-Bustreiber als einzelnes Modemgerät gemeldet werden. Mit der zusätzlichen Unterstützung eines Multifunktions-INF und des mf.sys Bustreibers werden beide Funktionen des Geräts aufgezählt. Die folgende Abbildung zeigt die Beispielgerätestapel, die für eine solche Kombinations-PC-Karte mit der erforderlichen Multifunktionsunterstützung erstellt werden können.

Diagramm zur Veranschaulichung von Gerätestapeln für ein multifunktionsfähiges Gerät, das von mf.sys aufgezählt wird.

Wie in der vorherigen Abbildung gezeigt, zählt der Treiber für den Bus, in dem sich das Multifunktionsgerät befindet, ein Gerät auf. Die Hardware-ID in der Multifunktions-INF-Datei bewirkt, dass der PnP-Manager den mf.sys Bustreiber als Funktionstreiber für das Gerät lädt. Der mf.sys Bustreiber listet zwei untergeordnete Geräte auf, ein LAN-Gerät und ein Modem.

Der PnP-Manager behandelt jedes untergeordnete Gerät wie ein typisches Gerät, sucht NACH INF-Dateien, lädt die entsprechenden Treiber, ruft ihre AddDevice-Routinen auf usw. auf, bis für jedes Gerät ein Gerätestapel erstellt wird. Der mf.sys Bustreibers schlichtt die Ressourcen für die untergeordneten Geräte und verwaltet alle anderen Multifunktionsaspekte des Geräts. Der Anbieter der Multifunktions-Karte stellt Funktionstreiber und INFs für die verschiedenen Funktionen (LAN und Modem) bereit, so als wären sie separate Geräte.

Die Abbildung konzentriert sich auf die Funktionstreiber und übergeordneten Bustreiber und die zugehörigen FDOs und PDOs. Alle Filtertreiber (und Filter-DOs) werden der Einfachheit halber weggelassen.