I do not have ubuntu/mmap protection here, could you/somebody try with a address like 0x80000.
I've run the attached test program on Windows XP SP3, Hardy Heron 8.04, and a Debian 'Lenny' system for the memory range of 0x0 through 0x110000.
The results were that on Windows XP, you get partial reads from 0x0 to 0x10000, and then full reads thereafter. On Lenny, you get full reads from 0x0 on up.
On Hardy, you get full reads from 0x10000, but no partial reads at 0x0.
Therefore I now believe my patch is correct. Note that I do not disable the probe for sub 0x10000 in my patch; I simply avoid checking readcount if the status from the read is not what we expect.
I've submitted it now to wine-patches; this fixes that particular make test result for me.
Cheers,
Jeremy
0x10000: ok
0x0: ok
0x0: partial 0x10000: ok