CD-ROM access via "\\\\.\\Cdrom0"

Hans Leidekker hans at it.vu.nl
Fri Nov 17 03:20:56 CST 2006


On Friday 17 November 2006 09:01, Pavel Roskin wrote:

> trace:file:CreateFileW L"\\\\.\\Cdrom0" GENERIC_READ GENERIC_WRITE FILE_SHARE_READ FILE_SHARE_WR

On NT based systems drive letters are aliases for device names
in what is called the NT object manager namespace. It looks like
DVDDecrypter knows that.

I remember looking into this when writing tape support. There you also
need to manually create a symlink from .wine/dosdevices/tape0 to /dev/st0
to make it work. The issue also comes up with newer installers from MS
that use QueryDosDevice to find a real harddisk among the available
drives; they do so by looking for a specific substring in the object name.
Furthermore, the volume APIs also expose parts of the object namespace;
volume names are in fact symlinks to device names.

So Wine needs to emulate more of the object namespace, possibly by
extending the current concept of storing dos devices as symlinks
in the host filesystem. I.e. we could have a directory under .wine
that represents the root of the object namespace and use subdirectories
and symlinks to mimic the very filesystem like structure of the
object namespace.

We could then extend winecfg to detect Unix device files for cdrom,
floppy, tape etc, and create appropriate symlinks in there.

BTW, Sysinternals' WinObj is a handy little tool that visualizes the
object namespace.

 -Hans



More information about the wine-devel mailing list