Comment les systèmes d'exploitation Windows NT fonctionnent-ils avec les périphériques?

Je suis confondu avec la notation comme

 Multi (0) disque (0) partition rdisk (0) (1) \ ...

et

 \ Device \ HardDisk1 \ DR1
 \ Device \ Video0

Je ne vois ces adresses que dans le contexte de systèmes d'exploitation Windows NT tels que Windows XP et Windows 7. Que signifient ces adresses et comment se référer à des périphériques tels que les disques durs, les cartes graphiques, les périphériques d'interface humaine (claviers , Les souris, etc.), les adaptateurs réseau et autres matériels?

Contrairement à la croyance populaire, le noyau de Windows possède un système de fichier enrainé ("fichier"). Dans * nix, la racine est / , et dans Windows c'est \ . Le sous-système Win32 ne l'expose pas cependant. Vous pouvez l'explorer avec WinObj .

Certains (éventuellement familiers) noms de périphériques NT ( M et N sont que des nombres entiers):

  • \Device\HarddiskM\DRN : Disques
  • \Device\HarddiskVolumeN : Partitions
  • \Device\CdRomN : \Device\CdRomN optiques
  • \Device\KeyboardClassN : Claviers
  • \Device\MountPointManager : pas un périphérique, mais surveille les périphériques de stockage
  • \Device\Null : génère des données et émet des nulls (zéros)

\Device\HardDisk1\DR1 est le véritable nom du disque sur Windows , et le disque multi(0)disk(0)rdisk(0)partition(1) est héritée – elle n'a rien à voir avec la façon dont Windows se réfère aux périphériques, mais Comment le chargeur de démarrage se réfère au disque. Comment ça marche, je n'en ai aucune idée ( cette page en explique une partie ), mais ce n'est pas vraiment quelque chose que Windows se préoccupe de l'amorçage.

Les versions plus récentes de Windows utilisent les données de configuration de démarrage (BCD), qui est un fichier nommé BCD dont le format est similaire au registre, au lieu de Boot.ini . Il utilise généralement des identificateurs uniques (GUID) pour se référer à des volumes au lieu de lettres de lecteur ou de chemins de système de fichiers, et c'est ce que les versions plus récentes de Windows utilisent.

La première ligne, qui a été rendue obsolète par le BCD (Boot Configuration Data Store) dans Windows Vista, Windows 7 et Server 2008, provient d'un fichier boot.ini pour Windows XP ou Server 2003 et se trouve dans le répertoire racine Du lecteur de système. Cela indique à Windows où aller (quel disque et partition) pour trouver les fichiers système qu'il doit démarrer.

Consultez ici une explication détaillée de "multi" et "rdisk". Le reste signifie que regardez le disque 0 (ils commencent à 0 et se déplacent à partir de là, et vous pouvez voir leurs nombres dans le gestionnaire de disque), la partition 1 (contrairement aux disques, ils commencent à être numérotés à 1 et à monter).

http://support.microsoft.com/kb/102873

En ce qui concerne l'énumération des appareils, c'est un sujet de programmation très compliqué, expliqué ici si vous voulez que votre tête éclate. Le format que vous avez donné est la façon dont le périphérique est identifié comme identifiant matériel dans le registre.

Dans la pratique, vous pouvez regarder cette clé de registre

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

Pour faire correspondre toute erreur que vous pouvez accéder à une valeur "identification matérielle" dans l'une des sous-clés pour déterminer exactement à quel appareil l'erreur peut se référer.