Rémi Bernon (@rbernon) commented about dlls/windows.devices.bluetooth/bluetoothdevice.c:
+ goto done; + } + buf = tmp; + if (SUCCEEDED((hr = BluetoothGATTGetServices( impl->device, size, buf, &actual, 0 )))) break; + if (hr != HRESULT_FROM_WIN32( ERROR_INVALID_USER_BUFFER )) goto done; + size = actual; + } + for (i = 0; i < size; i++) + { + IGattDeviceService *service; + + if (FAILED((hr = gatt_service_create( &service, &buf[i] )))) goto done; + hr = IVector_IInspectable_Append( vector, (IInspectable *)service ); + IGattDeviceService_Release( service ); + if (FAILED( hr )) goto done; + } Seems like this could deserve a helper to create a vector (or just vector view) from an existing buffer, instead of appending vector elements one by one after. Or at least I think you could use `IVector_ReplaceAll`?
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10865#note_139543