[PATCH 3/3] msi: Convert the IWineMsiRemote* remote interfaces to RPC stubs.

Dmitry Timoshkov dmitry at baikal.ru
Sun Apr 15 21:41:24 CDT 2018


Zebediah Figura <z.figura12 at gmail.com> wrote:

> +[
> +    uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8)
> +]
> +interface IWineMsiRemote
> +{
> +    HRESULT remote_DatabaseIsTablePersistent( [in] MSIHANDLE db, [in] LPCWSTR table, [out] MSICONDITION *persistent );
> +    HRESULT remote_DatabaseGetPrimaryKeys( [in] MSIHANDLE db, [in] LPCWSTR table, [out] MSIHANDLE *keys );
> +    HRESULT remote_DatabaseGetSummaryInformation( [in] MSIHANDLE db, [in] UINT updatecount, [out] MSIHANDLE *suminfo );
> +    HRESULT remote_DatabaseOpenView( [in] MSIHANDLE db, [in] LPCWSTR query, [out] MSIHANDLE *view );
> +
> +    HRESULT remote_GetActiveDatabase( [in] MSIHANDLE hinst, [out] MSIHANDLE *handle );
> +    HRESULT remote_GetProperty( [in] MSIHANDLE hinst, [in] BSTR property, [out, size_is(*size)] BSTR value, [in, out] DWORD *size );
> +    HRESULT remote_SetProperty( [in] MSIHANDLE hinst, [in] BSTR property, [in] BSTR value );
> +    HRESULT remote_ProcessMessage( [in] MSIHANDLE hinst, [in] INSTALLMESSAGE message, [in] MSIHANDLE record );
> +    HRESULT remote_DoAction( [in] MSIHANDLE hinst, [in] BSTR action );
> +    HRESULT remote_Sequence( [in] MSIHANDLE hinst, [in] BSTR table, [in] int sequence );
> +    HRESULT remote_GetTargetPath( [in] MSIHANDLE hinst, [in] BSTR folder, [out, size_is(*size)] BSTR value, [in, out] DWORD *size );
> +    HRESULT remote_SetTargetPath( [in] MSIHANDLE hinst, [in] BSTR folder, [in] BSTR value );
> +    HRESULT remote_GetSourcePath( [in] MSIHANDLE hinst, [in] BSTR folder, [out, size_is(*size)] BSTR value, [in, out] DWORD *size );
> +    HRESULT remote_GetMode( [in] MSIHANDLE hinst, [in] MSIRUNMODE mode, [out] BOOL *ret );
> +    HRESULT remote_SetMode( [in] MSIHANDLE hinst, [in] MSIRUNMODE mode, [in] BOOL state );
> +    HRESULT remote_GetFeatureState( [in] MSIHANDLE hinst, [in] BSTR feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
> +    HRESULT remote_SetFeatureState( [in] MSIHANDLE hinst, [in] BSTR feature, [in] INSTALLSTATE state );
> +    HRESULT remote_GetComponentState( [in] MSIHANDLE hinst, [in] BSTR component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
> +    HRESULT remote_SetComponentState( [in] MSIHANDLE hinst, [in] BSTR component, [in] INSTALLSTATE state );
> +    HRESULT remote_GetLanguage( [in] MSIHANDLE hinst, [out] LANGID *language );
> +    HRESULT remote_SetInstallLevel( [in] MSIHANDLE hinst, [in] int level );
> +    HRESULT remote_FormatRecord( [in] MSIHANDLE hinst, [in] MSIHANDLE record, [out] BSTR *value );
> +    HRESULT remote_EvaluateCondition( [in] MSIHANDLE hinst, [in] BSTR condition );
> +    HRESULT remote_GetFeatureCost( [in] MSIHANDLE hinst, [in] BSTR feature, [in] INT cost_tree, [in] INSTALLSTATE state, [out] INT *cost );
> +    HRESULT remote_EnumComponentCosts( [in] MSIHANDLE hinst, [in] BSTR component, [in] DWORD index, [in] INSTALLSTATE state,
> +                                       [out, size_is(*buflen)] BSTR drive, [in, out] DWORD *buflen, [out] INT *cost, [out] INT *temp );
> +
> +    HRESULT remote_GetActionInfo( [in] LPCGUID guid, [out] INT *type, [out] BSTR *dllname,
> +                                  [out] BSTR *function, [out] MSIHANDLE *package );
> +    UINT remote_CloseHandle( [in] MSIHANDLE handle );
> +}

Did you consider using [in,string] const WCHAR *param and [out,string] WCHAR **ret
instead of passing BSTRs with [out,size_is(*size)] around? That way you'd avoid
casting away 'const' and manually managing sizing.

-- 
Dmitry.



More information about the wine-devel mailing list