http://bugs.winehq.org/show_bug.cgi?id=30632
--- Comment #19 from Alex cerebro.alexiel@gmail.com 2012-05-28 04:45:01 CDT --- For your information, here's an update on this bug.
The ERROR_INVALID_PARAMETER is anormal but the game doesn't care because the function returns TRUE (meaning success).
I have to write a fix for that but it won't fix this bug.
The following describes what ioctl calls the game with '>' meaning 'with an ISO file' and '<' meaning 'with the real disc in the drive'
IOCTL_SCSI_GET_ADDRESS (0x00041018)
FALSE, ERROR_NOT_SUPPORTED
< TRUE (= success) < IOCTL_SCSI_GET_INQUIRY_DATA (0x0004100c) < TRUE (= success) IOCTL_DVD_READ_STRUCTURE (0x00335140) [format=0 : physical descriptor]
ret = FALSE, ERROR_INVALID_PARAMETER
< ret = TRUE (= success) < IOCTL_DVD_READ_STRUCTURE (0x00335140) [format=4 : manufacturer descriptor] < ret = TRUE (= success)
IOCTL_SCSI_GET_ADDRESS (0x00041018) FALSE, ERROR_NOT_SUPPORTED IOCTL_DVD_READ_STRUCTURE (00335140) FALSE, ERROR_INVALID_PARAMETER IOCTL_SCSI_PASS_THROUGH (0x0004d004) FALSE, ERROR_NOT_SUPPORTED
So the game works with the ISO file because wine tells it these ioctls are 'not supported' (the loopback device is not a real drive)
The last call made by the game before displaying the error is when requesting a manufacturer descriptor. I ran the game in a real windows and found some missing leading bytes.
After some research, I found this issue was the same as in #29669. I'm waiting for an answer there.
Meanwhile, I'm trying to fix the ERROR_INVALID_PARAMETER error in GetVolumeInformation.
I hope this bug will be fixed by wine 1.5.6.