[PATCH v2 2/3] uiautomationcore: Implement UiaGetReservedMixedAttributeValue.
Connor McAdams
cmcadams at codeweavers.com
Thu Oct 28 10:17:29 CDT 2021
Signed-off-by: Connor McAdams <cmcadams at codeweavers.com>
---
dlls/uiautomationcore/uia_main.c | 58 ++++++++++++++++++++++++++++++--
1 file changed, 56 insertions(+), 2 deletions(-)
diff --git a/dlls/uiautomationcore/uia_main.c b/dlls/uiautomationcore/uia_main.c
index 51c220c6041..17ddc19016f 100644
--- a/dlls/uiautomationcore/uia_main.c
+++ b/dlls/uiautomationcore/uia_main.c
@@ -35,6 +35,7 @@ struct uia_rsrv_ftmarshaler
};
static struct uia_rsrv_ftmarshaler *uia_rsrv_ns_val_ftmarshaler = NULL;
+static struct uia_rsrv_ftmarshaler *uia_rsrv_ma_val_ftmarshaler = NULL;
static struct uia_rsrv_ftmarshaler *impl_uia_rsrv_ftmarshaler_from_IUnknown(IUnknown *iface)
{
@@ -69,6 +70,8 @@ static ULONG WINAPI uia_rsrv_ftmarshaler_Release(IUnknown *iface)
{
if (marshaler == uia_rsrv_ns_val_ftmarshaler)
uia_rsrv_ns_val_ftmarshaler = NULL;
+ else if (marshaler == uia_rsrv_ma_val_ftmarshaler)
+ uia_rsrv_ma_val_ftmarshaler = NULL;
IUnknown_Release(marshaler->inner);
heap_free(marshaler);
@@ -160,6 +163,52 @@ static const IUnknownVtbl uia_reserved_ns_vtbl = {
static IUnknown uia_reserved_ns_iface = {&uia_reserved_ns_vtbl};
+/*
+ * UiaReservedMixedAttribute object.
+ */
+static HRESULT WINAPI uia_reserved_ma_QueryInterface(IUnknown *iface,
+ REFIID riid, void **ppv)
+{
+ *ppv = NULL;
+ if (IsEqualIID(riid, &IID_IUnknown))
+ *ppv = iface;
+ else if (IsEqualIID(riid, &IID_IMarshal))
+ {
+ if (!uia_rsrv_ma_val_ftmarshaler)
+ {
+ if (FAILED(uia_rsrv_val_create_ftmarshaler(iface, &uia_rsrv_ma_val_ftmarshaler)))
+ return E_NOINTERFACE;
+ }
+
+ if (FAILED(IUnknown_QueryInterface(uia_rsrv_ma_val_ftmarshaler->inner, riid, ppv)))
+ return E_NOINTERFACE;
+
+ IUnknown_Release(&uia_rsrv_ma_val_ftmarshaler->IUnknown_iface);
+ }
+ else
+ return E_NOINTERFACE;
+
+ return S_OK;
+}
+
+static ULONG WINAPI uia_reserved_ma_AddRef(IUnknown *iface)
+{
+ return 1;
+}
+
+static ULONG WINAPI uia_reserved_ma_Release(IUnknown *iface)
+{
+ return 1;
+}
+
+static const IUnknownVtbl uia_reserved_ma_vtbl = {
+ uia_reserved_ma_QueryInterface,
+ uia_reserved_ma_AddRef,
+ uia_reserved_ma_Release,
+};
+
+static IUnknown uia_reserved_ma_iface = {&uia_reserved_ma_vtbl};
+
/***********************************************************************
* UiaClientsAreListening (uiautomationcore.@)
*/
@@ -174,8 +223,13 @@ BOOL WINAPI UiaClientsAreListening(void)
*/
HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value)
{
- FIXME("(%p) stub!\n", value);
- *value = NULL;
+ TRACE("(%p)\n", value);
+
+ if (!value)
+ return E_INVALIDARG;
+
+ *value = &uia_reserved_ma_iface;
+
return S_OK;
}
--
2.25.1
More information about the wine-devel
mailing list