On Fri Aug 29 11:58:10 2025 +0000, Nikolay Sivov wrote:
It's already implemented afaict. It looks like it checks if `ISystemMediaTransportControls` is NULL.
Setting `*value = (void *)0xdeadbeef;` causes a crash: fixme:msvcrt:_set_abort_behavior _WRITE_CALL_REPORTFAULT unhandled Implementation that caused it to call `vccorlib140.dll.?Allocate(a)Heap@Details(a)Platform@@SAPAXII(a)Z` ``` static HRESULT get_system_media_transport_controls( HWND *window, ISystemMediaTransportControls **controls ) { static const WCHAR *media_control_statics_name = L"Windows.Media.SystemMediaTransportControls"; ISystemMediaTransportControlsInterop *media_control_interop_statics = NULL; IActivationFactory *factory = NULL; HSTRING str = NULL; HRESULT hr; if (!(*window = GetActiveWindow())) return E_FAIL; hr = WindowsCreateString( media_control_statics_name, wcslen( media_control_statics_name ), &str ); if (SUCCEEDED(hr)) hr = RoGetActivationFactory( str, &IID_IActivationFactory, (void **)&factory ); if (SUCCEEDED(hr)) hr = IActivationFactory_QueryInterface( factory, &IID_ISystemMediaTransportControlsInterop, (void **)&media_control_interop_statics ); if (SUCCEEDED(hr)) hr = ISystemMediaTransportControlsInterop_GetForWindow( media_control_interop_statics, *window, &IID_ISystemMediaTransportControls, (void **)controls ); if (media_control_interop_statics) ISystemMediaTransportControlsInterop_Release( media_control_interop_statics ); if (factory) IActivationFactory_Release( factory ); WindowsDeleteString( str ); return hr; } static HRESULT WINAPI media_player2_get_SystemMediaTransportControls( IMediaPlayer2 *iface, ISystemMediaTransportControls **value ) { struct media_player *impl = impl_from_IMediaPlayer2( iface ); HRESULT hr; TRACE( "iface %p, value %p\n", iface, value ); if (!impl->controls && FAILED(hr = get_system_media_transport_controls( &impl->window, &impl->controls ))) { *value = NULL; return hr; } *value = impl->controls; ISystemMediaTransportControls_AddRef( *value ); return S_OK; } ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8829#note_114203