[OLE32] Sync with Wine Staging 1.9.16. CORE-11866

svn path=/trunk/; revision=72348
This commit is contained in:
Amine Khaldi 2016-08-19 09:38:43 +00:00
parent d4778af3f0
commit e88c7f24df
13 changed files with 78 additions and 90 deletions

View file

@ -218,7 +218,7 @@ static HRESULT WINAPI ClassMoniker_BindToObject(IMoniker* iface,
IClassActivator *pActivator;
HRESULT hr;
TRACE("(%p,%p,%p,%p)\n", pbc, pmkToLeft, riid, ppvResult);
TRACE("(%p, %p, %s, %p)\n", pbc, pmkToLeft, debugstr_guid(riid), ppvResult);
bindopts.cbStruct = sizeof(bindopts);
IBindCtx_GetBindOptions(pbc, (BIND_OPTS *)&bindopts);
@ -251,7 +251,7 @@ static HRESULT WINAPI ClassMoniker_BindToStorage(IMoniker* iface,
REFIID riid,
VOID** ppvResult)
{
TRACE("(%p,%p,%p,%p)\n",pbc, pmkToLeft, riid, ppvResult);
TRACE("(%p, %p, %s, %p)\n", pbc, pmkToLeft, debugstr_guid(riid), ppvResult);
return IMoniker_BindToObject(iface, pbc, pmkToLeft, riid, ppvResult);
}
@ -573,7 +573,7 @@ static HRESULT WINAPI ClassMonikerROTData_QueryInterface(IROTData *iface,REFIID
ClassMoniker *This = impl_from_IROTData(iface);
TRACE("(%p,%p,%p)\n",iface,riid,ppvObject);
TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), ppvObject);
return IMoniker_QueryInterface(&This->IMoniker_iface, riid, ppvObject);
}

View file

@ -1799,7 +1799,7 @@ void OLEClipbrd_UnInitialize(void)
*
* Enumerate all formats supported by the source and make
* those formats available using delayed rendering using SetClipboardData.
* Cache the enumeration list and make that list visibile as the
* Cache the enumeration list and make that list visible as the
* 'Ole Private Data' format on the clipboard.
*
*/

View file

