msdaps: Add support for remoting IRowsetLocate_GetRowsAt.
diff --git a/dlls/msdaps/row_server.c b/dlls/msdaps/row_server.c
index c54ce47..26d0e13 100644
--- a/dlls/msdaps/row_server.c
+++ b/dlls/msdaps/row_server.c
@@ -332,11 +332,23 @@
DBROWCOUNT cRows, DBCOUNTITEM *pcRowsObtained, HROW **prghRows)
{
server *This = impl_from_IWineRowServer(iface);
+ IRowsetLocate *rowsetlocate;
+ HRESULT hr;
- FIXME("(%p)->(%08lx, %08lx, %d, %p, %d, %d, %p, %p): stub\n", This, hReserved1, hReserved2, cbBookmark, pBookmark,
- lRowsOffset, cRows, pcRowsObtained, prghRows);
+ TRACE("(%p)->(%08lx, %08lx, %d, %p, %d, %d, %p, %p\n", This, hReserved1, hReserved2, cbBookmark, pBookmark, lRowsOffset, cRows,
+ pcRowsObtained, prghRows);
- return E_NOTIMPL;
+ *prghRows = NULL;
+
+ hr = IUnknown_QueryInterface(This->inner_unk, &IID_IRowsetLocate, (void**)&rowsetlocate);
+ if(FAILED(hr)) return hr;
+
+ hr = IRowsetLocate_GetRowsAt(rowsetlocate, hReserved1, hReserved2, cbBookmark, pBookmark, lRowsOffset,
+ cRows, pcRowsObtained, prghRows);
+ IRowsetLocate_Release(rowsetlocate);
+
+ TRACE("returning %08x\n", hr);
+ return hr;
}
static HRESULT WINAPI server_GetRowsByBookmark(IWineRowServer *iface, HCHAPTER hReserved, DBCOUNTITEM cRows,
@@ -1006,8 +1018,23 @@
HROW **prghRows)
{
rowset_proxy *This = impl_from_IRowsetLocate(iface);
- FIXME("(%p)\n", This);
- return E_NOTIMPL;
+ HRESULT hr;
+ HROW *rows = NULL;
+
+ TRACE("(%p)->(%08lx, %08lx, %d, %p, %d, %d, %p, %p\n", This, hReserved1, hReserved2, cbBookmark, pBookmark, lRowsOffset, cRows,
+ pcRowsObtained, prghRows);
+
+ hr = IWineRowServer_GetRowsAt(This->server, hReserved1, hReserved2, cbBookmark, pBookmark, lRowsOffset, cRows, pcRowsObtained, &rows);
+
+ if(*prghRows)
+ {
+ memcpy(*prghRows, rows, *pcRowsObtained * sizeof(rows[0]));
+ CoTaskMemFree(rows);
+ }
+ else
+ *prghRows = rows;
+
+ return hr;
}
static HRESULT WINAPI rowsetlocate_GetRowsByBookmark(IRowsetLocate *iface, HCHAPTER hReserved, DBCOUNTITEM cRows, const DBBKMARK rgcbBookmarks[],