On 11/29/19 12:23, RĂ©mi Bernon wrote:
This is a rewrite of the ntdll-User_Shared_Data staging patch series, with a simpler approach that still solves the issue. Although it is less correct in term of timestamp update than the original series, it should also have less impact and may be more acceptable. We already update the timestamps from time to time in ntoskrnl before accessing the memory, and this adds another update after each sleep.
While this might allow the games to start, won't such approach break (some of) game mechanics or sync with servers? The games might be using this instead of GetTickCount(), having the time updated at some rare and irregular intervals looks scary.
I thought that somewhat potentially better approach than that currently in Staging would be to map user shared area to wineserver and always create a single thread in server to update the shared area. That would be somewhat similar to what Windows does if wineserver stands for kernel. I also heard that sharing memory with server is considered a no go, but I could not find any discussion why is it so.