Implement `DeviceWatcher` on top of a `HDEVQUERY` object, obtained from `DevCreateObjectQuery`. All events from the query object's associated callback are directly forwarded to the `DeviceWatcher`'s corresponding event handlers.
As closing/freeing the `HDEVQUERY` is performed asynchronously, I have also added `IWeakReference` support for the device watcher.
--
v4: windows.devices.enumeration: Implement DeviceInformationStatics::DeviceWatcher using DevCreateObjectQuery.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8555
We won't be able to do it later on otherwise as get_dc_ptr will fail
with a disabled DC, and release_dce will then not clear the drawable.
This will delay the drawable release until the dce is later reused, for
instance for a different window, which may cause a complicated deadlock.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8694