¿Cómo abordan los dispositivos los sistemas operativos basados ​​en Windows NT?

9

Estoy confundido con notación como

multi (0) disco (0) rdisk (0) partición (1) \ ...

y

\ Dispositivo \ Disco duro1 \ DR1
\ Dispositivo \ Video0

Veo estas direcciones solo en el contexto de sistemas operativos basados ​​en Windows NT como Windows XP y Windows 7. ¿Qué significan estas direcciones y cómo se utilizan para referirse a dispositivos como discos duros, adaptadores gráficos, dispositivos de interfaz humana (teclados , ratones, etc.), adaptadores de red y otro hardware?

bwDraco
fuente
¿Dónde y cómo planea referirse a ellos?
KCotreau
A veces, recibo mensajes que se refieren a dispositivos que usan estos nombres. Lo que quiero entender es qué significan estas direcciones, cómo se abordan otros dispositivos usando estas anotaciones y cómo las aplicaciones pueden usar esto para acceder directamente al hardware (si es posible).
bwDraco
Linux usa /devnodos para permitir el acceso directo al hardware. Lo que quiero entender es lo que parece un mecanismo similar para abordar y acceder al hardware en Windows.
bwDraco
Desde Windows NT, que yo sepa, Windows no le permite acceder directamente al hardware. Así es como se protege a sí mismo. Con Windows 95/98 / ME, cualquier programador podía y les permitía inestabilizar el sistema operativo. La solución fue hacer que todo pasara por el núcleo y dejar que decidiera si era seguro ejecutarlo. De lo contrario, podría arrojar un error, pero protegerse de la mala programación ... al menos en mayor medida.
KCotreau
@KCotreau: Eso es cierto, pero irrelevante. Ahora tiene que preguntarle al núcleo. Pero si los discos duros no tuvieran nombres como estos, no podría preguntarle al núcleo en absoluto. No sabría de qué disco duro está hablando.
MSalters

Respuestas:

9

Contrariamente a la creencia popular, el núcleo de Windows no tiene un sistema ( "archivo") Archivo arraigada. En * nix, la raíz es /, y en Windows es \. Sin embargo, el subsistema Win32 no lo expone. Puedes explorarlo con WinObj .

Algunos (posiblemente familiares) nombres de dispositivos NT ( My Nson solo enteros):

  • \Device\HarddiskM\DRN: Discos
  • \Device\HarddiskVolumeN: Particiones
  • \Device\CdRomN: Unidades de disco óptico
  • \Device\KeyboardClassN: Teclados
  • \Device\MountPointManager: No es un dispositivo, pero realiza un seguimiento de los dispositivos de almacenamiento
  • \Device\Null: Come datos y genera nulos (ceros)

\Device\HardDisk1\DR1es el verdadero nombre del disco para Windows y multi(0)disk(0)rdisk(0)partition(1)es heredado: no tiene nada que ver con cómo Windows se refiere a los dispositivos, sino cómo el cargador de arranque se refiere al disco. Cómo funciona, no tengo idea ( esta página explica partes de la misma ), pero no es realmente algo de lo que se preocupe Windows después de comenzar a arrancar.

Las versiones más recientes de Windows utilizan los Datos de configuración de arranque (BCD), que es un archivo BCDcuyo formato es similar al del registro, en lugar de Boot.ini. Generalmente usa identificadores únicos (GUID) para referirse a volúmenes en lugar de letras de unidad o rutas de sistema de archivos, y es lo que usan las versiones más nuevas de Windows.

usuario541686
fuente
¿Qué pasa con el hardware que no sean dispositivos de almacenamiento (como \Device\Video0)?
bwDraco
@DragonLord: ... ¿y qué? No estoy seguro de lo que quieres decir.
user541686
¿Qué nombres se usan para referirse a teclados, ratones, adaptadores de red y otros dispositivos?
bwDraco
@DragonLord: Buen punto, lo agregaré. Me concentré en la carga de arranque, no noté que la pregunta era más general.
user541686
El "sistema de archivos rooteado" que mencionó se llama el espacio de nombres del Administrador de objetos . Encontré esto después de hacer clic en el enlace WinObj e investigar un poco. Es bastante intrigante cómo funciona Windows NT por dentro ...
bwDraco
1

La primera línea, que se ha vuelto obsoleta por el BCD (Boot Configuration Data store) en Windows Vista, Windows 7 y Server 2008, es de un archivo boot.ini para Windows XP o Server 2003, y se encuentra en el directorio raíz de la unidad del sistema. Eso le dice a Windows a dónde ir (qué disco y partición) para encontrar los archivos del sistema que necesita para arrancar.

Busque aquí una explicación detallada de "multi" y "rdisk". El resto significa que mire el disco 0 (comienzan en 0 y avanzan desde allí, y puede ver sus números en el administrador de discos), partición 1 (a diferencia de los discos, estos comienzan a numerarse en 1 y suben).

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

En cuanto a la enumeración de dispositivos, es un tema de programación muy complicado, que se explica aquí si desea que su cabeza explote. El formato que proporcionó es cómo se dirige el dispositivo como una ID de hardware en el registro.

Como cuestión práctica, puede consultar esta clave de registro

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

para que coincida con cualquier error, puede obtener un valor de "ID de hardware" en una de las subclaves para determinar exactamente a qué dispositivo puede referirse el error.

KCotreau
fuente
1
La Sección 4.2.7 de la Especificación Avanzada de Computación RISC , republicada aquí por la Fundación NetBSD , le dice a uno todo sobre las rutas ARC.
JdeBP