2010-01-21 12:53:25 +01:00
|
|
|
/*
|
|
|
|
* Wine row server interface.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2010 Huw Davies
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
2010-02-02 13:07:12 +01:00
|
|
|
import "oledb.idl";
|
|
|
|
|
2011-08-01 14:26:36 +02:00
|
|
|
|
|
|
|
[
|
|
|
|
threading(both),
|
|
|
|
uuid(06210e88-01f5-11d1-b512-0080c781c384)
|
|
|
|
]
|
|
|
|
coclass PSFactoryBuffer { interface IFactoryBuffer; }
|
|
|
|
|
2010-02-02 13:07:12 +01:00
|
|
|
[
|
|
|
|
object,
|
|
|
|
uuid(38248178-cf6d-11de-abe5-000c2916d865),
|
|
|
|
pointer_default(unique)
|
|
|
|
]
|
|
|
|
interface IWineRowServer : IUnknown
|
|
|
|
{
|
|
|
|
[local] HRESULT SetInnerUnk([in] IUnknown *unknown);
|
|
|
|
|
|
|
|
[local] HRESULT GetMarshal([out] IMarshal **marshal);
|
2010-02-03 12:48:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* IRow */
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
DBID columnid;
|
|
|
|
DBLENGTH max_len;
|
|
|
|
DBTYPE type;
|
|
|
|
BYTE precision;
|
|
|
|
BYTE scale;
|
|
|
|
} wine_getcolumns_in;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
VARIANT v;
|
|
|
|
DBLENGTH data_len;
|
|
|
|
DBSTATUS status;
|
|
|
|
} wine_getcolumns_out;
|
|
|
|
|
|
|
|
HRESULT GetColumns([in] DBORDINAL num_cols,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)num_cols)] wine_getcolumns_in *in_data,
|
|
|
|
[out, size_is((ULONG)num_cols)] wine_getcolumns_out *out_cols);
|
2010-02-03 12:48:21 +01:00
|
|
|
|
|
|
|
HRESULT GetSourceRowset([in] REFIID riid,
|
|
|
|
[out, iid_is(riid)] IUnknown **ppRowset,
|
|
|
|
[out] HROW *phRow);
|
|
|
|
|
|
|
|
HRESULT Open([in, unique] IUnknown *pUnkOuter,
|
|
|
|
[in] DBID *pColumnID,
|
|
|
|
[in] REFGUID rguidColumnType,
|
|
|
|
[in] DWORD dwBindFlags,
|
|
|
|
[in] REFIID riid,
|
|
|
|
[out, iid_is(riid)] IUnknown **ppUnk);
|
|
|
|
|
2010-02-04 12:43:38 +01:00
|
|
|
/* IRowChange */
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
VARIANT v;
|
|
|
|
DBID columnid;
|
|
|
|
DBLENGTH data_len;
|
|
|
|
DBSTATUS status;
|
|
|
|
DBLENGTH max_len;
|
|
|
|
DBTYPE type;
|
|
|
|
BYTE precision;
|
|
|
|
BYTE scale;
|
|
|
|
} wine_setcolumns_in;
|
|
|
|
|
|
|
|
HRESULT SetColumns([in] DBORDINAL num_cols,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)num_cols)] wine_setcolumns_in *in_data,
|
|
|
|
[out, size_is((ULONG)num_cols)] DBSTATUS *status);
|
2010-02-04 12:43:38 +01:00
|
|
|
|
|
|
|
/* IRowset */
|
|
|
|
HRESULT AddRefRows([in] DBCOUNTITEM cRows,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cRows)] const HROW rghRows[],
|
|
|
|
[out, size_is((ULONG)cRows)] DBREFCOUNT rgRefCounts[],
|
|
|
|
[out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
|
2010-02-04 12:43:38 +01:00
|
|
|
|
|
|
|
HRESULT GetData([in] HROW hRow,
|
|
|
|
[in] HACCESSOR hAccessor,
|
|
|
|
[in, out, size_is(size)] BYTE *pData,
|
|
|
|
[in] DWORD size);
|
|
|
|
|
|
|
|
HRESULT GetNextRows([in] HCHAPTER hReserved,
|
|
|
|
[in] DBROWOFFSET lRowsOffset,
|
|
|
|
[in] DBROWCOUNT cRows,
|
|
|
|
[out] DBCOUNTITEM *pcRowObtained,
|
2010-12-31 01:14:39 +01:00
|
|
|
[out, size_is(,(ULONG)cRows)] HROW **prghRows);
|
2010-02-04 12:43:38 +01:00
|
|
|
|
|
|
|
HRESULT ReleaseRows([in] DBCOUNTITEM cRows,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cRows)] const HROW rghRows[],
|
|
|
|
[in, size_is((ULONG)cRows)] DBROWOPTIONS rgRowOptions[],
|
|
|
|
[out, size_is((ULONG)cRows)] DBREFCOUNT rgRefCounts[],
|
|
|
|
[out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
|
2010-02-04 12:43:38 +01:00
|
|
|
|
|
|
|
HRESULT RestartPosition([in] HCHAPTER hReserved);
|
2010-02-03 12:48:21 +01:00
|
|
|
|
2010-02-04 13:07:08 +01:00
|
|
|
/* IRowsetLocate */
|
|
|
|
|
|
|
|
HRESULT Compare([in] HCHAPTER hReserved,
|
|
|
|
[in] DBBKMARK cbBookmark1,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cbBookmark1)] const BYTE *pBookmark1,
|
2010-02-04 13:07:08 +01:00
|
|
|
[in] DBBKMARK cbBookmark2,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cbBookmark2)] const BYTE *pBookmark2,
|
2010-02-04 13:07:08 +01:00
|
|
|
[out] DBCOMPARE *pComparison);
|
|
|
|
|
|
|
|
HRESULT GetRowsAt([in] HWATCHREGION hReserved1,
|
|
|
|
[in] HCHAPTER hReserved2,
|
|
|
|
[in] DBBKMARK cbBookmark,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cbBookmark)] const BYTE *pBookmark,
|
2010-02-04 13:07:08 +01:00
|
|
|
[in] DBROWOFFSET lRowsOffset,
|
|
|
|
[in] DBROWCOUNT cRows,
|
|
|
|
[out] DBCOUNTITEM *pcRowsObtained,
|
2010-12-31 01:14:39 +01:00
|
|
|
[out, size_is(,(ULONG)cRows)] HROW **prghRows);
|
2010-02-04 13:07:08 +01:00
|
|
|
|
|
|
|
HRESULT GetRowsByBookmark([in] HCHAPTER hReserved,
|
|
|
|
[in] DBCOUNTITEM cRows,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cRows)] const DBBKMARK rgcbBookmarks[],
|
|
|
|
[in, size_is((ULONG)cRows)] const BYTE *rgpBookmarks[],
|
|
|
|
[out, size_is((ULONG)cRows)] HROW rghRows[],
|
|
|
|
[out, size_is((ULONG)cRows)] DBROWSTATUS rgRowStatus[]);
|
2010-02-04 13:07:08 +01:00
|
|
|
|
|
|
|
HRESULT Hash([in] HCHAPTER hReserved,
|
|
|
|
[in] DBBKMARK cBookmarks,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, size_is((ULONG)cBookmarks)] const DBBKMARK rgcbBookmarks[],
|
|
|
|
[in, size_is((ULONG)cBookmarks)] const BYTE *rgpBookmarks[],
|
|
|
|
[out, size_is((ULONG)cBookmarks)] DBHASHVALUE rgHashedValues[],
|
|
|
|
[out, size_is((ULONG)cBookmarks)] DBROWSTATUS rgBookmarkStatus[]);
|
2010-02-04 13:07:08 +01:00
|
|
|
|
2010-02-04 13:12:35 +01:00
|
|
|
/* IRowsetInfo */
|
|
|
|
|
|
|
|
HRESULT GetProperties([in] ULONG cPropertyIDSets,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, unique, size_is((ULONG)cPropertyIDSets)] const DBPROPIDSET *rgPropertyIDSets,
|
2010-02-04 13:12:35 +01:00
|
|
|
[in, out] ULONG *pcPropertySets,
|
|
|
|
[out, size_is(,*pcPropertySets)] DBPROPSET **prgPropertySets);
|
|
|
|
|
|
|
|
HRESULT GetReferencedRowset([in] DBORDINAL iOrdinal,
|
|
|
|
[in] REFIID riid,
|
|
|
|
[out, iid_is(riid)] IUnknown **ppReferencedRowset);
|
|
|
|
|
|
|
|
HRESULT GetSpecification([in] REFIID riid,
|
|
|
|
[out, iid_is(riid)] IUnknown **ppSpecification);
|
|
|
|
|
2010-02-04 13:19:06 +01:00
|
|
|
/* IAccessor */
|
2010-02-04 13:12:35 +01:00
|
|
|
|
2010-02-04 13:19:06 +01:00
|
|
|
HRESULT AddRefAccessor([in] HACCESSOR hAccessor,
|
|
|
|
[in, out, unique, annotation("__out_opt")] DBREFCOUNT *pcRefCount);
|
|
|
|
|
|
|
|
HRESULT CreateAccessor([in] DBACCESSORFLAGS dwAccessorFlags,
|
|
|
|
[in] DBCOUNTITEM cBindings,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, unique, size_is((ULONG)cBindings)] const DBBINDING *rgBindings,
|
2010-02-04 13:19:06 +01:00
|
|
|
[in] DBLENGTH cbRowSize,
|
|
|
|
[out] HACCESSOR *phAccessor,
|
2010-12-31 01:14:39 +01:00
|
|
|
[in, out, unique, size_is((ULONG)cBindings)] DBBINDSTATUS *rgStatus);
|
2010-02-04 13:19:06 +01:00
|
|
|
|
|
|
|
HRESULT GetBindings([in] HACCESSOR hAccessor,
|
|
|
|
[out] DBACCESSORFLAGS *pdwAccessorFlags,
|
|
|
|
[in, out] DBCOUNTITEM *pcBindings,
|
2010-12-31 01:14:39 +01:00
|
|
|
[out, size_is(,(ULONG)*pcBindings)] DBBINDING **prgBindings);
|
2010-02-04 13:19:06 +01:00
|
|
|
|
|
|
|
HRESULT ReleaseAccessor([in] HACCESSOR hAccessor,
|
|
|
|
[in, out, unique] DBREFCOUNT *pcRefCount);
|
2010-02-02 13:07:12 +01:00
|
|
|
}
|
|
|
|
|
2010-01-21 12:53:25 +01:00
|
|
|
[
|
2010-12-01 14:14:45 +01:00
|
|
|
helpstring("Wine OLE DB Row Server"),
|
|
|
|
threading(both),
|
|
|
|
progid("WINEDBROWPRX.AsServer.1"),
|
|
|
|
vi_progid("WINEDBROWPRX.AsServer"),
|
2010-01-21 12:53:25 +01:00
|
|
|
uuid(38248178-cf6d-11de-abe5-000c2916d865)
|
|
|
|
]
|
|
|
|
coclass wine_row_server
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[
|
2010-12-01 14:14:45 +01:00
|
|
|
helpstring("Wine OLE DB Row Proxy"),
|
|
|
|
threading(both),
|
|
|
|
progid("WINEDBROWPRX.AsProxy.1"),
|
|
|
|
vi_progid("WINEDBROWPRX.AsProxy"),
|
2010-01-21 12:53:25 +01:00
|
|
|
uuid(38248179-cf6d-11de-abe5-000c2916d865)
|
|
|
|
]
|
|
|
|
coclass wine_row_proxy
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[
|
2010-12-01 14:14:45 +01:00
|
|
|
helpstring("Wine OLE DB Rowset Server"),
|
|
|
|
threading(both),
|
|
|
|
progid("WINEDBRSTPRX.AsServer.1"),
|
|
|
|
vi_progid("WINEDBRSTPRX.AsServer"),
|
2010-01-21 12:53:25 +01:00
|
|
|
uuid(3824817a-cf6d-11de-abe5-000c2916d865)
|
|
|
|
]
|
|
|
|
coclass wine_rowset_server
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[
|
2010-12-01 14:14:45 +01:00
|
|
|
helpstring("Wine OLE DB Rowset Proxy"),
|
|
|
|
threading(both),
|
|
|
|
progid("WINEDBRSTPRX.AsProxy.1"),
|
|
|
|
vi_progid("WINEDBRSTPRX.AsProxy"),
|
2010-01-21 12:53:25 +01:00
|
|
|
uuid(3824817b-cf6d-11de-abe5-000c2916d865)
|
|
|
|
]
|
|
|
|
coclass wine_rowset_proxy
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2011-10-03 13:29:29 +02:00
|
|
|
cpp_quote("extern HRESULT create_row_server( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
|
|
|
|
cpp_quote("extern HRESULT create_row_marshal( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
|
|
|
|
cpp_quote("extern HRESULT create_rowset_server( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
|
|
|
|
cpp_quote("extern HRESULT create_rowset_marshal( IUnknown*, LPVOID* ) DECLSPEC_HIDDEN;")
|