http://bugs.winehq.org/show_bug.cgi?id=22146
Summary: 64bit compatibility issue with Wine's MCI string command parser Product: Wine Version: 1.0.0 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winmm&mci AssignedTo: wine-bugs@winehq.org ReportedBy: hoehle@users.sourceforge.net
Created an attachment (id=27005) --> (http://bugs.winehq.org/attachment.cgi?id=27005) work in progress MCI parser that knows about 64bit structures
Hi,
Wine's MCI string command parser is one reason why test.winehq.org shows failures with 64bit machines. I've created this issue so everybody can discuss and contribute patches until evolution leads to a correct one.
The attached patch fixes part of what's currently in git, but it is still incomplete. Therefore I don't plan to submit it.
I've run tests on WTB's 64bit machines that proove that MCI_STATUS_PARMS and MCI_GETDEVCAPS indeeed process differently sized dwReturn types on x64: DWORD_PTR and DWORD. That's what's missing from my patch.
A solution that sounds ideal is to define something like MCI_INTEGER64 and change the resource files mciavi_res.rc and winmm_res.rc. Given that new type, the MCI string parser would compute the correct offset. I'd be very pleased if somebody could conform that MS does it this way and tell us the value of this constant.
Another solution path is to special-case MCI_STATUS_PARMS in the parser, as it uses the only 64bit construct I knew until 5 minutes ago (beside dwCallback of course) that's not a LP(W)STR. HWND seems to be 32bit.
5 minutes later: What about HDC in MCI_DGV_UPDATE_PARMS? Wait, wtypes.h says void*! The MCI string command parser needs to handle this type as well: MCI_INTEGER as currently used in mciav_res.rc is not adequate on 64bit. In the meantime, I'll submit a patch that adds MCI_HDC and a few other missing defines I know to the includes.
Regards, Jörg Höhle