Partager via


Cartes PC avec des adresses de registre de configuration incomplètes

Si un périphérique pc card 16 bits multifonction dispose de registres de configuration pour chaque fonction, mais ne contient pas de pointeurs dans la mémoire d’attribut vers tous les jeux de registres (ne prend pas en charge le LONGLINK_MFC tuple), 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 un pilote de fonction fourni par le système pour le périphérique multifonction.

Un INF personnalisé pour l’appareil doit spécifier mf.sys comme pilote de fonction pour l’appareil. Le pilote de 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 mf.sys fourni par le système, consultez Utilisation du pilote de bus multifonction System-Supplied.

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 multifonction qui spécifie mf.sys comme pilote de bus multifonction, spécifie la classe « MultiFunction » (avec son GUID associé tel que défini dans devguid.h) et fournit la ou les adresses de registre de configuration manquantes. Consultez plus d’informations plus loin dans cette section.

  • Un 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 que périphériques individuels.

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

    Les fichiers INF peuvent être les mêmes 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é pour un tel appareil multifonction doit contenir au moins une section INF DDInstall.LogConfigOverride. La section remplacement doit contenir une entrée MfCardConfig pour chaque fonction, identifiant l’emplacement de chaque ensemble de registres de configuration.

L’INF doit reformaté toutes les exigences en ressources spécifiées par l’appareil, car si des configurations de remplacement sont présentes dans l’INF, le gestionnaire PnP n’utilise pas les besoins en ressources de l’appareil.

Spécifiez les entrées MfCardConfig à l’aide de la syntaxe décrite dans la directive INF LogConfig.

Par exemple, considérez l’extrait suivant d’un INF personnalisé pour un appareil de carte PC multifonction qui contient un modem et une carte réseau :

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

L’exemple montre deux entrées MfCardConfig , une pour chaque fonction de l’appareil. La première entrée MfCardConfig contient les informations suivantes :

1000 (ConfigRegBase)
Spécifie qu’il existe un ensemble de registres de configuration dans la mémoire d’attribut du carte au 0x1000 de décalage. Dans cet exemple, les informations contenues dans ces registres décrivent la fonction modem sur le carte.

47 (ConfigOptions)
Spécifie la valeur hexadécimale pour le pilote de bus à programmer dans le registre d’options de configuration au niveau du décalage ConfigRegBase (0x1000).

0 (IoConfigIndex)
Spécifie que les ressources d’E/S pour cette fonction sont répertoriées dans la première entrée IOConfig de cette section. Un index de zéro indique la première entrée, qui dans cet exemple est « IOConfig = 3F8-3FF ».

A (attrs)
Indique au pilote de bus d’activer l’activation audio pour cette fonction, ce qui est typique pour un modem.

La deuxième entrée MfCardConfig contient des informations sur la deuxième fonction sur l’appareil (la carte réseau, dans cet exemple). Cette entrée spécifie qu’il existe un deuxième ensemble de registres de configuration au 0x1080 de décalage. Le pilote de bus écrit la valeur ConfigOptions de 0x47 dans le registre de l’option de configuration pour cette fonction. La valeur IoConfigIndex d’un indique au pilote de bus d’utiliser la deuxième entrée IOConfig de cette section (IOConfig = 10@100-FFFF%FFF0) pour programmer les registres de base et de limite d’E/S pour cette fonction.

Incluez plusieurs DDInstall. Remplacezla section N dans l’INF pour spécifier plusieurs plages de ports d’E/S non carrés.

Si l’appareil utilise une fenêtre mémoire qui n’est pas basée à zéro, le DDInstall. Remplacerla ou les sections N doivent également inclure une entrée PcCardConfig . Si une section de remplacement a à la fois une entrée MfCardConfig et une entrée PcCardConfig , le pilote de bus PCMCIA ignore la valeur ConfigIndex dans l’entrée PcCardConfig et utilise simplement les informations MemoryCardBaseN . Pour plus d’informations sur l’entrée PcCardConfig, consultez Prise en charge des cartes PC qui ont des registres de configuration incomplets.