Rémi Bernon (@rbernon) commented about dlls/windows.devices.enumeration/main.c:
case DeviceWatcherStatus_Aborted: case DeviceWatcherStatus_Created: case DeviceWatcherStatus_Stopped:
- {
IWeakReferenceSource *weak_src;
IWeakReference *weak;
HRESULT hr;
hr = IDeviceWatcher_QueryInterface( iface, &IID_IWeakReferenceSource, (void **)&weak_src );
if (FAILED(hr)) break;
hr = IWeakReferenceSource_GetWeakReference( weak_src, &weak );
IWeakReferenceSource_Release( weak_src );
if (FAILED(hr)) break;
hr = DevCreateObjectQuery( DevObjectTypeDeviceInterfaceDisplay, DevQueryFlagAsyncClose, 0, NULL, 0, NULL, device_object_query_callback, weak,
&impl->query );
if (FAILED(hr))
There's no need to go through `QueryInterface`. Also `GetWeakReference` cannot fail.
```suggestion:-5+0 IWeakReferenceSource_GetWeakReference( &impl->weak_reference_source.IWeakReferenceSource_iface, &weak ); ```