Wie adressieren Windows NT-basierte Betriebssysteme Geräte?


9

Ich bin verwirrt mit Notation wie

Multi (0) Festplatte (0) Festplatte (0) Partition (1) \ ...

und

\ Device \ HardDisk1 \ DR1
\ Gerät \ Video0

Ich sehe diese Adressen nur im Kontext von Windows NT-basierten Betriebssystemen wie Windows XP und Windows 7. Was bedeuten diese Adressen und wie werden sie verwendet, um auf Geräte wie Festplatten, Grafikadapter, Benutzeroberflächengeräte (Tastaturen) zu verweisen , Mäuse usw.), Netzwerkadapter und andere Hardware?


Wo und wie wollen Sie sich auf sie beziehen?
KCotreau

Manchmal erhalte ich Nachrichten, die sich auf Geräte beziehen, die diese Namen verwenden. Ich möchte verstehen, was diese Adressen bedeuten, wie andere Geräte mit diesen Notationen angesprochen werden und wie diese von Anwendungen verwendet werden können, um direkt auf Hardware zuzugreifen (falls möglich).
bwDraco

Linux verwendet /devKnoten, um direkten Zugriff auf Hardware zu ermöglichen. Was ich verstehen möchte, ist, wie ein ähnlicher Mechanismus zum Adressieren und Zugreifen auf Hardware unter Windows aussieht.
bwDraco

Nach Windows NT können Sie nach meinem besten Wissen nicht direkt auf Hardware zugreifen. So schützt es sich. Mit Windows 95/98 / ME konnte jeder Programmierer das Betriebssystem instabil machen. Die Lösung bestand darin, alles durch den Kernel laufen zu lassen und entscheiden zu lassen, ob die Ausführung sicher ist. Wenn nicht, könnte es einen Fehler auslösen, sich aber vor schlechter Programmierung schützen ... zumindest in größerem Maße.
KCotreau

@KCotreau: Das stimmt, ist aber irrelevant. Sie müssen jetzt den Kernel fragen. Aber wenn Festplatten solche Namen nicht hätten, könnten Sie den Kernel überhaupt nicht fragen. Es würde nicht wissen, von welcher Festplatte Sie sprechen.
MSalters

Antworten:


9

Entgegen der landläufigen Meinung, der Windows - Kernel ist eine verwurzelte Datei ( „Datei“) System. In * nix ist der Stamm /und in Windows ist es \. Das Win32-Subsystem macht es jedoch nicht verfügbar. Sie können es mit WinObj erkunden .

Einige (möglicherweise bekannte) NT-Gerätenamen ( Mund Nsind nur Ganzzahlen):

  • \Device\HarddiskM\DRN: Festplatten
  • \Device\HarddiskVolumeN: Partitionen
  • \Device\CdRomN: Optische Laufwerke
  • \Device\KeyboardClassN: Tastaturen
  • \Device\MountPointManager: Kein Gerät, sondern verfolgt Speichergeräte
  • \Device\Null: Frisst Daten auf und gibt Nullen (Nullen) aus

\Device\HardDisk1\DR1ist der wahre Name der Festplatte für Windows und multi(0)disk(0)rdisk(0)partition(1)ein Legacy- Name. Er hat nichts damit zu tun, wie Windows auf Geräte verweist, sondern wie sich der Bootloader auf die Festplatte bezieht. Wie es funktioniert, weiß ich nicht ( diese Seite erklärt Teile davon ), aber es ist nicht wirklich etwas, mit dem sich Windows beschäftigt, nachdem es gestartet wurde.

Neuere Windows-Versionen verwenden BCDstattdessen die Boot Configuration Data (BCD), eine Datei mit dem Namen, deren Format dem der Registrierung entspricht Boot.ini. Im Allgemeinen werden eindeutige Bezeichner (GUIDs) verwendet, um auf Volumes anstelle von Laufwerksbuchstaben oder Dateisystempfaden zu verweisen. Dies wird in neueren Windows-Versionen verwendet.


Was ist mit anderer Hardware als Speichergeräten (z. B. \Device\Video0)?
bwDraco

@DragonLord: ... was ist damit? Nicht sicher was du meinst.
user541686

Welche Namen werden für Tastaturen, Mäuse, Netzwerkadapter und andere Geräte verwendet?
bwDraco

@DragonLord: Guter Punkt, das werde ich hinzufügen. Ich habe mich nur auf das Laden von Booten konzentriert und nicht bemerkt, dass die Frage allgemeiner ist.
user541686

Das von Ihnen erwähnte "verwurzelte Dateisystem" wird als Object Manager- Namespace bezeichnet. Ich fand dies, nachdem ich durch den WinObj-Link geklickt und einige Nachforschungen angestellt hatte. Es ist ziemlich faszinierend, wie Windows NT von innen funktioniert ...
bwDraco

1

Die erste Zeile, die vom BCD (Boot Configuration Data Store) in Windows Vista, Windows 7 und Server 2008 veraltet ist, stammt aus einer boot.ini-Datei für Windows XP oder Server 2003 und befindet sich im Stammverzeichnis des Systemlaufwerks. Dadurch wird Windows mitgeteilt, wohin es gehen soll (welche Festplatte und Partition), um die Systemdateien zu finden, die zum Booten benötigt werden.

Schauen Sie hier für eine detaillierte Erklärung von „multi“ und „rdisk“. Der Rest bedeutet, dass Sie sich Datenträger 0 ansehen (sie beginnen bei 0 und bewegen sich von dort nach oben, und Sie können ihre Nummern im Datenträgermanager sehen), Partition 1 (im Gegensatz zu den Datenträgern werden diese bei 1 nummeriert und steigen an).

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

Was die Aufzählung der Geräte betrifft, handelt es sich um ein sehr kompliziertes Programmierthema, das hier erklärt wird , wenn Sie möchten, dass Ihr Kopf explodiert. Das von Ihnen angegebene Format gibt an, wie das Gerät als Hardware-ID in der Registrierung adressiert wird.

In der Praxis können Sie sich diesen Registrierungsschlüssel ansehen

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

Um einem Fehler zu entsprechen, erhalten Sie möglicherweise einen "Hardware-ID" -Wert in einem der Unterschlüssel, um genau zu bestimmen, auf welches Gerät sich der Fehler beziehen kann.


1
In Abschnitt 4.2.7 der Advanced RISC Computing Specification , die hier von der NetBSD Foundation erneut veröffentlicht wurde , wird alles über ARC-Pfade beschrieben.
JdeBP
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.