[PATCH 4/4] uiautomationcore: Add UiaRaiseAutomationPropertyChangedEvent stub.

Mohamad Al-Jaf mohamadaljaf at gmail.com
Mon Nov 29 19:06:23 CST 2021


Sorry, my mistake, forgot to reply-all.

If the original code is used, the binary uiautomationcore.dll fails to
compile in the 32-bit build of Wine. The 64-bit build of Wine compiles
successfully. Here is the error log:

/usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/bin/ld:
uiautomationcore.dll-61a5829a.spec.o:fake:(.edata+0x170): undefined
reference to `UiaRaiseAutomationPropertyChangedEvent at 16'
collect2: error: ld returned 1 exit status
winegcc: /usr/bin/i686-w64-mingw32-gcc failed
make[1]: *** [Makefile:215741: dlls/uiautomationcore/uiautomationcore.dll]
Error 2

I can submit the original code with the correct prototype but I can't build
the 32-bit version of Wine on my machine. Perhaps there's something wrong
with my machine? I don't know why the error is happening.

Here is the line in the spec file of the original code:

@ stdcall UiaRaiseAutomationPropertyChangedEvent(ptr long long long)

On Mon, Nov 29, 2021 at 4:41 AM Nikolay Sivov <nsivov at codeweavers.com>
wrote:

> On 11/29/21 12:18 PM, Mohamad Al-Jaf wrote:
>
> Hi Nikolay,
>
>
> Please reply-all next time to include the list.
>
>
> I see, that would explain why it fails to compile in 32-bit Wine. But how
> does it compile on the 64-bit version? It worked just fine and the FIXME
> channel displayed the correct debugstr_variant output.
>
> This was the original code:
>
> HRESULT WINAPI
> UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple *provider,
> PROPERTYID id, VARIANT oldValue, VARIANT newValue)
> {
>     FIXME("(%p, %d, %s, %s): stub\n", provider, id,
> debugstr_variant(&oldValue), debugstr_variant(&newValue));
>     return S_OK;
> }
>
> HRESULT WINAPI
> UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple *provider,
> PROPERTYID id, VARIANT oldValue, VARIANT newValue);
>
> I'm not sure I understand how the prototype is wrong, can you please
> explain it to me?
>
>
> What doesn't compile? Prototype has to match the one used on Windows, you
> can't change that for exported functions.
>
>
> For stubs, I thought they were unimplemented functions that simply
> returned either a boolean or a single value. So in this case, would it be
> an implementation? I'm not sure what to put in the subject line. The
> function above it, UiaRaiseAutomationEvent, also returns a value, the same
> one. Sorry, I'm just trying to understand you and learn more.
>
>
> Connor has been working on this lately, I'll leave it to him to comment.
>
>
> On Mon, Nov 29, 2021 at 3:09 AM Nikolay Sivov <nsivov at codeweavers.com>
> wrote:
>
>>
>>
>> On 11/29/21 10:35 AM, Mohamad Al-Jaf wrote:
>> >
>> +/***********************************************************************
>> > + *          UiaRaiseAutomationPropertyChangedEvent (uiautomationcore.@
>> )
>> > + */
>> > +HRESULT WINAPI
>> UiaRaiseAutomationPropertyChangedEvent(IRawElementProviderSimple *provider,
>> PROPERTYID id, VARIANT *oldValue, VARIANT *newValue)
>> > +{
>> > +    FIXME("(%p, %d, %p, %p): stub\n", provider, id, oldValue,
>> newValue);
>> > +    return S_OK;
>> > +}
>> The prototype is wrong, and return value is not what stubs usually have.
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20211129/7e9521d3/attachment.htm>


More information about the wine-devel mailing list