Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55709
There appears to be a race condition happening. When it doesn't work, it looks like the apartment is not initialized, output:
``` 01e8:fixme:combase:RoGetActivationFactory (L"Windows.Security.Credentials.UI.UserConsentVerifier", {af4f3f91-564c-4ddc-b8b5-973447627c65}, 000000000011E890): semi-stub 01e8:fixme:credentials:factory_QueryInterface {94ea2b94-e9cc-49e0-c0ff-ee64ca8f5b90} not implemented, returning E_NOINTERFACE. 0220:err:ole:CoGetContextToken apartment not initialised 0220:fixme:ole:thread_context_callback_ContextCallback 000000000347E4A8, 00007FFFFE10D510, 0000000005C7FBA0, {0a299774-3e4e-fc42-1d9d-72cee105ca57}, 5, 0000000000000000 0220:fixme:combase:RoOriginateLanguageException 0x80004001, L"", 0000000000000000: stub wine: Call from 0000000174013C17 to unimplemented function combase.dll.RoFailFastWithErrorContext, aborting wine: Unimplemented function combase.dll.RoFailFastWithErrorContext called at address 0000000174013C17 (thread 0220), starting debugger. ```
Adding in WINEDEBUG=+credentials makes it consistently work:
``` 0154:fixme:combase:RoGetActivationFactory (L"Windows.Security.Credentials.UI.UserConsentVerifier", {af4f3f91-564c-4ddc-b8b5-973447627c65}, 000000000011E890): semi-stub 0154:trace:credentials:DllGetActivationFactory class L"Windows.Security.Credentials.UI.UserConsentVerifier", factory 000000000011E6C0. 0154:trace:credentials:factory_QueryInterface iface 00000001F3B04040, iid {00000035-0000-0000-c000-000000000046}, out 000000000011E6C0. 0154:trace:credentials:factory_AddRef iface 00000001F3B04040 increasing refcount to 2. 0154:trace:credentials:factory_QueryInterface iface 00000001F3B04040, iid {af4f3f91-564c-4ddc-b8b5-973447627c65}, out 000000000011E890. 0154:trace:credentials:factory_AddRef iface 00000001F3B04040 increasing refcount to 3. 0154:trace:credentials:factory_Release iface 00000001F3B04040 decreasing refcount to 2. 0154:trace:credentials:factory_QueryInterface iface 00000001F3B04040, iid {94ea2b94-e9cc-49e0-c0ff-ee64ca8f5b90}, out 000000000011E898. 0154:fixme:credentials:factory_QueryInterface {94ea2b94-e9cc-49e0-c0ff-ee64ca8f5b90} not implemented, returning E_NOINTERFACE. 0154:trace:credentials:user_consent_verifier_statics_CheckAvailabilityAsync iface 00000001F3B04048, result 000000000011E868 0154:trace:credentials:factory_AddRef iface 00000001F3B04040 increasing refcount to 3. 0154:trace:credentials:async_impl_Start iface 0000000000791260. 0154:trace:credentials:async_UserConsentVerifierAvailability_AddRef iface 0000000003461650, ref 2. 0154:trace:credentials:async_operation_UserConsentVerifierAvailability_create created IAsyncOperation_UserConsentVerifierAvailability 0000000003461650 0154:trace:credentials:factory_Release iface 00000001F3B04040 decreasing refcount to 2. 0154:trace:credentials:async_UserConsentVerifierAvailability_AddRef iface 0000000003461650, ref 3. 0154:trace:credentials:async_UserConsentVerifierAvailability_put_Completed iface 0000000003461650, handler 00000000033E2410. 0154:trace:credentials:async_impl_put_Completed iface 0000000000791260, handler 00000000033E2410. 0154:trace:credentials:async_UserConsentVerifierAvailability_GetResults iface 0000000003461650, results 000000000011E790. 0154:trace:credentials:async_impl_get_Result iface 0000000000791260, result 000000000011E700. 018c:trace:credentials:async_UserConsentVerifierAvailability_Release iface 0000000003461650, ref 2. 0154:trace:credentials:async_UserConsentVerifierAvailability_Release iface 0000000003461650, ref 1. 0154:trace:credentials:async_UserConsentVerifierAvailability_Release iface 0000000003461650, ref 0. 0154:trace:credentials:async_impl_Release iface 0000000000791260, ref 0. 0154:trace:credentials:async_info_Close iface 0000000000791268. 0154:trace:credentials:factory_Release iface 00000001F3B04040 decreasing refcount to 1. ```
-- v2: windows.security.credentials.ui.userconsentverifier/tests: Add IUserConsentVerifierStatics::CheckAvailabilityAsync() tests. windows.security.credentials.ui.userconsentverifier: Implement IUserConsentVerifierStatics::CheckAvailabilityAsync(). windows.security.credentials.ui.userconsentverifier: Import and modify IAsyncOperation from windows.gaming.input.