xref: /reactos/dll/win32/msi/winemsi.idl (revision 84344399)
1/*
2 * Copyright (C) 2007 James Hawkins
3 * Copyright (C) 2018 Zebediah Figura
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20#pragma makedep header
21#pragma makedep client
22#pragma makedep server
23
24import "objidl.idl";
25
26cpp_quote("#if 0")
27typedef unsigned long MSIHANDLE;
28typedef int INSTALLMESSAGE;
29typedef int MSICONDITION;
30typedef int MSIRUNMODE;
31typedef int INSTALLSTATE;
32typedef int MSICOLINFO;
33typedef int MSIMODIFY;
34typedef int MSICOSTTREE;
35typedef int MSIDBERROR;
36
37#define MSIFIELD_NULL   0
38#define MSIFIELD_INT    1
39#define MSIFIELD_WSTR   3
40#define MSIFIELD_STREAM 4
41cpp_quote("#endif")
42cpp_quote("#include \"msiquery.h\"")
43
44struct wire_field {
45    unsigned int type;
46    [switch_is(type)] union {
47        [case(MSIFIELD_NULL)] ;
48        [case(MSIFIELD_INT)] int iVal;
49        [case(MSIFIELD_WSTR), string] LPWSTR szwVal;
50        [case(MSIFIELD_STREAM)] IStream *stream;
51    } u;
52    int len;
53};
54
55/* compatible with MSIRECORD minus header */
56struct wire_record {
57    unsigned int count;
58    UINT64 cookie;
59    [size_is(count+1)] struct wire_field fields[];
60};
61
62[
63    uuid(56D58B64-8780-4c22-A8BC-8B0B29E4A9F8),
64    implicit_handle(handle_t rpc_handle)
65]
66interface IWineMsiRemote
67{
68    UINT remote_ViewClose( [in] MSIHANDLE view );
69    UINT remote_ViewExecute( [in] MSIHANDLE view, [in, unique] struct wire_record *record );
70    UINT remote_ViewFetch( [in] MSIHANDLE view, [out] struct wire_record **record );
71    UINT remote_ViewGetColumnInfo( [in] MSIHANDLE view, [in] MSICOLINFO info, [out] struct wire_record **record );
72    MSIDBERROR remote_ViewGetError( [in] MSIHANDLE view, [out, string] LPWSTR *column );
73    UINT remote_ViewModify( [in] MSIHANDLE view, [in] MSIMODIFY mode,
74        [in] struct wire_record *record, [out] struct wire_record **refreshed );
75
76    MSICONDITION remote_DatabaseIsTablePersistent( [in] MSIHANDLE db, [in] LPCWSTR table );
77    UINT remote_DatabaseGetPrimaryKeys( [in] MSIHANDLE db, [in, string] LPCWSTR table, [out] struct wire_record **keys );
78    UINT remote_DatabaseGetSummaryInformation( [in] MSIHANDLE db, [in] UINT updatecount, [out] MSIHANDLE *suminfo );
79    UINT remote_DatabaseOpenView( [in] MSIHANDLE db, [in, string] LPCWSTR query, [out] MSIHANDLE *view );
80
81    UINT remote_SummaryInfoGetPropertyCount( [in] MSIHANDLE suminfo, [out] UINT *count );
82    UINT remote_SummaryInfoGetProperty( [in] MSIHANDLE suminfo, [in] UINT property, [out] UINT *type, [out] INT *value,
83                                        [out] FILETIME *ft, [out, string] LPWSTR *buf );
84
85    MSIHANDLE remote_GetActiveDatabase( [in] MSIHANDLE hinst );
86    UINT remote_GetProperty( [in] MSIHANDLE hinst, [in, string] LPCWSTR property, [out, string] LPWSTR *value, [out] DWORD *size );
87    UINT remote_SetProperty( [in] MSIHANDLE hinst, [in, string, unique] LPCWSTR property, [in, string, unique] LPCWSTR value );
88    int remote_ProcessMessage( [in] MSIHANDLE hinst, [in] INSTALLMESSAGE message, [in] struct wire_record *record );
89    UINT remote_DoAction( [in] MSIHANDLE hinst, [in, string] LPCWSTR action );
90    UINT remote_Sequence( [in] MSIHANDLE hinst, [in, string] LPCWSTR table, [in] int sequence );
91    UINT remote_GetTargetPath( [in] MSIHANDLE hinst, [in, string] LPCWSTR folder, [out, string] LPWSTR *value );
92    UINT remote_SetTargetPath( [in] MSIHANDLE hinst, [in, string] LPCWSTR folder, [in, string] LPCWSTR value );
93    UINT remote_GetSourcePath( [in] MSIHANDLE hinst, [in, string] LPCWSTR folder, [out, string] LPWSTR *value );
94    BOOL remote_GetMode( [in] MSIHANDLE hinst, [in] MSIRUNMODE mode );
95    UINT remote_SetMode( [in] MSIHANDLE hinst, [in] MSIRUNMODE mode, [in] BOOL state );
96    UINT remote_GetFeatureState( [in] MSIHANDLE hinst, [in, string] LPCWSTR feature, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
97    UINT remote_SetFeatureState( [in] MSIHANDLE hinst, [in, string] LPCWSTR feature, [in] INSTALLSTATE state );
98    UINT remote_GetComponentState( [in] MSIHANDLE hinst, [in, string] LPCWSTR component, [out] INSTALLSTATE *installed, [out] INSTALLSTATE *action );
99    UINT remote_SetComponentState( [in] MSIHANDLE hinst, [in, string] LPCWSTR component, [in] INSTALLSTATE state );
100    LANGID remote_GetLanguage( [in] MSIHANDLE hinst );
101    UINT remote_SetInstallLevel( [in] MSIHANDLE hinst, [in] int level );
102    UINT remote_FormatRecord( [in] MSIHANDLE hinst, [in] struct wire_record *record, [out, string] LPWSTR *value);
103    MSICONDITION remote_EvaluateCondition( [in] MSIHANDLE hinst, [in, string] LPCWSTR condition );
104    UINT remote_GetFeatureCost( [in] MSIHANDLE hinst, [in, string] LPCWSTR feature, [in] MSICOSTTREE cost_tree, [in] INSTALLSTATE state, [out] INT *cost );
105    UINT remote_EnumComponentCosts( [in] MSIHANDLE hinst, [in, string, unique] LPCWSTR component, [in] DWORD index, [in] INSTALLSTATE state,
106                                    [out, string, size_is(3)] LPWSTR drive, [out] INT *cost, [out] INT *temp );
107
108    UINT remote_GetActionInfo( [in] const GUID *guid, [out, string] WCHAR **action, [out] int *type, [out, string] WCHAR **dllname,
109                               [out, string] char **function, [out] MSIHANDLE *hinst );
110    UINT remote_CloseHandle( [in] MSIHANDLE handle );
111}
112