Як операційні системи на базі Windows NT звертаються до пристроїв?


9

Мені плутають нотації на кшталт

мульти (0) диск (0) rdisk (0) розділ (1) \ ...

і

\ Пристрій \ HardDisk1 \ DR1
\ Пристрій \ Відео0

Я бачу ці адреси лише в контексті операційних систем на базі Windows NT, таких як Windows XP та Windows 7. Що означають ці адреси та як вони використовуються для позначення пристроїв, таких як жорсткі диски, графічні адаптери, пристрої людського інтерфейсу (клавіатури , миші тощо), мережеві адаптери та інше обладнання?


Де і як ви плануєте переглядати їх?
KCotreau

Іноді я отримую повідомлення, що стосуються пристроїв, що використовують ці назви. Я хочу зрозуміти, що означають ці адреси, як адресуються інші пристрої за допомогою цих позначень і як це може використовуватися програмами для прямого доступу до апаратних засобів (якщо це можливо).
bwDraco

Linux використовує /devвузли, щоб дозволити прямий доступ до обладнання. Що я хочу зрозуміти, це те, що схожий на аналогічний механізм для адреси та доступу до апаратного забезпечення під Windows.
bwDraco

Оскільки Windows NT, наскільки мені відомо, Windows не дозволяє безпосередньо отримувати доступ до обладнання. Саме так він захищає себе. У Windows 95/98 / ME будь-який програміст міг, і це дозволило зробити ОС нестабільною. Рішення полягало в тому, щоб все пройшло через ядро, і нехай воно вирішило, чи безпечно це виконати. Якщо ні, то це може призвести до помилки, але захистити себе від поганого програмування ... принаймні більшою мірою.
KCotreau

@KCotreau: Це правда, але не має значення. Тепер вам потрібно запитати ядро. Але якщо на жорстких дисках не було таких імен, ви не можете запитати ядро. Невідомо, про який жорсткий диск ви говорите.
MSalters

Відповіді:


9

Всупереч поширеній думці, ядро Windows , дійсно мають кореневої системи ( «Файл») файл. У * nix корінь є /, а в Windows - це \. Підсистема Win32, однак, не піддається цьому. Ви можете вивчити його за допомогою WinObj .

Деякі назви (можливо, знайомих) NT-пристроїв ( Mі Nє лише цілими числами):

  • \Device\HarddiskM\DRN: Диски
  • \Device\HarddiskVolumeN: Перегородки
  • \Device\CdRomN: Оптичні дисководи
  • \Device\KeyboardClassN: Клавіатури
  • \Device\MountPointManager: Не пристрій, але відслідковує пристрої зберігання даних
  • \Device\Null: З'їдає дані та виводить нулі (нулі)

\Device\HardDisk1\DR1є справжньою назвою диска для Windows і multi(0)disk(0)rdisk(0)partition(1)є застарілим - воно не має нічого спільного з тим, як Windows посилається на пристрої, а з тим, як завантажувач посилається на диск. Як це працює, я поняття не маю ( ця сторінка пояснює його частини ), але насправді Windows не стосується себе після запуску завантаження.

Новіші версії Windows використовують дані конфігурації завантаження (BCD), що є файлом з назвою BCD, формат якого подібний до формату реєстру, а не Boot.ini. Зазвичай він використовує унікальні ідентифікатори (GUID) для позначення томів замість букв диска або шляхів файлової системи, і це те, що використовуються новіші версії Windows.


Що з обладнанням, крім пристроїв зберігання даних (таких як \Device\Video0)?
bwDraco

@DragonLord: ... що з цим? Не впевнений, що ти маєш на увазі.
користувач541686

Які назви використовуються для позначення клавіатур, мишей, мережевих адаптерів та інших пристроїв?
bwDraco

@DragonLord: Добрий момент, я додам це. Я просто зосередився на завантаженні завантаження, не помітив, питання було більш загальним.
користувач541686

Згадана вами "вкорінена файлова система" називається простором імен " Менеджер об'єктів" . Я виявив це, натиснувши посилання WinObj та провівши деякі дослідження. Це досить інтригує, як працює Windows NT зсередини ...
bwDraco

1

Перший рядок, який був застарілий BCD (файл зберігання даних про конфігурацію завантаження) в Windows Vista, Windows 7 та Server 2008, - з файлу boot.ini для Windows XP або Server 2003 і знаходиться в кореневій директорії системного накопичувача. Це підказує Windows, куди слід (який диск та розділ), щоб знайти системні файли, які він потребує для завантаження.

Подивіться тут для детального пояснення "мульти" та "rdisk". Решта означає, що дивіться на диск 0 (вони починаються з 0 і рухаються звідти, і ви можете побачити їх номери в диспетчері дисків), розділ 1 (на відміну від дисків, вони починаються з нумерації в 1 і піднімаються вгору).

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

Що стосується перерахування пристроїв, то це дуже складний предмет програмування, який пояснюється тут, якщо ви хочете, щоб ваша голова вибухнула. Формат, який ви надали, - це те, як пристрій адресується як ідентифікатор обладнання в реєстрі.

В якості практичного питання можна переглянути цей ключ реєстру

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum

щоб відповідати будь-якій помилці, ви можете отримати значення "апаратний ідентифікатор" в одному з підключів, щоб точно визначити, на який пристрій може ставитися помилка.


1
Розділ 4.2.7 Розширеної специфікації обчислень RISC , перепублікованої тут Фондом NetBSD , розповідає все про шляхи ARC.
JdeBP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.