[prev in list] [next in list] [prev in thread] [next in thread]
List: wine-devel
Subject: winmm: For MCI parsing, use 64bit compatible structures.
From: <Joerg-Cyril.Hoehle () t-systems ! com>
Date: 2010-03-30 14:54:48
Message-ID: 47CC5ABB01651443A88DB8EC5B4D657B740303 () S4DE8PSAANK ! mitte ! t-com ! de
[Download RAW message or body]
Hi,
Eric Pouech wrote:
>this patch is ugly as hell...
Please qualify. To me,
- data[3] = (DWORD_PTR)dev;
+ parms.open.lpstrElementName = dev;
looks more robust than before:
- no magic offsets,
- no casts that may silence warnings.
The one #ifdef WIN64 is a pure performance optimization on Win32.
The other one with the TRACE() is indeed ugly, but I don't feel
it's safe to call debugstr_w() on misaligned data in Wine64. Even
if it were, printing data[3] as string may be wrong, because it
may be data[4] (+5) that holds a pointer, not (3+4). Therefore I
decided to renounce to print string contents on 64bit, despite
their value in the logs.
> and it still believe we can do the MCI
>parser without knowing about MCI structures internals
What do you mean?
Quite to the contrary, the parser depends on knowing the internals
of some commands (like MCI_OPEN) as well as the convention about the
return value as 2nd (+3rd) slot after the callback.
The parser bridges the gap between the resource definition files
winmm_res.rc that are now in git and are known to work well with
32bit and the mixed DWORD/DWORD_PTR MCI_..._PARMS definitions whose
correctness has been (partially) validated by tests.
What we don't know is whether Win64 introduced a different winmm_res.rc.
I'd sure would be pleased if somebody could describe whether there
have been changes to the resources to accommodate 64bit pointers in MS-Windows.
Everybody, please visit bug #22146 if you can contribute such knowledge.
(Part of) my patch is needed even if there were (thanks to lack of magic offsets).
Regards,
Jörg Höhle
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic