Commit e44206d1 authored by Huw Davies's avatar Huw Davies Committed by Alexandre Julliard

msdaps: Add support for remoting IRowset_ReleaseRows.

parent 93ea2e00
...@@ -285,8 +285,19 @@ static HRESULT WINAPI server_ReleaseRows(IWineRowServer* iface, DBCOUNTITEM cRow ...@@ -285,8 +285,19 @@ static HRESULT WINAPI server_ReleaseRows(IWineRowServer* iface, DBCOUNTITEM cRow
DBROWOPTIONS rgRowOptions[], DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[]) DBROWOPTIONS rgRowOptions[], DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[])
{ {
server *This = impl_from_IWineRowServer(iface); server *This = impl_from_IWineRowServer(iface);
FIXME("(%p)->(%d, %p, %p, %p, %p): stub\n", This, cRows, rghRows, rgRowOptions, rgRefCounts, rgRowStatus); IRowset *rowset;
return E_NOTIMPL; HRESULT hr;
TRACE("(%p)->(%d, %p, %p, %p, %p)\n", This, cRows, rghRows, rgRowOptions, rgRefCounts, rgRowStatus);
hr = IUnknown_QueryInterface(This->inner_unk, &IID_IRowset, (void**)&rowset);
if(FAILED(hr)) return hr;
hr = IRowset_ReleaseRows(rowset, cRows, rghRows, rgRowOptions, rgRefCounts, rgRowStatus);
IRowset_Release(rowset);
TRACE("returning %08x\n", hr);
return hr;
} }
static HRESULT WINAPI server_RestartPosition(IWineRowServer* iface, HCHAPTER hReserved) static HRESULT WINAPI server_RestartPosition(IWineRowServer* iface, HCHAPTER hReserved)
...@@ -660,10 +671,28 @@ static HRESULT WINAPI rowset_ReleaseRows(IRowset *iface, DBCOUNTITEM cRows, cons ...@@ -660,10 +671,28 @@ static HRESULT WINAPI rowset_ReleaseRows(IRowset *iface, DBCOUNTITEM cRows, cons
DBROWOPTIONS rgRowOptions[], DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[]) DBROWOPTIONS rgRowOptions[], DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[])
{ {
rowset_proxy *This = impl_from_IRowset(iface); rowset_proxy *This = impl_from_IRowset(iface);
HRESULT hr;
DBROWOPTIONS *options = rgRowOptions;
DBREFCOUNT *refs = rgRefCounts;
DBROWSTATUS *status = rgRowStatus;
FIXME("(%p)->(%d, %p, %p, %p, %p): stub\n", This, cRows, rghRows, rgRowOptions, rgRefCounts, rgRowStatus); TRACE("(%p)->(%d, %p, %p, %p, %p)\n", This, cRows, rghRows, rgRowOptions, rgRefCounts, rgRowStatus);
return E_NOTIMPL; if(!options)
{
options = CoTaskMemAlloc(cRows * sizeof(options[0]));
memset(options, 0, cRows * sizeof(options[0]));
}
if(!refs) refs = CoTaskMemAlloc(cRows * sizeof(refs[0]));
if(!status) status = CoTaskMemAlloc(cRows * sizeof(status[0]));
hr = IWineRowServer_ReleaseRows(This->server, cRows, rghRows, options, refs, status);
if(status != rgRowStatus) CoTaskMemFree(status);
if(refs != rgRefCounts) CoTaskMemFree(refs);
if(options != rgRowOptions) CoTaskMemFree(options);
return hr;
} }
static HRESULT WINAPI rowset_RestartPosition(IRowset* iface, HCHAPTER hReserved) static HRESULT WINAPI rowset_RestartPosition(IRowset* iface, HCHAPTER hReserved)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment