strmbase: Have BaseControlWindow use BaseDispatch.
[wine] / dlls / msdaps / row_server.idl
1 /*
2  * Wine row server interface.
3  *
4  * Copyright (C) 2010 Huw Davies
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 import "oledb.idl";
22
23
24 [
25     threading(both),
26     uuid(06210e88-01f5-11d1-b512-0080c781c384)
27 ]
28 coclass PSFactoryBuffer { interface IFactoryBuffer; }
29
30 [
31     object,
32     uuid(38248178-cf6d-11de-abe5-000c2916d865),
33     pointer_default(unique)
34 ]
35 interface IWineRowServer : IUnknown
36 {
37     [local] HRESULT SetInnerUnk([in] IUnknown *unknown);
38
39     [local] HRESULT GetMarshal([out] IMarshal **marshal);
40
41
42     /* IRow */
43
44 typedef struct
45 {
46     DBID columnid;
47     DBLENGTH max_len;
48     DBTYPE type;
49     BYTE precision;
50     BYTE scale;
51 } wine_getcolumns_in;
52
53 typedef struct
54 {
55     VARIANT v;
56     DBLENGTH data_len;
57     DBSTATUS status;
58 } wine_getcolumns_out;
59
60     HRESULT GetColumns([in] DBORDINAL num_cols,
61                        [in, size_is((ULONG)num_cols)] wine_getcolumns_in *in_data,
62                        [out, size_is((ULONG)num_cols)] wine_getcolumns_out *out_cols);
63
64     HRESULT GetSourceRowset([in] REFIID riid,
65                             [out, iid_is(riid)] IUnknown **ppRowset,
66                             [out] HROW *phRow);
67
68     HRESULT Open([in, unique] IUnknown *pUnkOuter,
69                  [in] DBID *pColumnID,
70                  [in] REFGUID rguidColumnType,
71                  [in] DWORD dwBindFlags,
72                  [in] REFIID riid,
73                  [out, iid_is(riid)] IUnknown **ppUnk);
74
75     /* IRowChange */
76 typedef struct
77 {
78     VARIANT v;
79     DBID columnid;
80     DBLENGTH data_len;
81     DBSTATUS status;
82     DBLENGTH max_len;
83     DBTYPE type;
84     BYTE precision;
85     BYTE scale;
86 } wine_setcolumns_in;
87
88     HRESULT SetColumns([in] DBORDINAL num_cols,
89                        [in, size_is((ULONG)num_cols)] wine_setcolumns_in *in_data,
90                        [out, size_is((ULONG)num_cols)] DBSTATUS *status);
91
92     /* IRowset */
93     HRESULT AddRefRows([in] DBCOUNTITEM cRows,
94                        [in, size_is((ULONG)cRows)] const HROW rghRows[],
95                        [out, size_is((ULONG)cRows)] DBREFCOUNT rgRefCounts[],
96                        [out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
97
98     HRESULT GetData([in] HROW hRow,
99                     [in] HACCESSOR hAccessor,
100                     [in, out, size_is(size)] BYTE *pData,
101                     [in] DWORD size);
102
103     HRESULT GetNextRows([in] HCHAPTER hReserved,
104                         [in] DBROWOFFSET lRowsOffset,
105                         [in] DBROWCOUNT cRows,
106                         [out] DBCOUNTITEM *pcRowObtained,
107                         [out, size_is(,(ULONG)cRows)] HROW **prghRows);
108
109     HRESULT ReleaseRows([in] DBCOUNTITEM cRows,
110                         [in, size_is((ULONG)cRows)] const HROW rghRows[],
111                         [in, size_is((ULONG)cRows)] DBROWOPTIONS rgRowOptions[],
112                         [out, size_is((ULONG)cRows)] DBREFCOUNT rgRefCounts[],
113                         [out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
114
115     HRESULT RestartPosition([in] HCHAPTER hReserved);
116
117     /* IRowsetLocate */
118
119     HRESULT Compare([in] HCHAPTER hReserved,
120                     [in] DBBKMARK cbBookmark1,
121                     [in, size_is((ULONG)cbBookmark1)] const BYTE *pBookmark1,
122                     [in] DBBKMARK cbBookmark2,
123                     [in, size_is((ULONG)cbBookmark2)] const BYTE *pBookmark2,
124                     [out] DBCOMPARE *pComparison);
125
126     HRESULT GetRowsAt([in] HWATCHREGION hReserved1,
127                       [in] HCHAPTER hReserved2,
128                       [in] DBBKMARK cbBookmark,
129                       [in, size_is((ULONG)cbBookmark)] const BYTE *pBookmark,
130                       [in] DBROWOFFSET lRowsOffset,
131                       [in] DBROWCOUNT cRows,
132                       [out] DBCOUNTITEM *pcRowsObtained,
133                       [out, size_is(,(ULONG)cRows)] HROW **prghRows);
134
135     HRESULT GetRowsByBookmark([in] HCHAPTER hReserved,
136                               [in] DBCOUNTITEM cRows,
137                               [in, size_is((ULONG)cRows)] const DBBKMARK rgcbBookmarks[],
138                               [in, size_is((ULONG)cRows)] const BYTE *rgpBookmarks[],
139                               [out, size_is((ULONG)cRows)] HROW rghRows[],
140                               [out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
141
142     HRESULT Hash([in] HCHAPTER hReserved,
143                  [in] DBBKMARK cBookmarks,
144                  [in, size_is((ULONG)cBookmarks)] const DBBKMARK rgcbBookmarks[],
145                  [in, size_is((ULONG)cBookmarks)] const BYTE *rgpBookmarks[],
146                  [out, size_is((ULONG)cBookmarks)] DBHASHVALUE rgHashedValues[],
147                  [out, size_is((ULONG)cBookmarks)] DBROWSTATUS rgBookmarkStatus[]);
148
149     /* IRowsetInfo */
150
151     HRESULT GetProperties([in] ULONG cPropertyIDSets,
152                           [in, unique, size_is((ULONG)cPropertyIDSets)] const DBPROPIDSET *rgPropertyIDSets,
153                           [in, out] ULONG *pcPropertySets,
154                           [out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets);
155
156     HRESULT GetReferencedRowset([in] DBORDINAL iOrdinal,
157                                 [in] REFIID riid,
158                                 [out, iid_is(riid)] IUnknown **ppReferencedRowset);
159
160     HRESULT GetSpecification([in] REFIID riid,
161                              [out, iid_is(riid)] IUnknown **ppSpecification);
162
163     /* IAccessor */
164
165     HRESULT AddRefAccessor([in] HACCESSOR hAccessor,
166                            [in, out, unique, annotation("__out_opt")] DBREFCOUNT *pcRefCount);
167
168     HRESULT CreateAccessor([in] DBACCESSORFLAGS dwAccessorFlags,
169                            [in] DBCOUNTITEM cBindings,
170                            [in, unique, size_is((ULONG)cBindings)] const DBBINDING *rgBindings,
171                            [in] DBLENGTH cbRowSize,
172                            [out] HACCESSOR *phAccessor,
173                            [in, out, unique, size_is((ULONG)cBindings)] DBBINDSTATUS *rgStatus);
174
175     HRESULT GetBindings([in] HACCESSOR hAccessor,
176                         [out] DBACCESSORFLAGS *pdwAccessorFlags,
177                         [in, out] DBCOUNTITEM *pcBindings,
178                         [out, size_is(,(ULONG)*pcBindings)] DBBINDING **prgBindings);
179
180     HRESULT ReleaseAccessor([in] HACCESSOR hAccessor,
181                             [in, out, unique] DBREFCOUNT *pcRefCount);
182 }
183
184 [
185     helpstring("Wine OLE DB Row Server"),
186     threading(both),
187     progid("WINEDBROWPRX.AsServer.1"),
188     vi_progid("WINEDBROWPRX.AsServer"),
189     uuid(38248178-cf6d-11de-abe5-000c2916d865)
190 ]
191 coclass wine_row_server
192 {
193
194 }
195
196 [
197     helpstring("Wine OLE DB Row Proxy"),
198     threading(both),
199     progid("WINEDBROWPRX.AsProxy.1"),
200     vi_progid("WINEDBROWPRX.AsProxy"),
201     uuid(38248179-cf6d-11de-abe5-000c2916d865)
202 ]
203 coclass wine_row_proxy
204 {
205
206 }
207
208 [
209     helpstring("Wine OLE DB Rowset Server"),
210     threading(both),
211     progid("WINEDBRSTPRX.AsServer.1"),
212     vi_progid("WINEDBRSTPRX.AsServer"),
213     uuid(3824817a-cf6d-11de-abe5-000c2916d865)
214 ]
215 coclass wine_rowset_server
216 {
217
218 }
219
220 [
221     helpstring("Wine OLE DB Rowset Proxy"),
222     threading(both),
223     progid("WINEDBRSTPRX.AsProxy.1"),
224     vi_progid("WINEDBRSTPRX.AsProxy"),
225     uuid(3824817b-cf6d-11de-abe5-000c2916d865)
226 ]
227 coclass wine_rowset_proxy
228 {
229
230 }
231
232 cpp_quote("extern HRESULT create_row_server( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
233 cpp_quote("extern HRESULT create_row_marshal( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
234 cpp_quote("extern HRESULT create_rowset_server( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
235 cpp_quote("extern HRESULT create_rowset_marshal( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")