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