Vibhav Pant (@vibhavp) commented about dlls/cfgmgr32/devobject.c:
return HRESULT_FROM_WIN32(err == ERROR_NO_SUCH_DEVICE_INTERFACE ? ERROR_FILE_NOT_FOUND : err); }
- hr = dev_object_iface_get_props( &obj, set, &iface, props_len, props, !!(flags & DevQueryFlagAllProperties), FALSE ); - *buf = obj.pProperties; - *buf_len = obj.cPropertyCount; + if (all_props) hr = dev_get_device_interface_property_keys( set, &iface, &keys, &keys_len ); + if (SUCCEEDED(hr)) + { + if ((properties_len = keys_len) && !(properties = calloc( keys_len, sizeof(*properties) ))) hr = E_OUTOFMEMORY; + else hr = dev_object_iface_get_props( set, &iface, keys, keys_len, properties, &properties_len ); + } +
I forgot to do this in the original commit, but I think we need to call `SetupDiDestroyDeviceInfoList(set)` here as well. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10173#note_130328