mountmgr.sys: For loop-mounted devices, use the backing file

GOUJON Alexandre ale.goujon at gmail.com
Tue Aug 21 09:25:01 CDT 2012


On 08/21/2012 11:49 AM, Alexandre Julliard wrote:
> Alexandre Goujon <ale.goujon at gmail.com> writes:
>
>> As part of their copy protection, some games use some ioctl's to check some physical attributes.
>> Unfortunately, when using the loop device, some ioctl fail (like IOCTL_SCSI_GET_ADDRESS).
>> A simple fix is to use /path/to/the/file.ISO instead of /dev/loopX.
> Several places depend on this being a device. Besides, failing to get
> the SCSI address of a loop mount seems like correct behavior to me.
>
I originally wanted this patch in because my game was failing when I 
mounted the ISO of the disc via the loop device.
The game was calling GetVolumeInformation to check its serial and to do 
so, GetVolumeInformation has to look at some blocks at specific offsets.
But seeking (SetFilePointer) and reading (ReadFile) is not the same with 
the handle of the loop device and the ISO file.
So I had to manually change the dosdesices/X:: link to make it point 
from /dev/loop/X to /path/to/file.iso

Moreover, even if it is understandable that IOCTL_SCSI_GET_ADDRESS 
fails, others like IOCTL_DVD_READ_STRUCTURE, should return valid values, 
not ERROR_NOT_SUPPORTED.

I thought mounting the ISO should be the same thing than inserting the 
disc in the drive.
But you seem to think that the current behaviour is the right one so in 
this case, simply ignore my patch.



More information about the wine-devel mailing list