@ -229,11 +229,7 @@ static HRESULT COMCAT_IsClassOfCategories(
if (res != ERROR_SUCCESS) return S_FALSE;
for (string = impl_strings; *string; string += CHARS_IN_GUID) {
HKEY catkey;
#ifdef __REACTOS__
res = open_classes_key(subkey, string, READ_CONTROL, &catkey);
#else
res = open_classes_key(subkey, string, 0, &catkey);
#endif
if (res != ERROR_SUCCESS) {
RegCloseKey(subkey);
return S_FALSE;

View file

@ -4967,8 +4967,8 @@ HRESULT WINAPI CoGetContextToken( ULONG_PTR *token )
context->IComThreadingInfo_iface.lpVtbl = &Context_Threading_Vtbl;
context->IContextCallback_iface.lpVtbl = &Context_Callback_Vtbl;
context->IObjContext_iface.lpVtbl = &Context_Object_Vtbl;
/* Context token does not take a reference, it's always zero until
interface is explicitely requested with CoGetObjectContext(). */
/* Context token does not take a reference, it's always zero until the
interface is explicitly requested with CoGetObjectContext(). */
context->refs = 0;
info->context_token = &context->IObjContext_iface;

View file

@ -117,8 +117,8 @@ struct DataCache
/*
* List all interface here
*/
IUnknown IUnknown_inner;
IDataObject IDataObject_iface;
IUnknown IUnknown_iface;
IPersistStorage IPersistStorage_iface;
IViewObject2 IViewObject2_iface;
IOleCache2 IOleCache2_iface;
@ -136,7 +136,7 @@ struct DataCache
/*
* IUnknown implementation of the outer object.
*/
IUnknown* outerUnknown;
IUnknown *outer_unk;
/*
* The user of this object can setup ONE advise sink
@ -174,7 +174,7 @@ static inline DataCache *impl_from_IDataObject( IDataObject *iface )
static inline DataCache *impl_from_IUnknown( IUnknown *iface )
{
return CONTAINING_RECORD(iface, DataCache, IUnknown_iface);
return CONTAINING_RECORD(iface, DataCache, IUnknown_inner);
}
static inline DataCache *impl_from_IPersistStorage( IPersistStorage *iface )
@ -956,7 +956,7 @@ static HRESULT WINAPI DataCache_IDataObject_QueryInterface(
{
DataCache *this = impl_from_IDataObject(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
return IUnknown_QueryInterface(this->outer_unk, riid, ppvObject);
}
/************************************************************************
@ -967,7 +967,7 @@ static ULONG WINAPI DataCache_IDataObject_AddRef(
{
DataCache *this = impl_from_IDataObject(iface);
return IUnknown_AddRef(this->outerUnknown);
return IUnknown_AddRef(this->outer_unk);
}
/************************************************************************
@ -978,7 +978,7 @@ static ULONG WINAPI DataCache_IDataObject_Release(
{
DataCache *this = impl_from_IDataObject(iface);
return IUnknown_Release(this->outerUnknown);
return IUnknown_Release(this->outer_unk);
}
/************************************************************************
@ -1136,7 +1136,7 @@ static HRESULT WINAPI DataCache_IPersistStorage_QueryInterface(
{
DataCache *this = impl_from_IPersistStorage(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
return IUnknown_QueryInterface(this->outer_unk, riid, ppvObject);
}
/************************************************************************
@ -1147,7 +1147,7 @@ static ULONG WINAPI DataCache_IPersistStorage_AddRef(
{
DataCache *this = impl_from_IPersistStorage(iface);
return IUnknown_AddRef(this->outerUnknown);
return IUnknown_AddRef(this->outer_unk);
}
/************************************************************************
@ -1158,7 +1158,7 @@ static ULONG WINAPI DataCache_IPersistStorage_Release(
{
DataCache *this = impl_from_IPersistStorage(iface);
return IUnknown_Release(this->outerUnknown);
return IUnknown_Release(this->outer_unk);
}
/************************************************************************
@ -1497,7 +1497,7 @@ static HRESULT WINAPI DataCache_IViewObject2_QueryInterface(
{
DataCache *this = impl_from_IViewObject2(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
return IUnknown_QueryInterface(this->outer_unk, riid, ppvObject);
}
/************************************************************************
@ -1508,7 +1508,7 @@ static ULONG WINAPI DataCache_IViewObject2_AddRef(
{
DataCache *this = impl_from_IViewObject2(iface);
return IUnknown_AddRef(this->outerUnknown);
return IUnknown_AddRef(this->outer_unk);
}
/************************************************************************
@ -1519,7 +1519,7 @@ static ULONG WINAPI DataCache_IViewObject2_Release(
{
DataCache *this = impl_from_IViewObject2(iface);
return IUnknown_Release(this->outerUnknown);
return IUnknown_Release(this->outer_unk);
}
/************************************************************************
@ -1921,7 +1921,7 @@ static HRESULT WINAPI DataCache_IOleCache2_QueryInterface(
{
DataCache *this = impl_from_IOleCache2(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
return IUnknown_QueryInterface(this->outer_unk, riid, ppvObject);
}
/************************************************************************
@ -1932,7 +1932,7 @@ static ULONG WINAPI DataCache_IOleCache2_AddRef(
{
DataCache *this = impl_from_IOleCache2(iface);
return IUnknown_AddRef(this->outerUnknown);
return IUnknown_AddRef(this->outer_unk);
}
/************************************************************************
@ -1943,7 +1943,7 @@ static ULONG WINAPI DataCache_IOleCache2_Release(
{
DataCache *this = impl_from_IOleCache2(iface);
return IUnknown_Release(this->outerUnknown);
return IUnknown_Release(this->outer_unk);
}
/*****************************************************************************
@ -2120,7 +2120,7 @@ static HRESULT WINAPI DataCache_IOleCacheControl_QueryInterface(
{
DataCache *this = impl_from_IOleCacheControl(iface);
return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject);
return IUnknown_QueryInterface(this->outer_unk, riid, ppvObject);
}
/************************************************************************
@ -2131,7 +2131,7 @@ static ULONG WINAPI DataCache_IOleCacheControl_AddRef(
{
DataCache *this = impl_from_IOleCacheControl(iface);
return IUnknown_AddRef(this->outerUnknown);
return IUnknown_AddRef(this->outer_unk);
}
/************************************************************************
@ -2142,7 +2142,7 @@ static ULONG WINAPI DataCache_IOleCacheControl_Release(
{
DataCache *this = impl_from_IOleCacheControl(iface);
return IUnknown_Release(this->outerUnknown);
return IUnknown_Release(this->outer_unk);
}
/************************************************************************
@ -2364,30 +2364,15 @@ static DataCache* DataCache_Construct(
* Initialize the virtual function table.
*/
newObject->IDataObject_iface.lpVtbl = &DataCache_IDataObject_VTable;
newObject->IUnknown_iface.lpVtbl = &DataCache_NDIUnknown_VTable;
newObject->IUnknown_inner.lpVtbl = &DataCache_NDIUnknown_VTable;
newObject->IPersistStorage_iface.lpVtbl = &DataCache_IPersistStorage_VTable;
newObject->IViewObject2_iface.lpVtbl = &DataCache_IViewObject2_VTable;
newObject->IOleCache2_iface.lpVtbl = &DataCache_IOleCache2_VTable;
newObject->IOleCacheControl_iface.lpVtbl = &DataCache_IOleCacheControl_VTable;
newObject->IAdviseSink_iface.lpVtbl = &DataCache_IAdviseSink_VTable;
/*
* Start with one reference count. The caller of this function
* must release the interface pointer when it is done.
*/
newObject->outer_unk = pUnkOuter ? pUnkOuter : &newObject->IUnknown_inner;
newObject->ref = 1;
/*
* Initialize the outer unknown
* We don't keep a reference on the outer unknown since, the way
* aggregation works, our lifetime is at least as large as its
* lifetime.
*/
if (pUnkOuter==NULL)
pUnkOuter = &newObject->IUnknown_iface;
newObject->outerUnknown = pUnkOuter;
/*
* Initialize the other members of the structure.
*/
@ -2461,16 +2446,8 @@ HRESULT WINAPI CreateDataCache(
if (newCache == 0)
return E_OUTOFMEMORY;
/*
* Make sure it supports the interface required by the caller.
*/
hr = IUnknown_QueryInterface(&newCache->IUnknown_iface, riid, ppvObj);
/*
* Release the reference obtained in the constructor. If
* the QueryInterface was unsuccessful, it will free the class.
*/
IUnknown_Release(&newCache->IUnknown_iface);
hr = IUnknown_QueryInterface(&newCache->IUnknown_inner, riid, ppvObj);
IUnknown_Release(&newCache->IUnknown_inner);
return hr;
}

View file

@ -23,16 +23,15 @@
WINE_DEFAULT_DEBUG_CHANNEL(ole);
typedef struct _FTMarshalImpl {
IUnknown IUnknown_iface;
LONG ref;
IUnknown IUnknown_inner;
IMarshal IMarshal_iface;
IUnknown *pUnkOuter;
IUnknown *outer_unk;
LONG ref;
} FTMarshalImpl;
static inline FTMarshalImpl *impl_from_IUnknown(IUnknown *iface)
{
return CONTAINING_RECORD(iface, FTMarshalImpl, IUnknown_iface);
return CONTAINING_RECORD(iface, FTMarshalImpl, IUnknown_inner);
}
static inline FTMarshalImpl *impl_from_IMarshal( IMarshal *iface )
@ -51,7 +50,7 @@ IiFTMUnknown_fnQueryInterface (IUnknown * iface, REFIID riid, LPVOID * ppv)
*ppv = NULL;
if (IsEqualIID (&IID_IUnknown, riid))
*ppv = &This->IUnknown_iface;
*ppv = &This->IUnknown_inner;
else if (IsEqualIID (&IID_IMarshal, riid))
*ppv = &This->IMarshal_iface;
else {
@ -97,7 +96,7 @@ FTMarshalImpl_QueryInterface (LPMARSHAL iface, REFIID riid, LPVOID * ppv)
FTMarshalImpl *This = impl_from_IMarshal(iface);
TRACE ("(%p)->(%s,%p)\n", This, debugstr_guid (riid), ppv);
return IUnknown_QueryInterface (This->pUnkOuter, riid, ppv);
return IUnknown_QueryInterface(This->outer_unk, riid, ppv);
}
static ULONG WINAPI
@ -107,7 +106,7 @@ FTMarshalImpl_AddRef (LPMARSHAL iface)
FTMarshalImpl *This = impl_from_IMarshal(iface);
TRACE ("\n");
return IUnknown_AddRef (This->pUnkOuter);
return IUnknown_AddRef(This->outer_unk);
}
static ULONG WINAPI
@ -117,7 +116,7 @@ FTMarshalImpl_Release (LPMARSHAL iface)
FTMarshalImpl *This = impl_from_IMarshal(iface);
TRACE ("\n");
return IUnknown_Release (This->pUnkOuter);
return IUnknown_Release(This->outer_unk);
}
static HRESULT WINAPI
@ -326,12 +325,12 @@ HRESULT WINAPI CoCreateFreeThreadedMarshaler (LPUNKNOWN punkOuter, LPUNKNOWN * p
if (!ftm)
return E_OUTOFMEMORY;
ftm->IUnknown_iface.lpVtbl = &iunkvt;
ftm->IUnknown_inner.lpVtbl = &iunkvt;
ftm->IMarshal_iface.lpVtbl = &ftmvtbl;
ftm->ref = 1;
ftm->pUnkOuter = punkOuter ? punkOuter : &ftm->IUnknown_iface;
ftm->outer_unk = punkOuter ? punkOuter : &ftm->IUnknown_inner;
*ppunkMarshal = &ftm->IUnknown_iface;
*ppunkMarshal = &ftm->IUnknown_inner;
return S_OK;
}

View file

@ -57,6 +57,11 @@ struct proxy_manager
void *dest_context_data; /* reserved context value (LOCK) */
};
static inline struct proxy_manager *impl_from_IMultiQI( IMultiQI *iface )
{
return CONTAINING_RECORD(iface, struct proxy_manager, IMultiQI_iface);
}
static inline struct proxy_manager *impl_from_IMarshal( IMarshal *iface )
{
return CONTAINING_RECORD(iface, struct proxy_manager, IMarshal_iface);
@ -215,16 +220,16 @@ static HRESULT WINAPI ClientIdentity_QueryInterface(IMultiQI * iface, REFIID rii
return hr;
}
static ULONG WINAPI ClientIdentity_AddRef(IMultiQI * iface)
static ULONG WINAPI ClientIdentity_AddRef(IMultiQI *iface)
{
struct proxy_manager * This = (struct proxy_manager *)iface;
struct proxy_manager *This = impl_from_IMultiQI(iface);
TRACE("%p - before %d\n", iface, This->refs);
return InterlockedIncrement(&This->refs);
}
static ULONG WINAPI ClientIdentity_Release(IMultiQI * iface)
static ULONG WINAPI ClientIdentity_Release(IMultiQI *iface)
{
struct proxy_manager * This = (struct proxy_manager *)iface;
struct proxy_manager *This = impl_from_IMultiQI(iface);
ULONG refs = InterlockedDecrement(&This->refs);
TRACE("%p - after %d\n", iface, refs);
if (!refs)
@ -234,7 +239,7 @@ static ULONG WINAPI ClientIdentity_Release(IMultiQI * iface)
static HRESULT WINAPI ClientIdentity_QueryMultipleInterfaces(IMultiQI *iface, ULONG cMQIs, MULTI_QI *pMQIs)
{
struct proxy_manager * This = (struct proxy_manager *)iface;
struct proxy_manager *This = impl_from_IMultiQI(iface);
REMQIRESULT *qiresults = NULL;
ULONG nonlocal_mqis = 0;
ULONG i;

View file

@ -1247,13 +1247,17 @@ HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid)
}
ret = RegQueryValueW(HKEY_CLASSES_ROOT, extension, NULL, &sizeProgId);
/* get the progId associated to the extension */
progId = CoTaskMemAlloc(sizeProgId);
ret = RegQueryValueW(HKEY_CLASSES_ROOT, extension, progId, &sizeProgId);
if (!ret)
/* return the clsid associated to the progId */
res = CLSIDFromProgID(progId,pclsid);
if (!ret) {
/* get the progId associated to the extension */
progId = CoTaskMemAlloc(sizeProgId);
ret = RegQueryValueW(HKEY_CLASSES_ROOT, extension, progId, &sizeProgId);
if (!ret)
/* return the clsid associated to the progId */
res = CLSIDFromProgID(progId, pclsid);
else
res = HRESULT_FROM_WIN32(ret);
CoTaskMemFree(progId);
}
else
res = HRESULT_FROM_WIN32(ret);
@ -1261,7 +1265,6 @@ HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid)
CoTaskMemFree(pathDec[i]);
CoTaskMemFree(pathDec);
CoTaskMemFree(progId);
return res != S_OK ? MK_E_INVALIDEXTENSION : res;
}
@ -1506,7 +1509,7 @@ static HRESULT WINAPI MonikerMarshalInner_QueryInterface(IUnknown *iface, REFIID
if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IMarshal, riid))
{
*ppv = &This->IMarshal_iface;
IUnknown_AddRef((IUnknown *)&This->IMarshal_iface);
IMarshal_AddRef(&This->IMarshal_iface);
return S_OK;
}
FIXME("No interface for %s\n", debugstr_guid(riid));

