In che modo i sistemi operativi basati su Windows NT indirizzano i dispositivi?


9

Sono confuso con notazione come

multi (0) disk (0) rdisk (0) partition (1) \ ...

e

\ Device \ HardDisk1 \ DR1
\ Device \ Video0

Vedo questi indirizzi solo nel contesto di sistemi operativi basati su Windows NT come Windows XP e Windows 7. Cosa significano questi indirizzi e come vengono utilizzati per fare riferimento a dispositivi come dischi rigidi, adattatori grafici, dispositivi di interfaccia umana (tastiere , mouse, ecc.), schede di rete e altro hardware?


Dove e come intendi fare riferimento a loro?
KCotreau,

A volte ricevo messaggi che si riferiscono a dispositivi che usano questi nomi. Quello che voglio capire è cosa significano questi indirizzi, come vengono indirizzati altri dispositivi usando queste notazioni e come questo può essere usato dalle applicazioni per accedere direttamente all'hardware (se possibile).
bwDraco,

Linux utilizza i /devnodi per consentire l'accesso diretto all'hardware. Quello che voglio capire è quello che sembra un meccanismo simile per indirizzare e accedere all'hardware in Windows.
bwDraco,

Dal momento che Windows NT, per quanto ne so, Windows non ti consente di accedere direttamente all'hardware. È così che si protegge. Con Windows 95/98 / ME, qualsiasi programmatore poteva e ciò consentiva loro di rendere instabile il sistema operativo. La soluzione era far passare tutto attraverso il kernel e lasciare che decidesse se fosse sicuro eseguirlo. In caso contrario, potrebbe generare un errore, ma proteggersi da una cattiva programmazione ... almeno in misura maggiore.
KCotreau,

@KCotreau: è vero, ma irrilevante. Ora devi chiedere al kernel. Ma se i dischi rigidi non avessero nomi come questi, non si potrebbe affatto chiedere al kernel. Non saprebbe di quale hard disk stai parlando.
MSalters

Risposte:


9

Contrariamente alla credenza popolare, il kernel di Windows non dispone di un sistema ( "file") File radicata. In * nix, il root è /e in Windows è \. Il sottosistema Win32 non lo espone, però. Puoi esplorarlo con WinObj .

Alcuni (forse familiari) nomi di dispositivi NT ( Me Nsono solo numeri interi):

  • \Device\HarddiskM\DRN: Dischi
  • \Device\HarddiskVolumeN: Partizioni
  • \Device\CdRomN: Unità disco ottico
  • \Device\KeyboardClassN: Tastiere
  • \Device\MountPointManager: Non un dispositivo, ma tiene traccia dei dispositivi di archiviazione
  • \Device\Null: Mangia i dati e restituisce valori nulli (zero)

\Device\HardDisk1\DR1è il vero nome del disco per Windows ed multi(0)disk(0)rdisk(0)partition(1)è legacy - non ha nulla a che fare con il modo in cui Windows fa riferimento ai dispositivi, ma come il boot loader si riferisce al disco. Come funziona, non ne ho idea ( questa pagina ne spiega alcune parti ), ma non è proprio qualcosa di cui Windows si preoccupa dopo l'avvio del boot.

Le versioni più recenti di Windows utilizzano Boot Configuration Data (BCD), che è un file denominato il BCDcui formato è simile a quello del registro, anziché Boot.ini. In genere utilizza identificatori univoci (GUID) per fare riferimento a volumi anziché a lettere di unità o percorsi di file system, ed è ciò che usano le versioni più recenti di Windows.


Che dire dell'hardware diverso dai dispositivi di archiviazione (come \Device\Video0)?
bwDraco,

@DragonLord: ... che ne pensi? Non sono sicuro cosa intendi.
user541686

Quali nomi vengono utilizzati per fare riferimento a tastiere, mouse, adattatori di rete e altri dispositivi?
bwDraco,

@DragonLord: buon punto, lo aggiungerò. Mi sono solo concentrato sul caricamento di avvio, non ho notato che la domanda era più generale.
user541686

Il "file system rooted" che hai citato è chiamato lo spazio dei nomi di Object Manager . L'ho trovato dopo aver fatto clic sul collegamento WinObj e aver fatto delle ricerche. È abbastanza intrigante come Windows NT
funzioni

1

La prima riga, resa obsoleta dal BCD (Boot Configuration Data store) in Windows Vista, Windows 7 e Server 2008, proviene da un file boot.ini per Windows XP o Server 2003 e si trova nella directory principale dell'unità di sistema. Ciò indica a Windows dove andare (quale disco e partizione) per trovare i file di sistema necessari per l'avvio.

Guarda qui una spiegazione dettagliata di "multi" e "rdisk". Il resto significa che guarda il disco 0 (iniziano da 0 e si spostano da lì, e puoi vedere i loro numeri nel gestore disco), la partizione 1 (a differenza dei dischi, questi iniziano a essere numerati da 1 e salgono).

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

Per quanto riguarda l'enumerazione dei dispositivi, è un argomento di programmazione molto complicato, che viene spiegato qui se vuoi che la tua testa esploda. Il formato che hai fornito è come il dispositivo viene indirizzato come ID hardware nel registro.

In pratica puoi guardare questa chiave di registro

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

per far corrispondere qualsiasi errore è possibile ottenere un valore di "ID hardware" in una delle sottochiavi per determinare esattamente a quale dispositivo potrebbe riferirsi l'errore.


1
La sezione 4.2.7 della specifica di calcolo Advanced RISC , ripubblicata qui dalla NetBSD Foundation , racconta tutto sui percorsi ARC.
JdeBP,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.