This MR is the first of multiples MRs adding support for the Bluetooth stack API in Wine:
1. The winebth.sys driver, which talks to BlueZ and implements several key IOCTLs for communicating with Bluetooth devices and radios.
2. A bthserv service, which is responsible for keeping track of the authentication agent, and relaying authentication requests and responses to and from the driver.
3. Userspace APIs (bluetoothapis.dll, bthprops.cpl, Windows.Devices.Bluetooth, etc).
winebth.sys is split into two "sub" drivers:
`winebth.sys`: The main entrypoint, loaded by winedevice. It listens for changes to Bluetooth devices and radios and authentication events on BlueZ, passing them on the bthenum. It also handles most IOCTL operations on Bluetooth radio PDOs.
`bthenum`: Responsible for creating nodes for discovered Bluetooth devices and associated services. It also tries to validate any IOCTLs relating to bluetooth devices before passing them to winebth.sys. (Not in this MR, likely in part 2)
The unix code is split between dbus.c, unixlib.c and winebluetooth.c, where winebluetooth is a simple wrapper around unixlib for the sake of organization.
--
v32: dlls/winebth.sys: Register and enable BTHPORT_DEVICE and BLUETOOTH_RADIO interfaces for radio PDOs.
dlls/winebth.sys: Derive a unique hardware ID for radio PDOs from their corresponding BlueZ object path.
dlls/winebth.sys: Create radio PDOs from the list of org.bluez.Adapter1 objects on BlueZ.
dlls/winebth.sys: Add a basic unixlib stub using DBus.
dlls/winebth.sys: Add base winebth.sys driver.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6621
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
--
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.
--
v5: 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.
dlls/wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
dlls/wintypes: Add stub for Windows.Foundation.Collections.PropertySet.
dlls/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
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.
--
v4: 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.
dlls/wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
dlls/wintypes: Add stub for Windows.Foundation.Collections.PropertySet.
dlls/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
--
v2: include: Fix wmemchr C++ warning.
include: Fix InlineIsEqualGUID C++ warning.
include: Add some _BitScanForward(64) declarations in intrin.h.
include: Add a __shiftright128 intrinsic definition.
include: Add a _umul128 intrinsic definition.
include: Move FILE_DISPOSITION_INFO after DeleteFile(A|W).
include: Add a MB_CUR_MAX definition in ctype.h.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6752
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.
--
v3: 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.
dlls/wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
dlls/wintypes: Add stub for Windows.Foundation.Collections.PropertySet.
dlls/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
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, this could 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.
--
v2: 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.
dlls/wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
dlls/wintypes: Add stub for Windows.Foundation.Collections.PropertySet.
dlls/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
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, this could 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.
--
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