View file

@ -2689,8 +2689,7 @@ static void OLE_FreeClipDataArray(ULONG count, CLIPDATA * pClipDataArray)
{
ULONG i;
for (i = 0; i < count; i++)
if (pClipDataArray[i].pClipData)
CoTaskMemFree(pClipDataArray[i].pClipData);
CoTaskMemFree(pClipDataArray[i].pClipData);
}
/***********************************************************************

View file

@ -74,3 +74,12 @@ HRESULT WINAPI CoGetCallerTID(LPDWORD lpdwTID)
FIXME("stub!\n");
return E_NOTIMPL;
}
/***********************************************************************
* OleGetIconOfFile [OLE32.@]
*/
HGLOBAL WINAPI OleGetIconOfFile(LPOLESTR path, BOOL use_file_as_label)
{
FIXME("(%p, %d), stub!\n", path, use_file_as_label);
return NULL;
}

View file

@ -236,7 +236,7 @@
@ stdcall OleGetAutoConvert(ptr ptr)
@ stdcall OleGetClipboard(ptr)
@ stdcall OleGetIconOfClass(ptr ptr long)
@ stub OleGetIconOfFile
@ stdcall OleGetIconOfFile(ptr long)
@ stdcall OleInitialize(ptr)
@ stdcall OleInitializeWOW(long long)
@ stdcall OleIsCurrentClipboard(ptr)
@ -292,14 +292,14 @@
@ stdcall StgCreateDocfile(wstr long long ptr)
@ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr)
@ stdcall StgCreatePropSetStg(ptr long ptr)
# StgCreatePropStg
@ stdcall StgCreatePropStg(ptr ptr ptr long long ptr)
@ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr)
@ stub StgGetIFillLockBytesOnFile
@ stub StgGetIFillLockBytesOnILockBytes
@ stdcall StgIsStorageFile(wstr)
@ stdcall StgIsStorageILockBytes(ptr)
@ stub StgOpenAsyncDocfileOnIFillLockBytes
# StgOpenPropStg
@ stdcall StgOpenPropStg(ptr ptr long long ptr)
@ stdcall StgOpenStorage(wstr ptr long ptr long ptr)
@ stdcall StgOpenStorageEx(wstr long long long ptr ptr ptr ptr)
# StgOpenStorageOnHandle

