[PATCH 3/5] [WinMM]: allow 32-bit mciLoadCommandResource to load out of 16 bit module

Alexandre Julliard julliard at winehq.org
Mon Oct 19 16:07:21 CDT 2009


Eric Pouech <eric.pouech at orange.fr> writes:

> Alexandre Julliard a écrit :
>> Eric Pouech <eric.pouech at orange.fr> writes:
>>
>>   
>>> @@ -1566,7 +1554,41 @@ UINT WINAPI mciLoadCommandResource(HINSTANCE hInst, LPCWSTR resNameW, UINT type)
>>>      if (!(hRsrc = FindResourceW(hInst, resNameW, (LPWSTR)RT_RCDATA))) {
>>>  	WARN("No command table found in resource\n");
>>>      } else if ((hMem = LoadResource(hInst, hRsrc))) {
>>> -	ret = MCI_SetCommandTable(LockResource(hMem), type);
>>> +        if (!HIWORD(hInst)) { /* it's a 16bit resource, convert it */
>>> +            const BYTE* ptr16 = LockResource(hMem);
>>>     
>>
>> Please don't do that. 16-bit resources should always be loaded with
>> 16-bit functions. Support for casting 16-bit instances to 32-bit is a
>> hack that will have to be removed.
>>
>>   
> do you prefer the Wine only 32-bit functions exported out of
> kernel32.dll (like LoadResource16 and friends ?)
> won't those have to be removed some time as well ??
> or are you saying, loading by hand LoadResource out of krnl386.exe and
> using WOW* functions ?

They will ultimately be exported out of krnl386, yes. That should be
transparent once krnl386 is made into a separate dll, with some
winebuild magic to resolve the imports. For now just call the kernel32
ones.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list