Numéro d'article: 115486 - Dernière mise à jour: mardi 1 mars 2005 - Version: 3.3

Comment faire pour contrôle Device Driver charge commande

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.

Sommaire

Agrandir tout | Réduire tout

Résumé

Windows NT est conçue autour du concept que le premier pilote revendiquer un périphérique Obtient l'appartenance de ce périphérique. Cette propriété peut être partagée ou pouvoir être exclusif ; il s'agit pour le pilote de périphérique claiming. Si le périphérique est en mode exclusif revendiqué par un pilote de périphérique, toute nouvelle tentative pour réclamer le périphérique par les pilotes de périphérique chargé par la suite d'échouer. De ce fait, il est impératif que l'ordre dans lequel chargent les pilotes de périphériques peut être modifié par les auteurs de pilote de périphérique. Cet article décrit les deux méthodes que vous pouvez utiliser pour contrôler l'ordre dans lequel chargent les pilotes de périphériques.

Plus d'informations

Il existe deux méthodes que vous pouvez utiliser pour contrôler l'ordre dans lequel chargent les pilotes de périphériques. Les deux méthodes tirent parti des entrées dans le Registre peut être trouvé à \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. La première méthode consiste à modifier le ServiceGroupOrder. La deuxième méthode consiste à affecter des valeurs de paramètre qui déterminent l'ordre de chargement en fonction de la GroupOrderList de pilote. Les valeurs de la balise de type de démarrage et les noms de groupe sont dans le HKLM\SYSTEM\CurrentControlSet\Services\ <drivername>clé qui doit être ajoutée avant les valeurs peuvent être répertoriés dans la liste de commandes de groupe.

Ces deux méthodes fonctionnent uniquement pour les pilotes de périphériques qui ont une valeur de départ de 0 (SERVICE_BOOT_START) ou 1 (SERVICE_SYSTEM_START). Dans tous les cas, les pilotes de périphériques avec une valeur de départ de la charge 0 avant les pilotes de périphériques avec une valeur de départ de 1 tentative de chargement.

Méthode 1: ServiceGroupOrder

Le ServiceGroupOrder contient une liste des noms de groupe dans l'ordre qu'ils seront chargés. Voici le contenu non modifié de ServiceGroupOrder :

Miniport SCSI
port
Disque principal
Classe SCSI
Classe de CD-ROM SCSI
filtre
système de fichiers de démarrage
Base
Port de pointeur
Port de clavier
Pointeur de classe
Classe clavier
Init vidéo
Vidéo
Enregistrer de vidéo
système de fichiers
Journal des événements
Pilotes de flux
NDIS
TDI
NetBIOSGroup
SpoolerGroup
Selon ServiceGroupOrder, pilotes de périphériques dans le chargement de "Class e SCSI" groupe après tous les pilotes de périphériques dans le groupe «Disque principal» et avant les pilotes de périphériques dans le groupe «CD-ROM SCSI class» de charge. Plus groupe d'un pilote de périphérique est haut dans la liste, le plus tôt il charge. La liste ServiceGroupOrder est analysée deux fois. Tout d'abord, tous les pilotes de périphérique avec une valeur de départ de la charge 0; puis, tous les pilotes de périphérique avec une valeur de départ de la charge de 1. Par conséquent, un pilote de périphérique avec une valeur de départ de 0 charges avant tout pilote de périphérique avec une valeur de départ de 1, quel que soit ce que sa position sur la liste ServiceGroupOrder.

Il est possible pour l'auteur de pilote de périphérique modifier le ServiceGroupOrder. Ce faisant, un nouveau groupe peut être créé à n'importe quel endroit dans la liste. Un bon exemple peut être un pilote de périphérique de classe SCSI appelé «SAMPLDRV» devant charger avant «SCSIDISK» car SCSIDISK réclame un périphérique SAMPLDRV doit réclamer. Vous trouverez ici des entrées de Registre de SCSIDISK :
       \registry\machine\system\currentcontrolset\services\scsidisk
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = SCSI class
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
				

Un nouveau groupe peut être ajouté à la ServiceGroupOrder appelé «Charge Me First» et SAMPLDRV peuvent avoir son groupe défini à charge me premier. Voici le ServiceGroupOrder modifié :

Miniport SCSI
port
Disque principal
Tout d'abord de charger me
Classe SCSI
Classe de CD-ROM SCSI
filtre
système de fichiers de démarrage
.
.
.
Vous trouverez ici des entrées de Registre de SAMPLDRV :
       \registry\machine\system\currentcontrolset\services\sampldrv
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = Load Me First
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
				

