msdaps: Expose IRowsetLocate, IRowsetInfo and IAccessor on the client side.
This commit is contained in:
parent
7deb07cf2f
commit
7cbf164fe3
|
@ -667,6 +667,9 @@ static HRESULT create_row_proxy(IWineRowServer *server, IUnknown **obj)
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
const IRowsetVtbl *rowset_vtbl;
|
const IRowsetVtbl *rowset_vtbl;
|
||||||
|
const IRowsetLocateVtbl *rowsetlocate_vtbl;
|
||||||
|
const IRowsetInfoVtbl *rowsetinfo_vtbl;
|
||||||
|
const IAccessorVtbl *accessor_vtbl;
|
||||||
|
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
|
||||||
|
@ -678,6 +681,21 @@ static inline rowset_proxy *impl_from_IRowset(IRowset *iface)
|
||||||
return (rowset_proxy *)((char*)iface - FIELD_OFFSET(rowset_proxy, rowset_vtbl));
|
return (rowset_proxy *)((char*)iface - FIELD_OFFSET(rowset_proxy, rowset_vtbl));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline rowset_proxy *impl_from_IRowsetLocate(IRowsetLocate *iface)
|
||||||
|
{
|
||||||
|
return (rowset_proxy *)((char*)iface - FIELD_OFFSET(rowset_proxy, rowsetlocate_vtbl));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline rowset_proxy *impl_from_IRowsetInfo(IRowsetInfo *iface)
|
||||||
|
{
|
||||||
|
return (rowset_proxy *)((char*)iface - FIELD_OFFSET(rowset_proxy, rowsetinfo_vtbl));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline rowset_proxy *impl_from_IAccessor(IAccessor *iface)
|
||||||
|
{
|
||||||
|
return (rowset_proxy *)((char*)iface - FIELD_OFFSET(rowset_proxy, accessor_vtbl));
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI rowset_QueryInterface(IRowset *iface, REFIID iid, void **obj)
|
static HRESULT WINAPI rowset_QueryInterface(IRowset *iface, REFIID iid, void **obj)
|
||||||
{
|
{
|
||||||
rowset_proxy *This = impl_from_IRowset(iface);
|
rowset_proxy *This = impl_from_IRowset(iface);
|
||||||
|
@ -690,6 +708,18 @@ static HRESULT WINAPI rowset_QueryInterface(IRowset *iface, REFIID iid, void **o
|
||||||
{
|
{
|
||||||
*obj = &This->rowset_vtbl;
|
*obj = &This->rowset_vtbl;
|
||||||
}
|
}
|
||||||
|
else if(IsEqualIID(iid, &IID_IRowsetLocate))
|
||||||
|
{
|
||||||
|
*obj = &This->rowsetlocate_vtbl;
|
||||||
|
}
|
||||||
|
else if(IsEqualIID(iid, &IID_IRowsetInfo))
|
||||||
|
{
|
||||||
|
*obj = &This->rowsetinfo_vtbl;
|
||||||
|
}
|
||||||
|
else if(IsEqualIID(iid, &IID_IAccessor))
|
||||||
|
{
|
||||||
|
*obj = &This->accessor_vtbl;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FIXME("interface %s not implemented\n", debugstr_guid(iid));
|
FIXME("interface %s not implemented\n", debugstr_guid(iid));
|
||||||
|
@ -825,6 +855,218 @@ static const IRowsetVtbl rowset_vtbl =
|
||||||
rowset_RestartPosition
|
rowset_RestartPosition
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_QueryInterface(IRowsetLocate *iface, REFIID iid, void **obj)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IUnknown_QueryInterface((IUnknown *)This, iid, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI rowsetlocate_AddRef(IRowsetLocate *iface)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IUnknown_AddRef((IUnknown *)This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI rowsetlocate_Release(IRowsetLocate *iface)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IUnknown_Release((IUnknown *)This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_AddRefRows(IRowsetLocate *iface, DBCOUNTITEM cRows, const HROW rghRows[],
|
||||||
|
DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[])
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IRowset_AddRefRows((IRowset*)This, cRows, rghRows, rgRefCounts, rgRowStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_GetData(IRowsetLocate *iface, HROW hRow, HACCESSOR hAccessor, void *pData)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IRowset_GetData((IRowset*)This, hRow, hAccessor, pData);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_GetNextRows(IRowsetLocate *iface, HCHAPTER hReserved, DBROWOFFSET lRowsOffset,
|
||||||
|
DBROWCOUNT cRows, DBCOUNTITEM *pcRowObtained, HROW **prghRows)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IRowset_GetNextRows((IRowset*)This, hReserved, lRowsOffset, cRows, pcRowObtained, prghRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_ReleaseRows(IRowsetLocate *iface, DBCOUNTITEM cRows, const HROW rghRows[],
|
||||||
|
DBROWOPTIONS rgRowOptions[], DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[])
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IRowset_ReleaseRows((IRowset*)This, cRows, rghRows, rgRowOptions, rgRefCounts, rgRowStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_RestartPosition(IRowsetLocate *iface, HCHAPTER hReserved)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
return IRowset_RestartPosition((IRowset*)This, hReserved);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_Compare(IRowsetLocate *iface, HCHAPTER hReserved, DBBKMARK cbBookmark1, const BYTE *pBookmark1,
|
||||||
|
DBBKMARK cbBookmark2, const BYTE *pBookmark2, DBCOMPARE *pComparison)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_GetRowsAt(IRowsetLocate *iface, HWATCHREGION hReserved1, HCHAPTER hReserved2, DBBKMARK cbBookmark,
|
||||||
|
const BYTE *pBookmark, DBROWOFFSET lRowsOffset, DBROWCOUNT cRows, DBCOUNTITEM *pcRowsObtained,
|
||||||
|
HROW **prghRows)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_GetRowsByBookmark(IRowsetLocate *iface, HCHAPTER hReserved, DBCOUNTITEM cRows, const DBBKMARK rgcbBookmarks[],
|
||||||
|
const BYTE * rgpBookmarks[], HROW rghRows[], DBROWSTATUS rgRowStatus[])
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetlocate_Hash(IRowsetLocate *iface, HCHAPTER hReserved, DBBKMARK cBookmarks, const DBBKMARK rgcbBookmarks[],
|
||||||
|
const BYTE * rgpBookmarks[], DBHASHVALUE rgHashedValues[], DBROWSTATUS rgBookmarkStatus[])
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetLocate(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IRowsetLocateVtbl rowsetlocate_vtbl =
|
||||||
|
{
|
||||||
|
rowsetlocate_QueryInterface,
|
||||||
|
rowsetlocate_AddRef,
|
||||||
|
rowsetlocate_Release,
|
||||||
|
rowsetlocate_AddRefRows,
|
||||||
|
rowsetlocate_GetData,
|
||||||
|
rowsetlocate_GetNextRows,
|
||||||
|
rowsetlocate_ReleaseRows,
|
||||||
|
rowsetlocate_RestartPosition,
|
||||||
|
rowsetlocate_Compare,
|
||||||
|
rowsetlocate_GetRowsAt,
|
||||||
|
rowsetlocate_GetRowsByBookmark,
|
||||||
|
rowsetlocate_Hash
|
||||||
|
};
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetinfo_QueryInterface(IRowsetInfo *iface, REFIID iid, void **obj)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetInfo(iface);
|
||||||
|
return IUnknown_QueryInterface((IUnknown *)This, iid, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI rowsetinfo_AddRef(IRowsetInfo *iface)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetInfo(iface);
|
||||||
|
return IUnknown_AddRef((IUnknown *)This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI rowsetinfo_Release(IRowsetInfo *iface)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetInfo(iface);
|
||||||
|
return IUnknown_Release((IUnknown *)This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetinfo_GetProperties(IRowsetInfo *iface, const ULONG cPropertyIDSets,
|
||||||
|
const DBPROPIDSET rgPropertyIDSets[], ULONG *pcPropertySets,
|
||||||
|
DBPROPSET **prgPropertySets)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetInfo(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetinfo_GetReferencedRowset(IRowsetInfo *iface, DBORDINAL iOrdinal, REFIID riid,
|
||||||
|
IUnknown **ppReferencedRowset)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetInfo(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI rowsetinfo_GetSpecification(IRowsetInfo *iface, REFIID riid, IUnknown **ppSpecification)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IRowsetInfo(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IRowsetInfoVtbl rowsetinfo_vtbl =
|
||||||
|
{
|
||||||
|
rowsetinfo_QueryInterface,
|
||||||
|
rowsetinfo_AddRef,
|
||||||
|
rowsetinfo_Release,
|
||||||
|
rowsetinfo_GetProperties,
|
||||||
|
rowsetinfo_GetReferencedRowset,
|
||||||
|
rowsetinfo_GetSpecification
|
||||||
|
};
|
||||||
|
|
||||||
|
static HRESULT WINAPI accessor_QueryInterface(IAccessor *iface, REFIID iid, void **obj)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
return IUnknown_QueryInterface((IUnknown *)This, iid, obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI accessor_AddRef(IAccessor *iface)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
return IUnknown_AddRef((IUnknown *)This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI accessor_Release(IAccessor *iface)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
return IUnknown_Release((IUnknown *)This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI accessor_AddRefAccessor(IAccessor *iface, HACCESSOR hAccessor, DBREFCOUNT *pcRefCount)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI accessor_CreateAccessor(IAccessor *iface, DBACCESSORFLAGS dwAccessorFlags, DBCOUNTITEM cBindings,
|
||||||
|
const DBBINDING rgBindings[], DBLENGTH cbRowSize, HACCESSOR *phAccessor,
|
||||||
|
DBBINDSTATUS rgStatus[])
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI accessor_GetBindings(IAccessor *iface, HACCESSOR hAccessor, DBACCESSORFLAGS *pdwAccessorFlags,
|
||||||
|
DBCOUNTITEM *pcBindings, DBBINDING **prgBindings)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI accessor_ReleaseAccessor(IAccessor *iface, HACCESSOR hAccessor, DBREFCOUNT *pcRefCount)
|
||||||
|
{
|
||||||
|
rowset_proxy *This = impl_from_IAccessor(iface);
|
||||||
|
FIXME("(%p)\n", This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IAccessorVtbl accessor_vtbl =
|
||||||
|
{
|
||||||
|
accessor_QueryInterface,
|
||||||
|
accessor_AddRef,
|
||||||
|
accessor_Release,
|
||||||
|
accessor_AddRefAccessor,
|
||||||
|
accessor_CreateAccessor,
|
||||||
|
accessor_GetBindings,
|
||||||
|
accessor_ReleaseAccessor
|
||||||
|
};
|
||||||
|
|
||||||
HRESULT create_rowset_proxy(IWineRowServer *server, IUnknown **obj)
|
HRESULT create_rowset_proxy(IWineRowServer *server, IUnknown **obj)
|
||||||
{
|
{
|
||||||
rowset_proxy *proxy;
|
rowset_proxy *proxy;
|
||||||
|
@ -836,6 +1078,9 @@ HRESULT create_rowset_proxy(IWineRowServer *server, IUnknown **obj)
|
||||||
if(!proxy) return E_OUTOFMEMORY;
|
if(!proxy) return E_OUTOFMEMORY;
|
||||||
|
|
||||||
proxy->rowset_vtbl = &rowset_vtbl;
|
proxy->rowset_vtbl = &rowset_vtbl;
|
||||||
|
proxy->rowsetlocate_vtbl = &rowsetlocate_vtbl;
|
||||||
|
proxy->rowsetinfo_vtbl = &rowsetinfo_vtbl;
|
||||||
|
proxy->accessor_vtbl = &accessor_vtbl;
|
||||||
proxy->ref = 1;
|
proxy->ref = 1;
|
||||||
IWineRowServer_AddRef(server);
|
IWineRowServer_AddRef(server);
|
||||||
proxy->server = server;
|
proxy->server = server;
|
||||||
|
|
Loading…
Reference in New Issue