Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/tests/uiautomation.c:
+#define check_msaa_prov_host_elem_prov( elem, exp_host_prov) \
check_msaa_prov_host_elem_prov_( ((IUnknown *)elem), (exp_host_prov), __LINE__)
+static void check_msaa_prov_host_elem_prov_(IUnknown *elem, BOOL exp_host_prov, int line) +{
- IRawElementProviderSimple *elprov, *elprov2;
- HRESULT hr;
- hr = IUnknown_QueryInterface(elem, &IID_IRawElementProviderSimple, (void **)&elprov);
- ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr);
- ok_(__FILE__, line)(!!elprov, "elprov == NULL\n");
- elprov2 = (void *)0xdeadbeef;
- hr = IRawElementProviderSimple_get_HostRawElementProvider(elprov, &elprov2);
- ok_(__FILE__, line)(hr == S_OK, "Unexpected hr %#lx.\n", hr);
- ok_(__FILE__, line)(!!elprov2 == exp_host_prov, "Unexpected provider %p from get_HostRawElementProvider\n", elprov2);
elprov2 is set to a specific known value, but there's nothing distinguishing "value isn't changed" from "value is non-null" here.