http://bugs.winehq.org/show_bug.cgi?id=12783
--- Comment #8 from Vitaliy Margolen vitaliy@kievinfo.com 2008-05-23 13:44:11 --- (In reply to comment #7)
The particular case addr = (void *)0x7ffe0000; size = 0x10000; NtAllocateVirtualMemory( NtCurrentProcess(), &addr, 0, &size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE ); user_shared_data = addr; probably should have some way to say MAP_FIXED, but I cannot find such a way. [Hint: valgrind presents such a kernel that ignores the first argument to mmap() unless MAP_FIXED.]
There is no reason to check for this particular allocation unless to die immediately if it fails. It's the special data structure [Shared User Data] present on all NT+ windows at the constant address. If your kernel can not honor this, then it's broken and have to be fixed. Or listed as incompatible with Wine. This area is critical to most copy-protection systems. Also lots of programs make a use of this data structure.