Partager via


Prise en charge des cartes PC qui ont des registres de configuration incomplets

Si un périphérique de carte PC 16 bits multifonction n’a pas de registres de configuration pour chaque fonction, le fournisseur d’un tel appareil peut utiliser le pilote de bus multifonction fourni par le système (mf.sys), mais doit fournir un fichier INF personnalisé et prendre en charge les fonctions individuelles.

Le fournisseur d’un tel appareil sur une plateforme NT peut utiliser le composant fourni par le système suivant :

  • Pilote de fonction pour l’appareil multifonction. (fourni par le système)

    Un INF personnalisé pour l’appareil doit spécifier mf.sys comme pilote de fonction pour l’appareil. Le pilote mf.sys fourni par le système énumère ensuite les fonctions de l’appareil.

    Pour plus d’informations sur l’utilisation du pilote de bus multifonction fourni par le système, consultez Utilisation du pilote mf.sys fourni par le système.

Le fournisseur d’un tel appareil doit fournir les éléments suivants :

  • Fichier INF personnalisé pour l’appareil multifonction. (fourni par le fournisseur)

    Le fournisseur doit fournir un fichier INF à fonctions multiples qui spécifie mf.sys en tant que pilote de bus multifonction, spécifie la classe « MultiFunction » (avec son GUID associé tel que défini dans devguid.h) et fournit les informations de registre de configuration manquantes. Pour plus d’informations, voir plus loin dans cette section.

  • Pilote de fonction PnP pour chaque fonction de l’appareil. (fourni par le fournisseur)

    Étant donné que le pilote de bus multifonction gère la sémantique multifonction, les pilotes de fonction peuvent être les mêmes que ceux utilisés lorsque les fonctions sont empaquetées en tant qu’appareils individuels.

  • Fichier INF pour chaque fonction de l’appareil. (fourni par le fournisseur)

    Les fichiers INF peuvent être les mêmes fichiers que ceux utilisés lorsque les fonctions sont empaquetées en tant qu’appareils individuels. Les fichiers INF n’ont pas besoin d’une sémantique multifonction spéciale.

L’INF personnalisé fourni par le fournisseur pour un tel appareil doit spécifier :

  • mf.sys en tant que service pour l’appareil.

    Pour plus d’informations, consultez Utilisation du pilote bus multifonction fourni par le système.

  • Configuration requise pour les ressources de l’appareil multifonction.

    Spécifiez la configuration requise pour les ressources dans les sections INF DDInstall.LogConfigOverride.

  • ID matériel pour chaque fonction de l’appareil.

    Spécifiez les ID matériels dans une section INF DDInstall.HW.

  • Carte de ressources pour chaque fonction de l’appareil, identifiant les ressources parentes requises par chaque fonction enfant.

    Spécifiez les mappages de ressources dans un DDInstall INF.Section HW. Pour plus d’informations sur la création de mappages de ressources, consultez Création de Cartes de ressources pour un appareil multifonction.

L’inf doit reposer toutes les exigences en matière de ressources spécifiées par l’appareil, car si les configurations de remplacement sont présentes dans l’inf, le gestionnaire PnP n’utilise aucune configuration requise pour les ressources d’appareil de l’appareil.

Pour un tel appareil, l’inscription d’option de configuration peut être programmée à l’aide d’une entrée PcCardConfig , similaire à la programmation d’un appareil à fonction unique. L’entrée PcCardConfig contient des informations qui s’appliquent à l’ensemble de l’appareil. L’entrée PcCardConfig est documentée dans la directive LogConfig INF.

Lors de la spécification d’une entrée PcCardConfig pour un appareil multifonction, le format de ConfigIndex est identique à celui défini pour un appareil à fonction unique. Le registre de configuration pour les cartes PC à fonction unique contient un index vers un ensemble de ressources définies dans les attributs de cet appareil. Cette directive peut également être utilisée avec certains appareils à fonctions multiples qui utilisent le format basé sur l’index du registre d’options de configuration.

L’exemple suivant montre un fichier INF pour l’installation d’un appareil multifonction qui utilise mf.sys en tant que pilote de bus et possède des registres de configuration incomplets.

; 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"

Un INF comme celui indiqué ci-dessus copie l’ID et les informations de ressource pour les fonctions enfants dans le Registre. Le pilote mf.sys récupère les informations du Registre lorsqu’il énumère les fonctions enfants de l’appareil.