Module: wine Branch: master Commit: 586cc5ee35dad88c94c656957ffa97c881342657 URL: https://gitlab.winehq.org/wine/wine/-/commit/586cc5ee35dad88c94c656957ffa97c...
Author: Mohamad Al-Jaf mohamadaljaf@gmail.com Date: Tue Aug 1 23:41:39 2023 -0400
windows.devices.enumeration: Implement IDeviceInformationStatics::CreateWatcherAqsFilter().
Needed by Lenovo Ready For Assistant.
---
dlls/windows.devices.enumeration/main.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/dlls/windows.devices.enumeration/main.c b/dlls/windows.devices.enumeration/main.c index 0d392e1cf14..e1f8b5c5ae5 100644 --- a/dlls/windows.devices.enumeration/main.c +++ b/dlls/windows.devices.enumeration/main.c @@ -31,6 +31,7 @@ struct device_watcher LONG ref;
struct list stopped_handlers; + HSTRING filter; };
static inline struct device_watcher *impl_from_IDeviceWatcher( IDeviceWatcher *iface ) @@ -75,6 +76,7 @@ static ULONG WINAPI device_watcher_Release( IDeviceWatcher *iface ) if (!ref) { typed_event_handlers_clear( &impl->stopped_handlers ); + WindowsDeleteString( impl->filter ); free( impl ); }
@@ -374,8 +376,20 @@ static HRESULT WINAPI device_statics_CreateWatcherDeviceClass( IDeviceInformatio
static HRESULT WINAPI device_statics_CreateWatcherAqsFilter( IDeviceInformationStatics *iface, HSTRING filter, IDeviceWatcher **watcher ) { - FIXME( "iface %p, filter %s, watcher %p stub!\n", iface, debugstr_hstring(filter), watcher ); - return E_NOTIMPL; + struct device_watcher *this; + + TRACE( "iface %p, filter %s, watcher %p\n", iface, debugstr_hstring(filter), watcher ); + + if (!(this = calloc( 1, sizeof(*this) ))) return E_OUTOFMEMORY; + + this->IDeviceWatcher_iface.lpVtbl = &device_watcher_vtbl; + this->ref = 1; + WindowsDuplicateString( filter, &this->filter ); + + list_init( &this->stopped_handlers ); + + *watcher = &this->IDeviceWatcher_iface; + return S_OK; }
static HRESULT WINAPI device_statics_CreateWatcherAqsFilterAndAdditionalProperties( IDeviceInformationStatics *iface, HSTRING filter, @@ -448,6 +462,7 @@ static HRESULT WINAPI device_statics2_CreateWatcher( IDeviceInformationStatics2
this->IDeviceWatcher_iface.lpVtbl = &device_watcher_vtbl; this->ref = 1; + WindowsDuplicateString( filter, &this->filter );
list_init( &this->stopped_handlers );