Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/uia_client.c:
* both the node's creator provider and its HWND provider. This avoids
* the problem of returning the same provider twice from GetFocus.
*/
if (!desktop_node && ((i == node->creator_prov_idx) ||
(get_node_provider_type_at_idx(node, i) == PROV_TYPE_HWND)))
continue;
hr = get_focus_from_node_provider(&node->IWineUiaNode_iface, i, &v);
if (FAILED(hr))
break;
if (V_VT(&v) != VT_EMPTY)
{
hr = UiaHUiaNodeFromVariant(&v, out_node);
if (FAILED(hr))
out_node = NULL;
I'm guessing you meant to assign to `*out_node` here?