[shell32 5/6] include: Add remotable stubs for non-default-marshallable shobjidl calls.

Rob Shearman robertshearman at gmail.com
Thu Jan 1 14:43:17 CST 2009


2009/1/1 Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>:
> Am Donnerstag, den 01.01.2009, 19:09 +0000 schrieb Rob Shearman:
>> 2009/1/1 Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>:
>> > +    [call_as(AddPropertySheetPages)]
>> > +    HRESULT RemoteAddPropertySheetPages();
> [...]
>> > +    [call_as(SendControlMsg)]
>> > +    HRESULT RemoteSendControlMsg();
>> > +
> [...]
>> > +    [call_as(SetToolbarItems)]
>> > +    HRESULT RemoteSetToolbarItems();
>> These shouldn't be necessary. What is it that you're trying to fix?
> Widl outputting vtable slot number mismatch errors when a local function
> is present without a remote function being present also. But if I might
> take a guess from my last experiences here: This is a widl bug that
> should be fixed...

I'm afraid so.

>> > -    HRESULT GetDropDownStatus(
>> > +    [local] HRESULT GetDropDownStatus(
>> >          [out] DWORD *pdwFlags,
>> > -        [out, string] LPWSTR *ppwszString);
>> > +        [out] LPWSTR *ppwszString);
>> > +
>> > +    [call_as(GetDropDownStatus)]
>> > +    HRESULT RemoteGetDropDownStatus();
>>
>> This isn't correct. IAutoCompleteDropDown::GetDropDownStatus should be
>> remoted as is.
> How does that work? ppwszString is a NULL-pointer-terminated array of
> strings.

MSDN says that this function actually just returns one string, not a
NULL-pointer-terminated array of strings, so this should just work.

> Does the [string] flag work for pointer arrays too? MSDN
> doesn't say so.

No, the [string] attribute in this case in redundant and it should
apply to the first pointer in the parameter. I'm guessing by the
change that you had to make that widl doesn't handle this too well...

-- 
Rob Shearman



More information about the wine-devel mailing list