Avec cette configuration, SAMPLDRV charge avant SCSIDISK.

Méthode n ° 2: GroupOrderList et valeurs de paramètre

Une clé facultative appelée balise peut être incluse dans le Registre d'un pilote de périphérique. La valeur de la balise permet de déterminer l'ordre de chargement des pilotes de périphériques au sein d'un groupe. L'ordre de chargement n'est pas nécessairement dans l'ordre numérique ; il s'agit plutôt, dans l'ordre défini par le GroupOrderList. La première écriture par groupe dans le GroupOrderList est le nombre de valeurs de paramètre. Ceci est suivi par la séquence numérique dans lequel les valeurs de paramètre doivent être chargé. Pilotes de périphériques dans un groupe sont d'abord chargés conformément à leur valeur de balise telle que définie par le GroupOrderList. Si le pilote de périphérique n'a pas une valeur de paramètre ou si la valeur de balise n'est pas le GroupOrderList, ces pilotes de périphériques chargent après chargent les pilotes de périphériques avec des valeurs de paramètre valides. Ces pilotes de périphériques, l'ordre de chargement n'est pas garanti, autre que celle de tous les pilotes de périphérique dans un groupe chargent avant que le groupe suivant charge.

Voici une sortie partielle de la GroupOrderList :
      \registry\machine\system\currentcontrolset\control\grouporderlist
          Base = REG_BINARY 0d 00 00 00 01 00...
          Extended base = REG_BINARY 04 00 00 00 01 00...
          Filter = REG_BINARY 05 00 00 00 01 00...
          Keyboard Class = REG_BINARY 01 00 00 00 01 00...
          Keyboard Port = REG_BINARY 01 00 00 00 01 00...
          Ndis = REG_BINARY 09 00 00 00 01 00...
          Pointer Class = REG_BINARY 01 00 00 00 01 00...
          Pointer Port = REG_BINARY 03 00 00 00 01 00...
          .
          .
          .
				

Remarque : Aucune valeur n'est pour classe SCSI. Pas chaque groupe est représenté dans le GroupOrderList. Lorsqu'un groupe n'est pas le GroupOrderList, l'ordre dans lequel chargent les pilotes de périphériques au sein du groupe ne peut pas être garantie.

Comme avec ServiceGroupOrder, il est possible de modifier le GroupOrderList. En utilisant le même exemple que ci-dessus, entrées de balise pour SCSI de classe peuvent être ajoutées :
      \registry\machine\system\currentcontrolset\control\grouporderlist
          SCSI class = REG_BINARY 02 00 00 00 02 00 00 00 01 00 00 00
          Base = REG_BINARY 0d 00 00 00 01 00...
          Extended base = REG_BINARY 04 00 00 00 01 00...
          .
          .
          .
				

Dans cet exemple, la classe SCSI groupe reconnaît deux valeurs de paramètre, 00000001 et 00000002. L'ordre dans lequel chargent les valeurs de la balise est 00000002 en premier, suivi par 00000001. Si SAMPLDRV se trouve dans le groupe de classe SCSI, qui est identique à SCSIDISK, soit valeur Tag garantit que SAMPLDRV chargé SCSIDISK car SCSIDISK n'a pas de balise valeur et de pilotes non marquées chargent en dernier dans un groupe.

Si pour une raison quelconque SCSIDISK est assignée une valeur Tag égale à 0 x 00000001, SAMPLDRV charge avant SCSIDISK lorsque SAMPLDRV est attribuée une valeur Tag égale 00000002 :
       \registry\machine\system\currentcontrolset\services\sampldrv
          Type = REG_DWORD 0x00000001
          Start = REG_DWORD 0x00000000
          Group = SCSI class
          ErrorControl = REG_DWORD 0x00000000
          DependOnGroup = REG_MULTI_SZ "SCSI miniport"
          Tag = REG_DWORD 0x00000002
				

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Win32 Device Driver Kit for Windows NT 3.5
  • Microsoft Win32 Device Driver Kit for Windows NT 3.5
  • Microsoft Win32 Device Driver Kit for Windows NT 3.51
  • Microsoft Win32 Device Driver Kit for Windows NT 4.0
  • Microsoft Win32 Device Driver Kit for Windows 2000
Mots-clés : 
kbmt kbhowto KB115486 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 115486  (http://support.microsoft.com/kb/115486/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.