Fixes Dark and Darker's Anti-Cheat "TavernWorker"; Original issue thread on Proton's repo [#2016590](https://github.com/ValveSoftware/Proton/issues/8208).
From the issue thread: Glaring issue seems to be the inability to load past the main menu in Dark and Darker without getting a pop-up that says "Tavern is not working! Please restart your game.", resulting in a forced exit.
I've marked this as Draft as I am not entirely sure returning the `NTSTATUS` of `NtWriteVirtualMemory` is the proper solution here (I have not found any other working solutions so-far). Returning the `NTSTATUS` of `NtQueryVirtualMemory` seems to not achieve working results, however I am not an expert by any means.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6761
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v15: wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>.
wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>.
wintypes: Add stubs for IMapView<HSTRING, IInspectable *>.
wintypes: Add IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation
wintypes: Add IObservableMap<HSTRING, IInspectable *> and stubs to PropertySet implementation.
wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v14:
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v13: wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
wintypes: Implement IMap methods HasKey, get_Count, Remove, GetView for PropertySet.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v12: wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
wintypes: Implement IMap method GetView() for PropertySet.
wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet.
wintypes: Implement IMap method Clear() for PropertySet.
wintypes: Implement IMap methods Insert() and Lookup() for PropertySet.
wintypes: Implement adding/removing IMapChangedEventHandlers for IObservableMap<HSTRING, IInspectable *>.
wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>.
wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>.
wintypes: Add stubs for IMapView<HSTRING, IInspectable *>.
wintypes: Add IObservableMap<HSTRING, IInspectable *> and IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v11: wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
wintypes: Implement IMap method GetView() for PropertySet.
wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet.
wintypes: Implement IMap method Clear() for PropertySet.
wintypes: Implement IMap methods Insert() and Lookup() for PropertySet.
wintypes: Implement adding/removing IMapChangedEventHandlers for IObservableMap<HSTRING, IInspectable *>.
wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>.
wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>.
wintypes: Add stubs for IMapView<HSTRING, IInspectable *>.
wintypes: Add IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation.
wintypes: Add IObservableMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
wintypes: Add stub for Windows.Foundation.Collections.PropertySet.
wintypes/test: Add conformance tests for Windows.Foundation.Collections.PropertySet.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
This is an alternate solution to MR 6761 [1]
(actually is based on comment in that MR).
WriteProcessMemory() should succeed when process handle doesn't have
PROCESS_QUERY_INFORMATION access right set (test attached).
Plus some additional cleanup in test for ReadProcessMemory().
Feedback from Proton says that this patch solves the reported game issue.
[1] https://gitlab.winehq.org/wine/wine/-/merge_requests/6761
--
v4: server: Amend process rights mapping.
advapi32: Test some other cases of process access rights mapping.
advapi32/tests: Fix typo in manifest constant.
kernel32/tests: Don't hardcode page size in buffer size.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6767
This is an alternate solution to MR 6761 [1]
(actually is based on comment in that MR).
WriteProcessMemory() should succeed when process handle doesn't have
PROCESS_QUERY_INFORMATION access right set (test attached).
Plus some additional cleanup in test for ReadProcessMemory().
Feedback from Proton says that this patch solves the reported game issue.
[1] https://gitlab.winehq.org/wine/wine/-/merge_requests/6761
--
v3: server: Amend process rights mapping.
advapi32: Test some other cases of process access rights mapping.
advapi32/tests: Fix typo in manifest constant.
kernel32/tests: Don't hardcode page size in buffer size.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6767
This is an alternate solution to MR 6761 [1]
(actually is based on comment in that MR).
WriteProcessMemory() should succeed when process handle doesn't have
PROCESS_QUERY_INFORMATION access right set (test attached).
Plus some additional cleanup in test for ReadProcessMemory().
Feedback from Proton says that this patch solves the reported game issue.
[1] https://gitlab.winehq.org/wine/wine/-/merge_requests/6761
--
v2: server: Amend process rights mapping.
ntdll/tests: Add tests for NtQueryVirtualMemory.
kernel32/tests: Don't hardcode page size in buffer size.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6767
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v10: dlls/wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
dlls/wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
dlls/wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
dlls/wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
dlls/wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
dlls/wintypes: Implement IMap method GetView() for PropertySet.
dlls/wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
Use raw URI as absolute URI for now. To make it fully compliant with RFC 3986 and 3987, we need to
implement a parser and reconstruct the absolute URI from parts.
For React Native.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6773
Please keep merge requests small and each commit atomic, ~5 patches or so for an MR would be best. Each MR should ideally have its corresponding tests. That will help with the reviewing. Note that there are CI build failures. You will need to address that as well.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766#note_86591
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the \``IWinePropertySetImpl`\` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v8: dlls/wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
dlls/wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
dlls/wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
dlls/wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
dlls/wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
dlls/wintypes: Implement IMap method GetView() for PropertySet.
dlls/wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet.
dlls/wintypes: Implement IMap method Clear() for PropertySet.
dlls/wintypes: Implement IMap methods Insert() and Lookup() for PropertySet.
dlls/wintypes: Implement adding/removing IMapChangedEventHandlers for IObservableMap<HSTRING, IInspectable *>.
dlls/wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>.
dlls/wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>.
dlls/wintypes: Add stubs for IMapView<HSTRING, IInspectable *>.
dlls/wintypes: Add IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation.
dlls/wintypes: Add IObservableMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
Use the unicode interface by default and return the same value
as before this change.
There are a few locations, that called W->A. It will return the
same value as before for the Ansi version but the unicode one will
now report an error.
--
v2: dplayx: Merge IDirectPlayLobby3A into IDirectPlayLobby3
https://gitlab.winehq.org/wine/wine/-/merge_requests/6481