View file

@ -2168,7 +2168,7 @@ static HRESULT WINAPI IPropertySetStorage_fnCreate(
IPropertyStorage** ppprstg)
{
StorageImpl *This = impl_from_IPropertySetStorage(ppstg);
WCHAR name[CCH_MAX_PROPSTG_NAME];
WCHAR name[CCH_MAX_PROPSTG_NAME + 1];
IStream *stm = NULL;
HRESULT r;
@ -2226,7 +2226,7 @@ static HRESULT WINAPI IPropertySetStorage_fnOpen(
{
StorageImpl *This = impl_from_IPropertySetStorage(ppstg);
IStream *stm = NULL;
WCHAR name[CCH_MAX_PROPSTG_NAME];
WCHAR name[CCH_MAX_PROPSTG_NAME + 1];
HRESULT r;
TRACE("%p %s %08x %p\n", This, debugstr_guid(rfmtid), grfMode, ppprstg);
@ -2270,7 +2270,7 @@ static HRESULT WINAPI IPropertySetStorage_fnDelete(
REFFMTID rfmtid)
{
StorageImpl *This = impl_from_IPropertySetStorage(ppstg);
WCHAR name[CCH_MAX_PROPSTG_NAME];
WCHAR name[CCH_MAX_PROPSTG_NAME + 1];
HRESULT r;
TRACE("%p %s\n", This, debugstr_guid(rfmtid));

View file

@ -142,7 +142,7 @@ reactos/dll/win32/ntprint # Synced to WineStaging-1.9.11
reactos/dll/win32/objsel # Synced to WineStaging-1.9.11
reactos/dll/win32/odbc32 # Synced to WineStaging-1.9.11. Depends on port of Linux ODBC.
reactos/dll/win32/odbccp32 # Synced to WineStaging-1.9.11
reactos/dll/win32/ole32 # Synced to WineStaging-1.9.11
reactos/dll/win32/ole32 # Synced to WineStaging-1.9.16
reactos/dll/win32/oleacc # Synced to WineStaging-1.9.11
reactos/dll/win32/oleaut32 # Synced to WineStaging-1.9.16
reactos/dll/win32/olecli32 # Synced to WineStaging-1.9.11