msvcrt: Improved locale initialization.
[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     object,
25     uuid(38248178-cf6d-11de-abe5-000c2916d865),
26     pointer_default(unique)
27 ]
28 interface IWineRowServer : IUnknown
29 {
30     [local] HRESULT SetInnerUnk([in] IUnknown *unknown);
31
32     [local] HRESULT GetMarshal([out] IMarshal **marshal);
33
34
35     /* IRow */
36
37 typedef struct
38 {
39     DBID columnid;
40     DBLENGTH max_len;
41     DBTYPE type;
42     BYTE precision;
43     BYTE scale;
44 } wine_getcolumns_in;
45
46 typedef struct
47 {
48     VARIANT v;
49     DBLENGTH data_len;
50     DBSTATUS status;
51 } wine_getcolumns_out;
52
53     HRESULT GetColumns([in] DBORDINAL num_cols,
54                        [in, size_is((ULONG)num_cols)] wine_getcolumns_in *in_data,
55                        [out, size_is((ULONG)num_cols)] wine_getcolumns_out *out_cols);
56
57     HRESULT GetSourceRowset([in] REFIID riid,
58                             [out, iid_is(riid)] IUnknown **ppRowset,
59                             [out] HROW *phRow);
60
61     HRESULT Open([in, unique] IUnknown *pUnkOuter,
62                  [in] DBID *pColumnID,
63                  [in] REFGUID rguidColumnType,
64                  [in] DWORD dwBindFlags,
65                  [in] REFIID riid,
66                  [out, iid_is(riid)] IUnknown **ppUnk);
67
68     /* IRowChange */
69 typedef struct
70 {
71     VARIANT v;
72     DBID columnid;
73     DBLENGTH data_len;
74     DBSTATUS status;
75     DBLENGTH max_len;
76     DBTYPE type;
77     BYTE precision;
78     BYTE scale;
79 } wine_setcolumns_in;
80
81     HRESULT SetColumns([in] DBORDINAL num_cols,
82                        [in, size_is((ULONG)num_cols)] wine_setcolumns_in *in_data,
83                        [out, size_is((ULONG)num_cols)] DBSTATUS *status);
84
85     /* IRowset */
86     HRESULT AddRefRows([in] DBCOUNTITEM cRows,
87                        [in, size_is((ULONG)cRows)] const HROW rghRows[],
88                        [out, size_is((ULONG)cRows)] DBREFCOUNT rgRefCounts[],
89                        [out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
90
91     HRESULT GetData([in] HROW hRow,
92                     [in] HACCESSOR hAccessor,
93                     [in, out, size_is(size)] BYTE *pData,
94                     [in] DWORD size);
95
96     HRESULT GetNextRows([in] HCHAPTER hReserved,
97                         [in] DBROWOFFSET lRowsOffset,
98                         [in] DBROWCOUNT cRows,
99                         [out] DBCOUNTITEM *pcRowObtained,
100                         [out, size_is(,(ULONG)cRows)] HROW **prghRows);
101
102     HRESULT ReleaseRows([in] DBCOUNTITEM cRows,
103                         [in, size_is((ULONG)cRows)] const HROW rghRows[],
104                         [in, size_is((ULONG)cRows)] DBROWOPTIONS rgRowOptions[],
105                         [out, size_is((ULONG)cRows)] DBREFCOUNT rgRefCounts[],
106                         [out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
107
108     HRESULT RestartPosition([in] HCHAPTER hReserved);
109
110     /* IRowsetLocate */
111
112     HRESULT Compare([in] HCHAPTER hReserved,
113                     [in] DBBKMARK cbBookmark1,
114                     [in, size_is((ULONG)cbBookmark1)] const BYTE *pBookmark1,
115                     [in] DBBKMARK cbBookmark2,
116                     [in, size_is((ULONG)cbBookmark2)] const BYTE *pBookmark2,
117                     [out] DBCOMPARE *pComparison);
118
119     HRESULT GetRowsAt([in] HWATCHREGION hReserved1,
120                       [in] HCHAPTER hReserved2,
121                       [in] DBBKMARK cbBookmark,
122                       [in, size_is((ULONG)cbBookmark)] const BYTE *pBookmark,
123                       [in] DBROWOFFSET lRowsOffset,
124                       [in] DBROWCOUNT cRows,
125                       [out] DBCOUNTITEM *pcRowsObtained,
126                       [out, size_is(,(ULONG)cRows)] HROW **prghRows);
127
128     HRESULT GetRowsByBookmark([in] HCHAPTER hReserved,
129                               [in] DBCOUNTITEM cRows,
130                               [in, size_is((ULONG)cRows)] const DBBKMARK rgcbBookmarks[],
131                               [in, size_is((ULONG)cRows)] const BYTE *rgpBookmarks[],
132                               [out, size_is((ULONG)cRows)] HROW rghRows[],
133                               [out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
134
135     HRESULT Hash([in] HCHAPTER hReserved,
136                  [in] DBBKMARK cBookmarks,
137                  [in, size_is((ULONG)cBookmarks)] const DBBKMARK rgcbBookmarks[],
138                  [in, size_is((ULONG)cBookmarks)] const BYTE *rgpBookmarks[],
139                  [out, size_is((ULONG)cBookmarks)] DBHASHVALUE rgHashedValues[],
140                  [out, size_is((ULONG)cBookmarks)] DBROWSTATUS rgBookmarkStatus[]);
141
142     /* IRowsetInfo */
143
144     HRESULT GetProperties([in] ULONG cPropertyIDSets,
145                           [in, unique, size_is((ULONG)cPropertyIDSets)] const DBPROPIDSET *rgPropertyIDSets,
146                           [in, out] ULONG *pcPropertySets,
147                           [out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets);
148
149     HRESULT GetReferencedRowset([in] DBORDINAL iOrdinal,
150                                 [in] REFIID riid,
151                                 [out, iid_is(riid)] IUnknown **ppReferencedRowset);
152
153     HRESULT GetSpecification([in] REFIID riid,
154                              [out, iid_is(riid)] IUnknown **ppSpecification);
155
156     /* IAccessor */
157
158     HRESULT AddRefAccessor([in] HACCESSOR hAccessor,
159                            [in, out, unique, annotation("__out_opt")] DBREFCOUNT *pcRefCount);
160
161     HRESULT CreateAccessor([in] DBACCESSORFLAGS dwAccessorFlags,
162                            [in] DBCOUNTITEM cBindings,
163                            [in, unique, size_is((ULONG)cBindings)] const DBBINDING *rgBindings,
164                            [in] DBLENGTH cbRowSize,
165                            [out] HACCESSOR *phAccessor,
166                            [in, out, unique, size_is((ULONG)cBindings)] DBBINDSTATUS *rgStatus);
167
168     HRESULT GetBindings([in] HACCESSOR hAccessor,
169                         [out] DBACCESSORFLAGS *pdwAccessorFlags,
170                         [in, out] DBCOUNTITEM *pcBindings,
171                         [out, size_is(,(ULONG)*pcBindings)] DBBINDING **prgBindings);
172
173     HRESULT ReleaseAccessor([in] HACCESSOR hAccessor,
174                             [in, out, unique] DBREFCOUNT *pcRefCount);
175 }
176
177 [
178     helpstring("Wine OLE DB Row Server"),
179     threading(both),
180     progid("WINEDBROWPRX.AsServer.1"),
181     vi_progid("WINEDBROWPRX.AsServer"),
182     uuid(38248178-cf6d-11de-abe5-000c2916d865)
183 ]
184 coclass wine_row_server
185 {
186
187 }
188
189 [
190     helpstring("Wine OLE DB Row Proxy"),
191     threading(both),
192     progid("WINEDBROWPRX.AsProxy.1"),
193     vi_progid("WINEDBROWPRX.AsProxy"),
194     uuid(38248179-cf6d-11de-abe5-000c2916d865)
195 ]
196 coclass wine_row_proxy
197 {
198
199 }
200
201 [
202     helpstring("Wine OLE DB Rowset Server"),
203     threading(both),
204     progid("WINEDBRSTPRX.AsServer.1"),
205     vi_progid("WINEDBRSTPRX.AsServer"),
206     uuid(3824817a-cf6d-11de-abe5-000c2916d865)
207 ]
208 coclass wine_rowset_server
209 {
210
211 }
212
213 [
214     helpstring("Wine OLE DB Rowset Proxy"),
215     threading(both),
216     progid("WINEDBRSTPRX.AsProxy.1"),
217     vi_progid("WINEDBRSTPRX.AsProxy"),
218     uuid(3824817b-cf6d-11de-abe5-000c2916d865)
219 ]
220 coclass wine_rowset_proxy
221 {
222
223 }
224
225 cpp_quote("extern HRESULT create_row_server( IUnknown*, LPVOID* );")
226 cpp_quote("extern HRESULT create_row_marshal( IUnknown*, LPVOID* );")
227 cpp_quote("extern HRESULT create_rowset_server( IUnknown*, LPVOID* );")
228 cpp_quote("extern HRESULT create_rowset_marshal( IUnknown*, LPVOID* );")