Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm confused with notation like

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

and

\Device\HardDisk1\DR1
\Device\Video0

I see these addresses only in the context of Windows NT-based operating systems such as Windows XP and Windows 7. What do these addresses mean and how are they used to refer to devices such as hard disks, graphics adapters, human interface devices (keyboards, mice, etc.), network adapters, and other hardware?

share|improve this question
    
Where and how do you plan on refering to them? –  KCotreau Jul 8 '11 at 3:17
    
Sometimes, I get messages that refer to devices using these names. What I want to understand is what these addresses mean, how other devices are addressed using these notations, and how this may be used by applications to access hardware directly (if possible). –  DragonLord Jul 8 '11 at 3:20
    
Linux uses /dev nodes to allow direct access to hardware. What I want to understand is what looks like a similar mechanism to address and access hardware under Windows. –  DragonLord Jul 8 '11 at 3:28
    
Since Windows NT, to the best of my knowledge, Windows does not allow you to directly access hardware. That is how it protects itself. With Windows 95/98/ME, any programmer could, and it allowed them to make the OS unstable. The solution was to make everything go through the kernel, and let it decide if it was safe to execute. If not, it could throw an error, but protect itself from bad programming...at least to a greater degree. –  KCotreau Jul 8 '11 at 3:49
    
@KCotreau: That's true, but irrelevant. You now have to ask the kernel. But if harddisks didn't have names such as these, you couldn't ask the kernel at all. It wouldn't know which harddisk you are talking about. –  MSalters Jul 8 '11 at 11:56

2 Answers 2

up vote 6 down vote accepted

Contrary to popular belief, the Windows kernel does have a rooted file ("file") system. In *nix, the root is /, and in Windows it's \. The Win32 subsystem doesn't expose it, though. You can explore it with WinObj.

Some (possibly familiar) NT device names (M and N are just integers):

  • \Device\HarddiskM\DRN: Disks
  • \Device\HarddiskVolumeN: Partitions
  • \Device\CdRomN: Optical disc drives
  • \Device\KeyboardClassN: Keyboards
  • \Device\MountPointManager: Not a device, but keeps track of storage devices
  • \Device\Null: Eats up data and outputs nulls (zeroes)

\Device\HardDisk1\DR1 is the true name of the disk to Windows, and multi(0)disk(0)rdisk(0)partition(1) is legacy -- it has nothing to do with how Windows refers to devices, but how the boot loader refers to the disk. How it works, I have no idea (this page explains parts of it), but it's not really something Windows concerns itself with after it starts booting.

Newer versions of Windows use the Boot Configuration Data (BCD), which is a file named BCD whose format is like that of the registry, instead of Boot.ini. It generally uses unique identifiers (GUIDs) to refer to volumes instead of drive letters or file system paths, and it's what newer versions of Windows use.

share|improve this answer
    
What about hardware other than storage devices (such as \Device\Video0)? –  DragonLord Jul 8 '11 at 3:51
    
@DragonLord: ... what about it? Not sure what you mean. –  Mehrdad Jul 8 '11 at 3:52
    
What names are used to refer to keyboards, mice, network adapters, and other devices? –  DragonLord Jul 8 '11 at 3:54
    
@DragonLord: Good point, I'll add that. I just focused on boot loading, didn't notice the question was more general. –  Mehrdad Jul 8 '11 at 3:55
    
The "rooted file system" you mentioned is called the Object Manager namespace. I found this after clicking through the WinObj link and doing some research. It's quite intriguing how Windows NT works on the inside... –  DragonLord Jul 8 '11 at 4:20

The first line, which has been rendered obsolete by the BCD (Boot Configuration Data store) in Windows Vista, Windows 7, and Server 2008, is from a boot.ini file for Windows XP or Server 2003, and is located in the root directory of the system drive. That tells Windows where to go (what disk and partition) to find the system files it needs to boot.

Look here for a detailed explanation of "multi" and "rdisk". The rest means that look at disk 0 (they start at 0 and move up from there, and you can see their numbers in the disk manager), partition 1 (unlike the disks, these start being numbered at 1 and go up).

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

As far as the enumeration of devices goes, it is a very complicated programming subject, which is explained here if you want your head to explode. The format you gave is how the device is addressed as a hardware ID in the registry.

As a practical matter you can look at this registry key

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

to match any error you may get to a "hardware ID" value in one of the sub keys to determine exactly what device the error may refer to.

share|improve this answer
1  
Section 4.2.7 of the Advanced RISC Computing Specification, republished here by the NetBSD Foundation, tells one everything about ARC paths. –  JdeBP Jul 8 '11 at 7:27

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.