PC-Karten mit unvollständigen Konfigurationsregisteradressen
Wenn ein multifunktionsfähiges 16-Bit-PC-Kartengerät über Konfigurationsregister für jede Funktion verfügt, aber keine Zeiger im Attributspeicher auf alle Registersätze enthält (das LONGLINK_MFC Tupel nicht unterstützt), kann der Hersteller eines solchen Geräts den vom System bereitgestellten Multifunktionsbustreiber (mf.sys) verwenden, muss jedoch eine benutzerdefinierte INF-Datei und Unterstützung für die einzelnen Funktionen bereitstellen.
Der Anbieter eines solchen Geräts auf einer NT-basierten Plattform kann einen vom System bereitgestellten Funktionstreiber für das Multifunktionsgerät verwenden.
Ein benutzerdefinierter INF für das Gerät muss mf.sys als Funktionstreiber für das Gerät angeben. Der vom System bereitgestellte mf.sys Treiber listet dann die Funktionen des Geräts auf.
Weitere Informationen zur Verwendung des vom System bereitgestellten mf.sys Treibers finden Sie unter Verwenden des System-Supplied Multifunction Bus Driver.
Der Hersteller eines solchen Geräts muss Folgendes angeben:
Eine benutzerdefinierte INF-Datei für das Multifunktionsgerät. (Vom Anbieter bereitgestellt)
Der Anbieter muss eine Multifunktions-INF-Datei bereitstellen, die mf.sys als Multifunktionsbustreiber angibt, die Klasse "MultiFunction" (mit der zugehörigen GUID gemäß definition in devguid.h) angibt und die fehlende Konfigurationsregisteradresse(n) angibt. Weitere Informationen finden Sie weiter unten in diesem Abschnitt.
Ein PnP-Funktionstreiber für jede Funktion des Geräts. (Vom Anbieter bereitgestellt)
Da der Multifunktionsbustreiber die Multifunktionssemantik verarbeitet, können die Funktionstreiber dieselben Treiber sein, die verwendet werden, wenn die Funktionen als einzelne Geräte gepackt werden.
Eine INF-Datei für jede Funktion des Geräts. (Vom Anbieter bereitgestellt)
Die INF-Dateien können dieselben Dateien sein, die verwendet werden, wenn die Funktionen als einzelne Geräte gepackt werden. Die INF-Dateien benötigen keine spezielle multifunktionelle Semantik.
Der benutzerdefinierte INF für ein solches Multifunktionsgerät muss mindestens einen INF-Abschnitt DDInstall.LogConfigOverride enthalten. Der Abschnitt überschreiben muss einen MfCardConfig-Eintrag für jede Funktion enthalten, der den Speicherort der einzelnen Konfigurationsregister enthält.
Der INF muss alle vom Gerät angegebenen Ressourcenanforderungen neu erstellen, da der PnP-Manager keine Geräteressourcenanforderungen verwendet, wenn Überschreibungskonfigurationen im INF vorhanden sind.
Geben Sie die MfCardConfig-Einträge mithilfe der syntax an, die unter INF LogConfig-Direktive beschrieben wird.
Betrachten Sie beispielsweise den folgenden Auszug aus einem benutzerdefinierten INF für ein Multifunktions-PC-Kartengerät, das ein Modem und einen Netzwerkadapter enthält:
;...
[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
;...
Das Beispiel zeigt zwei MfCardConfig-Einträge , einen für jede Funktion des Geräts. Der erste MfCardConfig-Eintrag enthält die folgenden Informationen:
1000 (ConfigRegBase)
Gibt an, dass im Attributspeicher des Karte am Offset 0x1000 eine Reihe von Konfigurationsregistern vorhanden ist. In diesem Beispiel beschreiben die Informationen in diesen Registern die Modemfunktion auf dem Karte.
47 (ConfigOptions)
Gibt den hexadezimalen Wert für den Bustreiber an, der in das Konfigurationsoptionsregister im ConfigRegBase-Offset (0x1000) programmieren soll.
0 (IoConfigIndex)
Gibt an, dass die E/A-Ressourcen für diese Funktion im ersten IOConfig-Eintrag in diesem Abschnitt aufgeführt sind. Ein Index von null gibt den ersten Eintrag an, der in diesem Beispiel "IOConfig = 3F8-3FF" lautet.
A (attrs)
Weist den Bustreiber an, die Audiofunktion für diese Funktion zu aktivieren, was typisch für ein Modem ist.
Der zweite MfCardConfig-Eintrag enthält Informationen zur zweiten Funktion auf dem Gerät (in diesem Beispiel den Netzwerkadapter). Dieser Eintrag gibt an, dass ein zweiter Satz von Konfigurationsregistern am Offset 0x1080 vorhanden ist. Der Bustreiber schreibt den ConfigOptions-Wert von 0x47 in das Konfigurationsoptionsregister für diese Funktion. Der IoConfigIndex-Wert von 1 weist den Bustreiber an, den zweiten IOConfig-Eintrag in diesem Abschnitt (IOConfig = 10@100-FFFF%FFF0) zu verwenden, um die E/A-Basis und die Limitregister für diese Funktion zu programmieren.
Schließen Sie mehr als einen DDInstall ein. Überschreiben Sie den Abschnitt N im INF, um mehr als eine Auswahl von nicht verteilbaren E/A-Portbereichen anzugeben.
Wenn das Gerät ein Speicherfenster verwendet, das nicht auf null basiert, wird DDInstall verwendet. Überschreiben vonN-Abschnitten muss auch einen PcCardConfig-Eintrag enthalten. Wenn ein Überschreibungsabschnitt sowohl einen MfCardConfig-Eintrag als auch einen PcCardConfig-Eintrag enthält, ignoriert der PCMCIA-Bustreiber den Wert ConfigIndex im PcCardConfig-Eintrag und verwendet nur die MemoryCardBaseN-Informationen . Weitere Informationen zum Eintrag PcCardConfig finden Sie unter Unterstützen von PC-Karten mit unvollständigen Konfigurationsregistern.