W jaki sposób systemy operacyjne oparte na Windows NT adresują urządzenia?

9

Jestem mylony z notacją jak

multi (0) dysk (0) partycja rdisk (0) (1) \ ...

i

\ Device \ HardDisk1 \ DR1
\ Device \ Video0

Widzę te adresy tylko w kontekście systemów operacyjnych opartych na Windows NT, takich jak Windows XP i Windows 7. Co oznaczają te adresy i jak są one używane w odniesieniu do urządzeń takich jak dyski twarde, karty graficzne, urządzenia interfejsu człowieka (klawiatury) , myszy itp.), kart sieciowych i innego sprzętu?

bwDraco
źródło
Gdzie i jak zamierzasz się do nich odwoływać?
KCotreau
Czasami otrzymuję wiadomości odnoszące się do urządzeń używających tych nazw. Chcę zrozumieć, co oznaczają te adresy, w jaki sposób adresowane są inne urządzenia za pomocą tych notacji i jak mogą one być wykorzystywane przez aplikacje do bezpośredniego dostępu do sprzętu (jeśli to możliwe).
bwDraco
Linux używa /devwęzłów, aby umożliwić bezpośredni dostęp do sprzętu. Chcę zrozumieć, co przypomina podobny mechanizm adresowania i uzyskiwania dostępu do sprzętu w systemie Windows.
bwDraco
Od Windows NT, zgodnie z moją najlepszą wiedzą, Windows nie pozwala na bezpośredni dostęp do sprzętu. Tak się chroni. W przypadku Windows 95/98 / ME każdy programista mógł, co pozwoliło na niestabilność systemu operacyjnego. Rozwiązaniem było sprawienie, aby wszystko przechodziło przez jądro i pozwoliło mu zdecydować, czy można go bezpiecznie wykonać. Jeśli nie, może rzucić błąd, ale uchronić się przed złym programowaniem ... przynajmniej w większym stopniu.
KCotreau
@KCotreau: To prawda, ale bez znaczenia. Teraz musisz zapytać jądro. Ale jeśli dyski twarde nie mają takich nazw, nie można w ogóle zapytać jądra. Nie wiedziałby, o którym dysk twardy mówisz.
MSalters

Odpowiedzi:

9

Wbrew powszechnemu przekonaniu, jądro systemu Windows nie mają zakorzenione plik systemowy ( „plik”). W * nix głównym jest /, aw Windowsie \. Podsystem Win32 tego jednak nie ujawnia. Możesz to zbadać za pomocą WinObj .

Niektóre (prawdopodobnie znane) nazwy urządzeń NT ( Mi Nsą to tylko liczby całkowite):

  • \Device\HarddiskM\DRN: Dyski
  • \Device\HarddiskVolumeN: Partycje
  • \Device\CdRomN: Napędy dysków optycznych
  • \Device\KeyboardClassN: Klawiatury
  • \Device\MountPointManager: Nie urządzenie, ale śledzi urządzenia pamięci masowej
  • \Device\Null: Zjada dane i wyprowadza wartości zerowe (zera)

\Device\HardDisk1\DR1jest prawdziwą nazwą dysku dla systemu Windows i multi(0)disk(0)rdisk(0)partition(1)jest spuścizną - nie ma to nic wspólnego z tym, jak Windows odnosi się do urządzeń, ale jak boot loader odnosi się do dysku. Jak to działa, nie mam pojęcia ( ta strona wyjaśnia jego części ), ale tak naprawdę nie jest to coś, czym Windows się martwi po uruchomieniu.

Nowsze wersje systemu Windows używają danych konfiguracji rozruchu (BCD), które są nazwanymi plikami, BCDktórych format jest podobny do rejestru, zamiast Boot.ini. Zasadniczo używa unikalnych identyfikatorów (GUID) w odniesieniu do woluminów zamiast liter dysku lub ścieżek systemu plików, i to właśnie w nowszych wersjach systemu Windows.

użytkownik541686
źródło
Co ze sprzętem innym niż urządzenia pamięci masowej (takie jak \Device\Video0)?
bwDraco
@DragonLord: ... a co z tym? Nie wiem co masz na myśli.
user541686,
Jakie nazwy są używane w odniesieniu do klawiatur, myszy, kart sieciowych i innych urządzeń?
bwDraco
@DragonLord: Dobra uwaga, dodam to. Po prostu skupiłem się na ładowaniu rozruchu, nie zauważyłem, że pytanie było bardziej ogólne.
user541686,
Wspomniany „zrootowany system plików” nazywa się przestrzenią nazw Menedżera obiektów . Znalazłem to po kliknięciu linku WinObj i przeprowadzeniu pewnych badań. To dość intrygujące, jak Windows NT działa wewnątrz ...
bwDraco
1

Pierwszy wiersz, który stał się nieaktualny przez BCD (magazyn danych konfiguracji rozruchu) w systemie Windows Vista, Windows 7 i Server 2008, pochodzi z pliku boot.ini dla systemu Windows XP lub Server 2003 i znajduje się w katalogu głównym dysku systemowego. To mówi Windowsowi, dokąd iść (jaki dysk i partycję), aby znaleźć pliki systemowe, które należy uruchomić.

Spójrz tutaj na szczegółowe wyjaśnienie „multi” i „rdisk”. Reszta oznacza, że ​​spójrz na dysk 0 (zaczynają się od 0 i przesuwają się stamtąd w górę, i możesz zobaczyć ich numery w menedżerze dysków), partycja 1 (w przeciwieństwie do dysków, te zaczynają być numerowane od 1 i iść w górę).

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

Jeśli chodzi o wyliczanie urządzeń, jest to bardzo skomplikowany temat programowania, który zostanie wyjaśniony tutaj, jeśli chcesz eksplodować głową. Podany format określa sposób adresowania urządzenia jako identyfikatora sprzętowego w rejestrze.

W praktyce możesz spojrzeć na ten klucz rejestru

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

aby dopasować dowolny błąd, można uzyskać wartość „identyfikatora sprzętu” w jednym z podkluczy, aby dokładnie określić, do jakiego urządzenia może odnosić się błąd.

KCotreau
źródło
1
Sekcja 4.2.7 Zaawansowanej specyfikacji obliczeniowej RISC , opublikowana tutaj przez NetBSD Foundation , mówi wszystko o ścieżkach ARC.
JdeBP,