msdaps: Implement ISessionProperties_SetProperties proxy and stub.

This commit is contained in:
Huw Davies 2009-08-24 10:50:23 +01:00 committed by Alexandre Julliard
parent 78729fb47f
commit 835c097d4c
1 changed files with 44 additions and 4 deletions

View File

@ -296,16 +296,56 @@ HRESULT __RPC_STUB ISessionProperties_GetProperties_Stub(ISessionProperties* Thi
HRESULT CALLBACK ISessionProperties_SetProperties_Proxy(ISessionProperties* This, ULONG cPropertySets, DBPROPSET rgPropertySets[]) HRESULT CALLBACK ISessionProperties_SetProperties_Proxy(ISessionProperties* This, ULONG cPropertySets, DBPROPSET rgPropertySets[])
{ {
FIXME("(%p, %d, %p): stub\n", This, cPropertySets, rgPropertySets); ULONG prop_set, prop, total_props = 0;
return E_NOTIMPL; HRESULT hr;
IErrorInfo *error;
DBPROPSTATUS *status;
TRACE("(%p, %d, %p)\n", This, cPropertySets, rgPropertySets);
for(prop_set = 0; prop_set < cPropertySets; prop_set++)
total_props += rgPropertySets[prop_set].cProperties;
if(total_props == 0) return S_OK;
status = CoTaskMemAlloc(total_props * sizeof(*status));
if(!status) return E_OUTOFMEMORY;
hr = ISessionProperties_RemoteSetProperties_Proxy(This, cPropertySets, rgPropertySets,
total_props, status, &error);
if(error)
{
SetErrorInfo(0, error);
IErrorInfo_Release(error);
}
total_props = 0;
for(prop_set = 0; prop_set < cPropertySets; prop_set++)
for(prop = 0; prop < rgPropertySets[prop_set].cProperties; prop++)
rgPropertySets[prop_set].rgProperties[prop].dwStatus = status[total_props++];
CoTaskMemFree(status);
return hr;
} }
HRESULT __RPC_STUB ISessionProperties_SetProperties_Stub(ISessionProperties* This, ULONG cPropertySets, DBPROPSET *rgPropertySets, HRESULT __RPC_STUB ISessionProperties_SetProperties_Stub(ISessionProperties* This, ULONG cPropertySets, DBPROPSET *rgPropertySets,
ULONG cTotalProps, DBPROPSTATUS *rgPropStatus, IErrorInfo **ppErrorInfoRem) ULONG cTotalProps, DBPROPSTATUS *rgPropStatus, IErrorInfo **ppErrorInfoRem)
{ {
FIXME("(%p, %d, %p, %d, %p, %p): stub\n", This, cPropertySets, rgPropertySets, cTotalProps, ULONG prop_set, prop, total_props = 0;
HRESULT hr;
TRACE("(%p, %d, %p, %d, %p, %p)\n", This, cPropertySets, rgPropertySets, cTotalProps,
rgPropStatus, ppErrorInfoRem); rgPropStatus, ppErrorInfoRem);
return E_NOTIMPL;
*ppErrorInfoRem = NULL;
hr = ISessionProperties_SetProperties(This, cPropertySets, rgPropertySets);
if(FAILED(hr)) GetErrorInfo(0, ppErrorInfoRem);
for(prop_set = 0; prop_set < cPropertySets; prop_set++)
for(prop = 0; prop < rgPropertySets[prop_set].cProperties; prop++)
rgPropStatus[total_props++] = rgPropertySets[prop_set].rgProperties[prop].dwStatus;
return hr;
} }
HRESULT CALLBACK IOpenRowset_OpenRowset_Proxy(IOpenRowset* This, IUnknown *pUnkOuter, DBID *pTableID, DBID *pIndexID, HRESULT CALLBACK IOpenRowset_OpenRowset_Proxy(IOpenRowset* This, IUnknown *pUnkOuter, DBID *pTableID, DBID *pIndexID,