[2/3] kernel32/heap: Fix some hacks in GlobalMemoryStatus(). (try 2)

Dmitry Timoshkov dmitry at baikal.ru
Fri Jun 3 13:33:22 CDT 2011

Adam Martinson <amartinson at codeweavers.com> wrote:

> The issue is that Dragon NaturallySpeaking 7 setup doesn't have the 
> IMAGE_FILE_LARGE_ADDRESS_AWARE flag set, but it uses InstallShield 6 as 
> a child process, which does have it set.  IS6 calls GlobalMemoryStatus() 
> and passes the data back to DNS7 setup, and if you have more than 2GB 
> RAM DNS7 setup thinks you have negative memory.  Windows figures this 
> out and rounds to 2GB, Wine does not.

I'd suggest to write some tests and try to understand what does Windows
and at which step.

> The unset 
> IMAGE_FILE_LARGE_ADDRESS_AWARE flag is not inherited by the child 
> process (I did check), so this leads me to believe Windows must be doing 
> some sort of check like this when deciding to round.  If there is a flaw 
> in my logic or there is a better way to do this I am all ears.

Processes can't share their address spaces (using a shared memory mapping
doesn't count) with other processes, if they would do, you certainly would
be willing to use a different OS.


More information about the wine-devel mailing list