[PATCH v3 2/3] uiautomationcore: Implement UiaGetReservedMixedAttributeValue.

Nikolay Sivov nsivov at codeweavers.com
Fri Oct 29 07:45:27 CDT 2021



On 10/28/21 10:50 PM, Connor McAdams wrote:
> Signed-off-by: Connor McAdams <cmcadams at codeweavers.com>
> ---
>  dlls/uiautomationcore/uia_main.c | 44 ++++++++++++++++++++++++++++++--
>  1 file changed, 42 insertions(+), 2 deletions(-)
>
> diff --git a/dlls/uiautomationcore/uia_main.c b/dlls/uiautomationcore/uia_main.c
> index 01d5ba67a88..7966e1cf730 100644
> --- a/dlls/uiautomationcore/uia_main.c
> +++ b/dlls/uiautomationcore/uia_main.c
> @@ -144,6 +144,41 @@ 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))
> +        return uia_rsrv_obj_create_marshal_wrapper(iface, ppv);
> +    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,
> +};

Why do you need to duplicate methods and vtable, if it's identical to
*_reserved_ns_* ?

> +
> +static IUnknown uia_reserved_ma_iface = {&uia_reserved_ma_vtbl};
> +
>  /***********************************************************************
>   *          UiaClientsAreListening (uiautomationcore.@)
>   */
> @@ -158,8 +193,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;
>  }
>  




More information about the wine-devel mailing list