ReactOS  0.4.14-dev-358-gbef841c
defaulthandler.c File Reference
#include <assert.h>
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winerror.h"
#include "ole2.h"
#include "compobj_private.h"
#include "storage32.h"
#include "wine/debug.h"
Include dependency graph for defaulthandler.c:

Go to the source code of this file.

Classes

struct  DefaultHandler
 
struct  ole_stream_header_t
 
struct  HandlerCF
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct DefaultHandler DefaultHandler
 
typedef struct HandlerCF HandlerCF
 

Enumerations

enum  storage_state { storage_state_uninitialised, storage_state_initialised, storage_state_loaded }
 
enum  object_state { object_state_not_running, object_state_running, object_state_deferred_close }
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ole)
 
static DefaultHandlerimpl_from_IOleObject (IOleObject *iface)
 
static DefaultHandlerimpl_from_IUnknown (IUnknown *iface)
 
static DefaultHandlerimpl_from_IDataObject (IDataObject *iface)
 
static DefaultHandlerimpl_from_IRunnableObject (IRunnableObject *iface)
 
static DefaultHandlerimpl_from_IAdviseSink (IAdviseSink *iface)
 
static DefaultHandlerimpl_from_IPersistStorage (IPersistStorage *iface)
 
static void DefaultHandler_Destroy (DefaultHandler *This)
 
static BOOL object_is_running (DefaultHandler *This)
 
static void DefaultHandler_Stop (DefaultHandler *This)
 
static void start_object_call (DefaultHandler *This)
 
static void end_object_call (DefaultHandler *This)
 
static HRESULT WINAPI DefaultHandler_NDIUnknown_QueryInterface (IUnknown *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef (IUnknown *iface)
 
static ULONG WINAPI DefaultHandler_NDIUnknown_Release (IUnknown *iface)
 
static HRESULT WINAPI DefaultHandler_QueryInterface (IOleObject *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI DefaultHandler_AddRef (IOleObject *iface)
 
static ULONG WINAPI DefaultHandler_Release (IOleObject *iface)
 
static HRESULT WINAPI DefaultHandler_SetClientSite (IOleObject *iface, IOleClientSite *pClientSite)
 
static HRESULT WINAPI DefaultHandler_GetClientSite (IOleObject *iface, IOleClientSite **ppClientSite)
 
static HRESULT WINAPI DefaultHandler_SetHostNames (IOleObject *iface, LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
 
static void release_delegates (DefaultHandler *This)
 
static HRESULT WINAPI DefaultHandler_Close (IOleObject *iface, DWORD dwSaveOption)
 
static HRESULT WINAPI DefaultHandler_SetMoniker (IOleObject *iface, DWORD dwWhichMoniker, IMoniker *pmk)
 
static HRESULT WINAPI DefaultHandler_GetMoniker (IOleObject *iface, DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
 
static HRESULT WINAPI DefaultHandler_InitFromData (IOleObject *iface, IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved)
 
static HRESULT WINAPI DefaultHandler_GetClipboardData (IOleObject *iface, DWORD dwReserved, IDataObject **ppDataObject)
 
static HRESULT WINAPI DefaultHandler_DoVerb (IOleObject *iface, LONG iVerb, struct tagMSG *lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
 
static HRESULT WINAPI DefaultHandler_EnumVerbs (IOleObject *iface, IEnumOLEVERB **ppEnumOleVerb)
 
static HRESULT WINAPI DefaultHandler_Update (IOleObject *iface)
 
static HRESULT WINAPI DefaultHandler_IsUpToDate (IOleObject *iface)
 
static HRESULT WINAPI DefaultHandler_GetUserClassID (IOleObject *iface, CLSID *pClsid)
 
static HRESULT WINAPI DefaultHandler_GetUserType (IOleObject *iface, DWORD dwFormOfType, LPOLESTR *pszUserType)
 
static HRESULT WINAPI DefaultHandler_SetExtent (IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
 
static HRESULT WINAPI DefaultHandler_GetExtent (IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
 
static HRESULT WINAPI DefaultHandler_Advise (IOleObject *iface, IAdviseSink *pAdvSink, DWORD *pdwConnection)
 
static HRESULT WINAPI DefaultHandler_Unadvise (IOleObject *iface, DWORD dwConnection)
 
static HRESULT WINAPI DefaultHandler_EnumAdvise (IOleObject *iface, IEnumSTATDATA **ppenumAdvise)
 
static HRESULT WINAPI DefaultHandler_GetMiscStatus (IOleObject *iface, DWORD dwAspect, DWORD *pdwStatus)
 
static HRESULT WINAPI DefaultHandler_SetColorScheme (IOleObject *iface, struct tagLOGPALETTE *pLogpal)
 
static HRESULT WINAPI DefaultHandler_IDataObject_QueryInterface (IDataObject *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI DefaultHandler_IDataObject_AddRef (IDataObject *iface)
 
static ULONG WINAPI DefaultHandler_IDataObject_Release (IDataObject *iface)
 
static HRESULT WINAPI DefaultHandler_GetData (IDataObject *iface, LPFORMATETC pformatetcIn, STGMEDIUM *pmedium)
 
static HRESULT WINAPI DefaultHandler_GetDataHere (IDataObject *iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium)
 
static HRESULT WINAPI DefaultHandler_QueryGetData (IDataObject *iface, LPFORMATETC pformatetc)
 
static HRESULT WINAPI DefaultHandler_GetCanonicalFormatEtc (IDataObject *iface, LPFORMATETC pformatetcIn, LPFORMATETC pformatetcOut)
 
static HRESULT WINAPI DefaultHandler_SetData (IDataObject *iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
 
static HRESULT WINAPI DefaultHandler_EnumFormatEtc (IDataObject *iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc)
 
static HRESULT WINAPI DefaultHandler_DAdvise (IDataObject *iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
 
static HRESULT WINAPI DefaultHandler_DUnadvise (IDataObject *iface, DWORD dwConnection)
 
static HRESULT WINAPI DefaultHandler_EnumDAdvise (IDataObject *iface, IEnumSTATDATA **ppenumAdvise)
 
static HRESULT WINAPI DefaultHandler_IRunnableObject_QueryInterface (IRunnableObject *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef (IRunnableObject *iface)
 
static ULONG WINAPI DefaultHandler_IRunnableObject_Release (IRunnableObject *iface)
 
static HRESULT WINAPI DefaultHandler_GetRunningClass (IRunnableObject *iface, LPCLSID lpClsid)
 
static HRESULT WINAPI DefaultHandler_Run (IRunnableObject *iface, IBindCtx *pbc)
 
static BOOL WINAPI DefaultHandler_IsRunning (IRunnableObject *iface)
 
static HRESULT WINAPI DefaultHandler_LockRunning (IRunnableObject *iface, BOOL fLock, BOOL fLastUnlockCloses)
 
static HRESULT WINAPI DefaultHandler_SetContainedObject (IRunnableObject *iface, BOOL fContained)
 
static HRESULT WINAPI DefaultHandler_IAdviseSink_QueryInterface (IAdviseSink *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI DefaultHandler_IAdviseSink_AddRef (IAdviseSink *iface)
 
static ULONG WINAPI DefaultHandler_IAdviseSink_Release (IAdviseSink *iface)
 
static void WINAPI DefaultHandler_IAdviseSink_OnDataChange (IAdviseSink *iface, FORMATETC *pFormatetc, STGMEDIUM *pStgmed)
 
static void WINAPI DefaultHandler_IAdviseSink_OnViewChange (IAdviseSink *iface, DWORD dwAspect, LONG lindex)
 
static void WINAPI DefaultHandler_IAdviseSink_OnRename (IAdviseSink *iface, IMoniker *pmk)
 
static void WINAPI DefaultHandler_IAdviseSink_OnSave (IAdviseSink *iface)
 
static void WINAPI DefaultHandler_IAdviseSink_OnClose (IAdviseSink *iface)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_QueryInterface (IPersistStorage *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI DefaultHandler_IPersistStorage_AddRef (IPersistStorage *iface)
 
static ULONG WINAPI DefaultHandler_IPersistStorage_Release (IPersistStorage *iface)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_GetClassID (IPersistStorage *iface, CLSID *clsid)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_IsDirty (IPersistStorage *iface)
 
static HRESULT load_ole_stream (DefaultHandler *This, IStorage *storage)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_InitNew (IPersistStorage *iface, IStorage *pStg)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_Load (IPersistStorage *iface, IStorage *pStg)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_Save (IPersistStorage *iface, IStorage *pStgSave, BOOL fSameAsLoad)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_SaveCompleted (IPersistStorage *iface, IStorage *pStgNew)
 
static HRESULT WINAPI DefaultHandler_IPersistStorage_HandsOffStorage (IPersistStorage *iface)
 
static DefaultHandlerDefaultHandler_Construct (REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, IClassFactory *pCF)
 
HRESULT WINAPI OleCreateEmbeddingHelper (REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, IClassFactory *pCF, REFIID riid, LPVOID *ppvObj)
 
HRESULT WINAPI OleCreateDefaultHandler (REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
 
static HandlerCFimpl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI HandlerCF_QueryInterface (LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI HandlerCF_AddRef (LPCLASSFACTORY iface)
 
static ULONG WINAPI HandlerCF_Release (LPCLASSFACTORY iface)
 
static HRESULT WINAPI HandlerCF_CreateInstance (LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
 
static HRESULT WINAPI HandlerCF_LockServer (LPCLASSFACTORY iface, BOOL fLock)
 
HRESULT HandlerCF_Create (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 

Variables

static const WCHAR OleStream [] = {1,'O','l','e',0}
 
static const DWORD ole_stream_version = 0x02000001
 
static const IOleObjectVtbl DefaultHandler_IOleObject_VTable
 
static const IUnknownVtbl DefaultHandler_NDIUnknown_VTable
 
static const IDataObjectVtbl DefaultHandler_IDataObject_VTable
 
static const IRunnableObjectVtbl DefaultHandler_IRunnableObject_VTable
 
static const IAdviseSinkVtbl DefaultHandler_IAdviseSink_VTable
 
static const IPersistStorageVtbl DefaultHandler_IPersistStorage_VTable
 
static const IClassFactoryVtbl HandlerClassFactoryVtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 52 of file defaulthandler.c.

Typedef Documentation

◆ DefaultHandler

Definition at line 149 of file defaulthandler.c.

◆ HandlerCF

Enumeration Type Documentation

◆ object_state

Enumerator
object_state_not_running 
object_state_running 
object_state_deferred_close 

Definition at line 74 of file defaulthandler.c.

◆ storage_state

Enumerator
storage_state_uninitialised 
storage_state_initialised 
storage_state_loaded 

Definition at line 67 of file defaulthandler.c.

Function Documentation

◆ DefaultHandler_AddRef()

static ULONG WINAPI DefaultHandler_AddRef ( IOleObject iface)
static

Definition at line 329 of file defaulthandler.c.

331 {
333 
334  return IUnknown_AddRef(This->outerUnknown);
335 }
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_Advise()

static HRESULT WINAPI DefaultHandler_Advise ( IOleObject iface,
IAdviseSink pAdvSink,
DWORD pdwConnection 
)
static

Definition at line 914 of file defaulthandler.c.

918 {
919  HRESULT hres = S_OK;
921 
922  TRACE("(%p, %p, %p)\n", iface, pAdvSink, pdwConnection);
923 
924  /* Make sure we have an advise holder before we start. */
925  if (!This->oleAdviseHolder)
926  hres = CreateOleAdviseHolder(&This->oleAdviseHolder);
927 
928  if (SUCCEEDED(hres))
929  hres = IOleAdviseHolder_Advise(This->oleAdviseHolder,
930  pAdvSink,
931  pdwConnection);
932 
933  return hres;
934 }
HRESULT WINAPI CreateOleAdviseHolder(IOleAdviseHolder **ppOAHolder)
Definition: oleobj.c:875
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_Close()

static HRESULT WINAPI DefaultHandler_Close ( IOleObject iface,
DWORD  dwSaveOption 
)
static

Definition at line 515 of file defaulthandler.c.

518 {
520  HRESULT hr;
521 
522  TRACE("(%d)\n", dwSaveOption);
523 
524  if (!object_is_running(This))
525  return S_OK;
526 
528  hr = IOleObject_Close(This->pOleDelegate, dwSaveOption);
530 
532 
533  return hr;
534 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static void DefaultHandler_Stop(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_Construct()

static DefaultHandler* DefaultHandler_Construct ( REFCLSID  clsid,
LPUNKNOWN  pUnkOuter,
DWORD  flags,
IClassFactory pCF 
)
static

Definition at line 2060 of file defaulthandler.c.

2065 {
2067  HRESULT hr;
2068 
2069  This = HeapAlloc(GetProcessHeap(), 0, sizeof(DefaultHandler));
2070 
2071  if (!This)
2072  return This;
2073 
2074  This->IOleObject_iface.lpVtbl = &DefaultHandler_IOleObject_VTable;
2075  This->IUnknown_iface.lpVtbl = &DefaultHandler_NDIUnknown_VTable;
2076  This->IDataObject_iface.lpVtbl = &DefaultHandler_IDataObject_VTable;
2077  This->IRunnableObject_iface.lpVtbl = &DefaultHandler_IRunnableObject_VTable;
2078  This->IAdviseSink_iface.lpVtbl = &DefaultHandler_IAdviseSink_VTable;
2079  This->IPersistStorage_iface.lpVtbl = &DefaultHandler_IPersistStorage_VTable;
2080 
2081  This->inproc_server = (flags & EMBDHLP_INPROC_SERVER) != 0;
2082 
2083  /*
2084  * Start with one reference count. The caller of this function
2085  * must release the interface pointer when it is done.
2086  */
2087  This->ref = 1;
2088 
2089  /*
2090  * Initialize the outer unknown
2091  * We don't keep a reference on the outer unknown since, the way
2092  * aggregation works, our lifetime is at least as large as its
2093  * lifetime.
2094  */
2095  if (!pUnkOuter)
2096  pUnkOuter = &This->IUnknown_iface;
2097 
2098  This->outerUnknown = pUnkOuter;
2099 
2100  /*
2101  * Create a datacache object.
2102  * We aggregate with the datacache. Make sure we pass our outer
2103  * unknown as the datacache's outer unknown.
2104  */
2105  hr = CreateDataCache(This->outerUnknown,
2106  clsid,
2107  &IID_IUnknown,
2108  (void**)&This->dataCache);
2109  if(SUCCEEDED(hr))
2110  {
2111  hr = IUnknown_QueryInterface(This->dataCache, &IID_IPersistStorage, (void**)&This->dataCache_PersistStg);
2112  /* keeping a reference to This->dataCache_PersistStg causes us to keep a
2113  * reference on the outer object */
2114  if (SUCCEEDED(hr))
2115  IUnknown_Release(This->outerUnknown);
2116  else
2117  IUnknown_Release(This->dataCache);
2118  }
2119  if(FAILED(hr))
2120  {
2121  ERR("Unexpected error creating data cache\n");
2122  HeapFree(GetProcessHeap(), 0, This);
2123  return NULL;
2124  }
2125 
2126  This->clsid = *clsid;
2127  This->clientSite = NULL;
2128  This->oleAdviseHolder = NULL;
2129  This->dataAdviseHolder = NULL;
2130  This->containerApp = NULL;
2131  This->containerObj = NULL;
2132  This->pOleDelegate = NULL;
2133  This->pPSDelegate = NULL;
2134  This->pDataDelegate = NULL;
2135  This->object_state = object_state_not_running;
2136  This->in_call = 0;
2137 
2138  This->dwAdvConn = 0;
2139  This->storage = NULL;
2140  This->storage_state = storage_state_uninitialised;
2141 
2142  if (This->inproc_server && !(flags & EMBDHLP_DELAYCREATE))
2143  {
2144  HRESULT hr;
2145  This->pCFObject = NULL;
2146  if (pCF)
2147  hr = IClassFactory_CreateInstance(pCF, NULL, &IID_IOleObject, (void **)&This->pOleDelegate);
2148  else
2149  hr = CoCreateInstance(&This->clsid, NULL, CLSCTX_INPROC_SERVER,
2150  &IID_IOleObject, (void **)&This->pOleDelegate);
2151  if (SUCCEEDED(hr))
2152  hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IPersistStorage, (void **)&This->pPSDelegate);
2153  if (SUCCEEDED(hr))
2154  hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject, (void **)&This->pDataDelegate);
2155  if (SUCCEEDED(hr))
2156  This->object_state = object_state_running;
2157  if (FAILED(hr))
2158  WARN("object creation failed with error %08x\n", hr);
2159  }
2160  else
2161  {
2162  This->pCFObject = pCF;
2163  if (pCF) IClassFactory_AddRef(pCF);
2164  }
2165 
2166  return This;
2167 }
HRESULT hr
Definition: shlfolder.c:183
static const IRunnableObjectVtbl DefaultHandler_IRunnableObject_VTable
static const IOleObjectVtbl DefaultHandler_IOleObject_VTable
#define WARN(fmt,...)
Definition: debug.h:111
#define EMBDHLP_DELAYCREATE
Definition: ole2.h:50
const GUID IID_IDataObject
const GUID IID_IPersistStorage
smooth NULL
Definition: ftsmooth.c:416
const GUID IID_IOleObject
#define EMBDHLP_INPROC_SERVER
Definition: ole2.h:48
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
static const IPersistStorageVtbl DefaultHandler_IPersistStorage_VTable
GLbitfield flags
Definition: glext.h:7161
REFCLSID clsid
Definition: msctf.c:82
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID riid, LPVOID *ppvObj)
Definition: datacache.c:3035
#define ERR(fmt,...)
Definition: debug.h:109
static const IUnknownVtbl DefaultHandler_NDIUnknown_VTable
static const IAdviseSinkVtbl DefaultHandler_IAdviseSink_VTable
#define HeapFree(x, y, z)
Definition: compat.h:402
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static const IDataObjectVtbl DefaultHandler_IDataObject_VTable

Referenced by OleCreateEmbeddingHelper().

◆ DefaultHandler_DAdvise()

static HRESULT WINAPI DefaultHandler_DAdvise ( IDataObject iface,
FORMATETC *  pformatetc,
DWORD  advf,
IAdviseSink pAdvSink,
DWORD pdwConnection 
)
static

Definition at line 1294 of file defaulthandler.c.

1300 {
1301  HRESULT hres = S_OK;
1303 
1304  TRACE("(%p, %p, %d, %p, %p)\n",
1305  iface, pformatetc, advf, pAdvSink, pdwConnection);
1306 
1307  /* Make sure we have a data advise holder before we start. */
1308  if (!This->dataAdviseHolder)
1309  {
1310  hres = CreateDataAdviseHolder(&This->dataAdviseHolder);
1311  if (SUCCEEDED(hres) && object_is_running( This ))
1312  {
1314  DataAdviseHolder_OnConnect(This->dataAdviseHolder, This->pDataDelegate);
1315  end_object_call( This );
1316  }
1317  }
1318 
1319  if (SUCCEEDED(hres))
1320  hres = IDataAdviseHolder_Advise(This->dataAdviseHolder,
1321  iface,
1322  pformatetc,
1323  advf,
1324  pAdvSink,
1325  pdwConnection);
1326 
1327  return hres;
1328 }
static void end_object_call(DefaultHandler *This)
HRESULT WINAPI CreateDataAdviseHolder(IDataAdviseHolder **ppDAHolder)
Definition: oleobj.c:893
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
HRESULT DataAdviseHolder_OnConnect(IDataAdviseHolder *iface, IDataObject *pDelegate) DECLSPEC_HIDDEN
Definition: oleobj.c:806
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_Destroy()

static void DefaultHandler_Destroy ( DefaultHandler This)
static

Definition at line 2169 of file defaulthandler.c.

2171 {
2172  TRACE("(%p)\n", This);
2173 
2174  /* AddRef/Release may be called on this object during destruction.
2175  * Prevent the object being destroyed recursively by artificially raising
2176  * the reference count. */
2177  This->ref = 10000;
2178 
2179  /* release delegates */
2181 
2182  HeapFree( GetProcessHeap(), 0, This->containerApp );
2183  This->containerApp = NULL;
2184  HeapFree( GetProcessHeap(), 0, This->containerObj );
2185  This->containerObj = NULL;
2186 
2187  if (This->dataCache)
2188  {
2189  /* to balance out the release of dataCache_PersistStg which will result
2190  * in a reference being released from the outer unknown */
2191  IUnknown_AddRef(This->outerUnknown);
2192  IPersistStorage_Release(This->dataCache_PersistStg);
2193  IUnknown_Release(This->dataCache);
2194  This->dataCache_PersistStg = NULL;
2195  This->dataCache = NULL;
2196  }
2197 
2198  if (This->clientSite)
2199  {
2200  IOleClientSite_Release(This->clientSite);
2201  This->clientSite = NULL;
2202  }
2203 
2204  if (This->oleAdviseHolder)
2205  {
2206  IOleAdviseHolder_Release(This->oleAdviseHolder);
2207  This->oleAdviseHolder = NULL;
2208  }
2209 
2210  if (This->dataAdviseHolder)
2211  {
2212  IDataAdviseHolder_Release(This->dataAdviseHolder);
2213  This->dataAdviseHolder = NULL;
2214  }
2215 
2216  if (This->storage)
2217  {
2218  IStorage_Release(This->storage);
2219  This->storage = NULL;
2220  }
2221 
2222  if (This->pCFObject)
2223  {
2224  IClassFactory_Release(This->pCFObject);
2225  This->pCFObject = NULL;
2226  }
2227 
2228  HeapFree(GetProcessHeap(), 0, This);
2229 }
smooth NULL
Definition: ftsmooth.c:416
static void DefaultHandler_Stop(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by DefaultHandler_NDIUnknown_Release().

◆ DefaultHandler_DoVerb()

static HRESULT WINAPI DefaultHandler_DoVerb ( IOleObject iface,
LONG  iVerb,
struct tagMSG lpmsg,
IOleClientSite pActiveSite,
LONG  lindex,
HWND  hwndParent,
LPCRECT  lprcPosRect 
)
static

Definition at line 663 of file defaulthandler.c.

671 {
673  IRunnableObject *pRunnableObj = &This->IRunnableObject_iface;
674  HRESULT hr;
675 
676  TRACE("(%d, %p, %p, %d, %p, %s)\n", iVerb, lpmsg, pActiveSite, lindex, hwndParent, wine_dbgstr_rect(lprcPosRect));
677 
678  hr = IRunnableObject_Run(pRunnableObj, NULL);
679  if (FAILED(hr)) return hr;
680 
682  hr = IOleObject_DoVerb(This->pOleDelegate, iVerb, lpmsg, pActiveSite,
683  lindex, hwndParent, lprcPosRect);
685 
686  return hr;
687 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
smooth NULL
Definition: ftsmooth.c:416
static HWND hwndParent
Definition: cryptui.c:300
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
const char * wine_dbgstr_rect(const RECT *rect)
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_DUnadvise()

static HRESULT WINAPI DefaultHandler_DUnadvise ( IDataObject iface,
DWORD  dwConnection 
)
static

Definition at line 1338 of file defaulthandler.c.

1341 {
1343 
1344  TRACE("(%p, %d)\n", iface, dwConnection);
1345 
1346  /*
1347  * If we don't have a data advise holder yet, it means that
1348  * we don't have any connections..
1349  */
1350  if (!This->dataAdviseHolder)
1351  return OLE_E_NOCONNECTION;
1352 
1353  return IDataAdviseHolder_Unadvise(This->dataAdviseHolder,
1354  dwConnection);
1355 }
#define OLE_E_NOCONNECTION
Definition: winerror.h:2618
#define TRACE(s)
Definition: solgame.cpp:4
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)

◆ DefaultHandler_EnumAdvise()

static HRESULT WINAPI DefaultHandler_EnumAdvise ( IOleObject iface,
IEnumSTATDATA **  ppenumAdvise 
)
static

Definition at line 971 of file defaulthandler.c.

974 {
976 
977  TRACE("(%p, %p)\n", iface, ppenumAdvise);
978 
979  if (!ppenumAdvise)
980  return E_POINTER;
981 
982  *ppenumAdvise = NULL;
983 
984  if (!This->oleAdviseHolder)
985  return S_OK;
986 
987  return IOleAdviseHolder_EnumAdvise(This->oleAdviseHolder, ppenumAdvise);
988 }
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_EnumDAdvise()

static HRESULT WINAPI DefaultHandler_EnumDAdvise ( IDataObject iface,
IEnumSTATDATA **  ppenumAdvise 
)
static

Definition at line 1365 of file defaulthandler.c.

1368 {
1370 
1371  TRACE("(%p, %p)\n", iface, ppenumAdvise);
1372 
1373  if (!ppenumAdvise)
1374  return E_POINTER;
1375 
1376  *ppenumAdvise = NULL;
1377 
1378  /* If we have a data advise holder object, delegate. */
1379  if (This->dataAdviseHolder)
1380  return IDataAdviseHolder_EnumAdvise(This->dataAdviseHolder,
1381  ppenumAdvise);
1382 
1383  return S_OK;
1384 }
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365

◆ DefaultHandler_EnumFormatEtc()

static HRESULT WINAPI DefaultHandler_EnumFormatEtc ( IDataObject iface,
DWORD  dwDirection,
IEnumFORMATETC **  ppenumFormatEtc 
)
static

Definition at line 1274 of file defaulthandler.c.

1278 {
1280 
1281  TRACE("(%p, %x, %p)\n", iface, dwDirection, ppenumFormatEtc);
1282 
1283  return OleRegEnumFormatEtc(&This->clsid, dwDirection, ppenumFormatEtc);
1284 }
HRESULT WINAPI DECLSPEC_HOTPATCH OleRegEnumFormatEtc(REFCLSID clsid, DWORD dwDirection, LPENUMFORMATETC *ppenumFormatetc)
Definition: ole2stubs.c:75
#define TRACE(s)
Definition: solgame.cpp:4
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)

◆ DefaultHandler_EnumVerbs()

static HRESULT WINAPI DefaultHandler_EnumVerbs ( IOleObject iface,
IEnumOLEVERB **  ppEnumOleVerb 
)
static

Definition at line 697 of file defaulthandler.c.

700 {
703 
704  TRACE("(%p, %p)\n", iface, ppEnumOleVerb);
705 
706  if (object_is_running(This))
707  {
709  hr = IOleObject_EnumVerbs(This->pOleDelegate, ppEnumOleVerb);
711  }
712 
713  if (hr == OLE_S_USEREG)
714  return OleRegEnumVerbs(&This->clsid, ppEnumOleVerb);
715  else
716  return hr;
717 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define OLE_S_USEREG
Definition: winerror.h:2608
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
HRESULT WINAPI OleRegEnumVerbs(REFCLSID clsid, LPENUMOLEVERB *ppenum)
Definition: ole2.c:1125

◆ DefaultHandler_GetCanonicalFormatEtc()

static HRESULT WINAPI DefaultHandler_GetCanonicalFormatEtc ( IDataObject iface,
LPFORMATETC  pformatetcIn,
LPFORMATETC  pformatetcOut 
)
static

Definition at line 1209 of file defaulthandler.c.

1213 {
1215  HRESULT hr;
1216 
1217  TRACE("(%p, %p, %p)\n", iface, pformatetcIn, pformatetcOut);
1218 
1219  if (!object_is_running( This ))
1220  return OLE_E_NOTRUNNING;
1221 
1223  hr = IDataObject_GetCanonicalFormatEtc(This->pDataDelegate, pformatetcIn, pformatetcOut);
1224  end_object_call( This );
1225 
1226  return hr;
1227 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)
static void start_object_call(DefaultHandler *This)
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_GetClientSite()

static HRESULT WINAPI DefaultHandler_GetClientSite ( IOleObject iface,
IOleClientSite **  ppClientSite 
)
static

Definition at line 397 of file defaulthandler.c.

400 {
402 
403  if (!ppClientSite)
404  return E_POINTER;
405 
406  *ppClientSite = This->clientSite;
407 
408  if (This->clientSite)
409  IOleClientSite_AddRef(This->clientSite);
410 
411  return S_OK;
412 }
#define S_OK
Definition: intsafe.h:59
#define E_POINTER
Definition: winerror.h:2365
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_GetClipboardData()

static HRESULT WINAPI DefaultHandler_GetClipboardData ( IOleObject iface,
DWORD  dwReserved,
IDataObject **  ppDataObject 
)
static

Definition at line 641 of file defaulthandler.c.

645 {
648 
649  TRACE("(%p, %d, %p)\n",
650  iface, dwReserved, ppDataObject);
651 
652  if (object_is_running(This))
653  {
655  hr = IOleObject_GetClipboardData(This->pOleDelegate, dwReserved,
656  ppDataObject);
658  }
659 
660  return hr;
661 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_GetData()

static HRESULT WINAPI DefaultHandler_GetData ( IDataObject iface,
LPFORMATETC  pformatetcIn,
STGMEDIUM *  pmedium 
)
static

Definition at line 1103 of file defaulthandler.c.

1107 {
1108  IDataObject* cacheDataObject = NULL;
1109  HRESULT hres;
1110 
1112 
1113  TRACE("(%p, %p, %p)\n", iface, pformatetcIn, pmedium);
1114 
1115  hres = IUnknown_QueryInterface(This->dataCache,
1116  &IID_IDataObject,
1117  (void**)&cacheDataObject);
1118 
1119  if (FAILED(hres))
1120  return E_UNEXPECTED;
1121 
1122  hres = IDataObject_GetData(cacheDataObject,
1123  pformatetcIn,
1124  pmedium);
1125 
1126  IDataObject_Release(cacheDataObject);
1127 
1128  if (hres == S_OK) return hres;
1129 
1130  if (object_is_running( This ))
1131  {
1133  hres = IDataObject_GetData(This->pDataDelegate, pformatetcIn, pmedium);
1135  if (hres == S_OK) return hres;
1136  }
1137 
1138  /* Query running state again, as the object may have closed during _GetData call */
1139  if (!object_is_running( This ))
1141 
1142  return hres;
1143 }
static void end_object_call(DefaultHandler *This)
const GUID IID_IDataObject
smooth NULL
Definition: ftsmooth.c:416
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
#define E_UNEXPECTED
Definition: winerror.h:2456
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_GetDataHere()

static HRESULT WINAPI DefaultHandler_GetDataHere ( IDataObject iface,
LPFORMATETC  pformatetc,
STGMEDIUM *  pmedium 
)
static

Definition at line 1145 of file defaulthandler.c.

1149 {
1150  FIXME(": Stub\n");
1151  return E_NOTIMPL;
1152 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ DefaultHandler_GetExtent()

static HRESULT WINAPI DefaultHandler_GetExtent ( IOleObject iface,
DWORD  dwDrawAspect,
SIZEL psizel 
)
static

Definition at line 860 of file defaulthandler.c.

864 {
865  DVTARGETDEVICE* targetDevice;
866  IViewObject2* cacheView = NULL;
867  HRESULT hres;
868 
870 
871  TRACE("(%p, %x, %p)\n", iface, dwDrawAspect, psizel);
872 
873  if (object_is_running(This))
874  {
876  hres = IOleObject_GetExtent(This->pOleDelegate, dwDrawAspect, psizel);
878  return hres;
879  }
880 
881  hres = IUnknown_QueryInterface(This->dataCache, &IID_IViewObject2, (void**)&cacheView);
882  if (FAILED(hres))
883  return E_UNEXPECTED;
884 
885  /*
886  * Prepare the call to the cache's GetExtent method.
887  *
888  * Here we would build a valid DVTARGETDEVICE structure
889  * but, since we are calling into the data cache, we
890  * know its implementation and we'll skip this
891  * extra work until later.
892  */
893  targetDevice = NULL;
894 
895  hres = IViewObject2_GetExtent(cacheView,
896  dwDrawAspect,
897  -1,
898  targetDevice,
899  psizel);
900 
901  IViewObject2_Release(cacheView);
902 
903  return hres;
904 }
static void end_object_call(DefaultHandler *This)
smooth NULL
Definition: ftsmooth.c:416
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
const GUID IID_IViewObject2
#define E_UNEXPECTED
Definition: winerror.h:2456
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_GetMiscStatus()

static HRESULT WINAPI DefaultHandler_GetMiscStatus ( IOleObject iface,
DWORD  dwAspect,
DWORD pdwStatus 
)
static

Definition at line 998 of file defaulthandler.c.

1002 {
1003  HRESULT hres;
1005 
1006  TRACE("(%p, %x, %p)\n", iface, dwAspect, pdwStatus);
1007 
1008  if (object_is_running(This))
1009  {
1011  hres = IOleObject_GetMiscStatus(This->pOleDelegate, dwAspect, pdwStatus);
1012  end_object_call( This );
1013  return hres;
1014  }
1015 
1016  hres = OleRegGetMiscStatus(&This->clsid, dwAspect, pdwStatus);
1017 
1018  if (FAILED(hres))
1019  *pdwStatus = 0;
1020 
1021  return hres;
1022 }
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI OleRegGetMiscStatus(REFCLSID clsid, DWORD dwAspect, DWORD *pdwStatus)
Definition: ole2.c:864
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_GetMoniker()

static HRESULT WINAPI DefaultHandler_GetMoniker ( IOleObject iface,
DWORD  dwAssign,
DWORD  dwWhichMoniker,
IMoniker **  ppmk 
)
static

Definition at line 570 of file defaulthandler.c.

575 {
577  HRESULT hr;
578 
579  TRACE("(%p, %d, %d, %p)\n",
580  iface, dwAssign, dwWhichMoniker, ppmk);
581 
582  if (object_is_running(This))
583  {
585  hr = IOleObject_GetMoniker(This->pOleDelegate, dwAssign, dwWhichMoniker,
586  ppmk);
588  return hr;
589  }
590 
591  /* FIXME: dwWhichMoniker == OLEWHICHMK_CONTAINER only? */
592  if (This->clientSite)
593  {
594  return IOleClientSite_GetMoniker(This->clientSite,
595  dwAssign,
596  dwWhichMoniker,
597  ppmk);
598 
599  }
600 
601  return E_FAIL;
602 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
#define E_FAIL
Definition: ddrawi.h:102
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_GetRunningClass()

static HRESULT WINAPI DefaultHandler_GetRunningClass ( IRunnableObject iface,
LPCLSID  lpClsid 
)
static

Definition at line 1437 of file defaulthandler.c.

1440 {
1441  FIXME("()\n");
1442  return S_OK;
1443 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ DefaultHandler_GetUserClassID()

static HRESULT WINAPI DefaultHandler_GetUserClassID ( IOleObject iface,
CLSID pClsid 
)
static

Definition at line 771 of file defaulthandler.c.

774 {
776  HRESULT hr;
777 
778  TRACE("(%p, %p)\n", iface, pClsid);
779 
780  if (object_is_running(This))
781  {
783  hr = IOleObject_GetUserClassID(This->pOleDelegate, pClsid);
785  return hr;
786  }
787 
788  if (!pClsid)
789  return E_POINTER;
790 
791  *pClsid = This->clsid;
792 
793  return S_OK;
794 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
#define E_POINTER
Definition: winerror.h:2365
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_GetUserType()

static HRESULT WINAPI DefaultHandler_GetUserType ( IOleObject iface,
DWORD  dwFormOfType,
LPOLESTR pszUserType 
)
static

Definition at line 804 of file defaulthandler.c.

808 {
810  HRESULT hr;
811 
812  TRACE("(%p, %d, %p)\n", iface, dwFormOfType, pszUserType);
813  if (object_is_running(This))
814  {
816  hr = IOleObject_GetUserType(This->pOleDelegate, dwFormOfType, pszUserType);
818  return hr;
819  }
820 
821  return OleRegGetUserType(&This->clsid, dwFormOfType, pszUserType);
822 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
HRESULT WINAPI OleRegGetUserType(REFCLSID clsid, DWORD form, LPOLESTR *usertype)
Definition: ole2.c:678
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_IAdviseSink_AddRef()

static ULONG WINAPI DefaultHandler_IAdviseSink_AddRef ( IAdviseSink iface)
static

Definition at line 1583 of file defaulthandler.c.

1585 {
1587 
1588  return IUnknown_AddRef(&This->IUnknown_iface);
1589 }
static DefaultHandler * impl_from_IAdviseSink(IAdviseSink *iface)

◆ DefaultHandler_IAdviseSink_OnClose()

static void WINAPI DefaultHandler_IAdviseSink_OnClose ( IAdviseSink iface)
static

Definition at line 1638 of file defaulthandler.c.

1640 {
1642 
1643  TRACE("()\n");
1644 
1645  if (This->oleAdviseHolder)
1646  IOleAdviseHolder_SendOnClose(This->oleAdviseHolder);
1647 
1648  if(!This->in_call)
1650  else
1651  {
1652  TRACE("OnClose during call. Deferring shutdown\n");
1653  This->object_state = object_state_deferred_close;
1654  }
1655 }
static DefaultHandler * impl_from_IAdviseSink(IAdviseSink *iface)
static void DefaultHandler_Stop(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4

◆ DefaultHandler_IAdviseSink_OnDataChange()

static void WINAPI DefaultHandler_IAdviseSink_OnDataChange ( IAdviseSink iface,
FORMATETC *  pFormatetc,
STGMEDIUM *  pStgmed 
)
static

Definition at line 1599 of file defaulthandler.c.

1603 {
1604  FIXME(": stub\n");
1605 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DefaultHandler_IAdviseSink_OnRename()

static void WINAPI DefaultHandler_IAdviseSink_OnRename ( IAdviseSink iface,
IMoniker pmk 
)
static

Definition at line 1615 of file defaulthandler.c.

1618 {
1620 
1621  TRACE("(%p)\n", pmk);
1622 
1623  if (This->oleAdviseHolder)
1624  IOleAdviseHolder_SendOnRename(This->oleAdviseHolder, pmk);
1625 }
static DefaultHandler * impl_from_IAdviseSink(IAdviseSink *iface)
#define TRACE(s)
Definition: solgame.cpp:4

◆ DefaultHandler_IAdviseSink_OnSave()

static void WINAPI DefaultHandler_IAdviseSink_OnSave ( IAdviseSink iface)
static

Definition at line 1627 of file defaulthandler.c.

1629 {
1631 
1632  TRACE("()\n");
1633 
1634  if (This->oleAdviseHolder)
1635  IOleAdviseHolder_SendOnSave(This->oleAdviseHolder);
1636 }
static DefaultHandler * impl_from_IAdviseSink(IAdviseSink *iface)
#define TRACE(s)
Definition: solgame.cpp:4

◆ DefaultHandler_IAdviseSink_OnViewChange()

static void WINAPI DefaultHandler_IAdviseSink_OnViewChange ( IAdviseSink iface,
DWORD  dwAspect,
LONG  lindex 
)
static

Definition at line 1607 of file defaulthandler.c.

1611 {
1612  FIXME(": stub\n");
1613 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DefaultHandler_IAdviseSink_QueryInterface()

static HRESULT WINAPI DefaultHandler_IAdviseSink_QueryInterface ( IAdviseSink iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1567 of file defaulthandler.c.

1571 {
1572  if (IsEqualIID(riid, &IID_IUnknown) ||
1574  {
1575  *ppvObject = iface;
1576  IAdviseSink_AddRef(iface);
1577  return S_OK;
1578  }
1579 
1580  return E_NOINTERFACE;
1581 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
const GUID IID_IAdviseSink
const GUID IID_IUnknown
REFIID LPVOID * ppvObject
Definition: precomp.h:44
#define S_OK
Definition: intsafe.h:59
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ DefaultHandler_IAdviseSink_Release()

static ULONG WINAPI DefaultHandler_IAdviseSink_Release ( IAdviseSink iface)
static

Definition at line 1591 of file defaulthandler.c.

1593 {
1595 
1596  return IUnknown_Release(&This->IUnknown_iface);
1597 }
static DefaultHandler * impl_from_IAdviseSink(IAdviseSink *iface)

◆ DefaultHandler_IDataObject_AddRef()

static ULONG WINAPI DefaultHandler_IDataObject_AddRef ( IDataObject iface)
static

Definition at line 1075 of file defaulthandler.c.

1077 {
1079 
1080  return IUnknown_AddRef(This->outerUnknown);
1081 }
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)

◆ DefaultHandler_IDataObject_QueryInterface()

static HRESULT WINAPI DefaultHandler_IDataObject_QueryInterface ( IDataObject iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1060 of file defaulthandler.c.

1064 {
1066 
1067  return IUnknown_QueryInterface(This->outerUnknown, riid, ppvObject);
1068 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppvObject
Definition: precomp.h:44
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)

◆ DefaultHandler_IDataObject_Release()

static ULONG WINAPI DefaultHandler_IDataObject_Release ( IDataObject iface)
static

Definition at line 1088 of file defaulthandler.c.

1090 {
1092 
1093  return IUnknown_Release(This->outerUnknown);
1094 }
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)

◆ DefaultHandler_InitFromData()

static HRESULT WINAPI DefaultHandler_InitFromData ( IOleObject iface,
IDataObject pDataObject,
BOOL  fCreation,
DWORD  dwReserved 
)
static

Definition at line 611 of file defaulthandler.c.

616 {
619 
620  TRACE("(%p, %p, %d, %d)\n",
621  iface, pDataObject, fCreation, dwReserved);
622 
623  if (object_is_running(This))
624  {
626  hr = IOleObject_InitFromData(This->pOleDelegate, pDataObject, fCreation,
627  dwReserved);
629  }
630 
631  return hr;
632 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_IPersistStorage_AddRef()

static ULONG WINAPI DefaultHandler_IPersistStorage_AddRef ( IPersistStorage iface)
static

Definition at line 1675 of file defaulthandler.c.

1677 {
1679 
1680  return IUnknown_AddRef(This->outerUnknown);
1681 }
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)

◆ DefaultHandler_IPersistStorage_GetClassID()

static HRESULT WINAPI DefaultHandler_IPersistStorage_GetClassID ( IPersistStorage iface,
CLSID clsid 
)
static

Definition at line 1699 of file defaulthandler.c.

1702 {
1704  HRESULT hr;
1705 
1706  TRACE("(%p)->(%p)\n", iface, clsid);
1707 
1708  if(object_is_running(This))
1709  {
1711  hr = IPersistStorage_GetClassID(This->pPSDelegate, clsid);
1712  end_object_call( This );
1713  }
1714  else
1715  hr = IPersistStorage_GetClassID(This->dataCache_PersistStg, clsid);
1716 
1717  return hr;
1718 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
REFCLSID clsid
Definition: msctf.c:82
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)

◆ DefaultHandler_IPersistStorage_HandsOffStorage()

static HRESULT WINAPI DefaultHandler_IPersistStorage_HandsOffStorage ( IPersistStorage iface)
static

Definition at line 1940 of file defaulthandler.c.

1942 {
1944  HRESULT hr;
1945 
1946  TRACE("(%p)\n", iface);
1947 
1948  hr = IPersistStorage_HandsOffStorage(This->dataCache_PersistStg);
1949 
1951  {
1953  hr = IPersistStorage_HandsOffStorage(This->pPSDelegate);
1954  end_object_call( This );
1955  }
1956 
1957  if(This->storage) IStorage_Release(This->storage);
1958  This->storage = NULL;
1959  This->storage_state = storage_state_uninitialised;
1960 
1961  return hr;
1962 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
smooth NULL
Definition: ftsmooth.c:416
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_IPersistStorage_InitNew()

static HRESULT WINAPI DefaultHandler_IPersistStorage_InitNew ( IPersistStorage iface,
IStorage pStg 
)
static

Definition at line 1810 of file defaulthandler.c.

1813 {
1815  HRESULT hr;
1816 
1817  TRACE("(%p)->(%p)\n", iface, pStg);
1818  hr = STORAGE_CreateOleStream(pStg, 0);
1819  if (hr != S_OK) return hr;
1820 
1821  hr = IPersistStorage_InitNew(This->dataCache_PersistStg, pStg);
1822 
1824  {
1826  hr = IPersistStorage_InitNew(This->pPSDelegate, pStg);
1827  end_object_call( This );
1828  }
1829 
1830  if(SUCCEEDED(hr))
1831  {
1832  IStorage_AddRef(pStg);
1833  This->storage = pStg;
1834  This->storage_state = storage_state_initialised;
1835  }
1836 
1837  return hr;
1838 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
HRESULT STORAGE_CreateOleStream(IStorage *storage, DWORD flags)
Definition: storage32.c:9207
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_IPersistStorage_IsDirty()

static HRESULT WINAPI DefaultHandler_IPersistStorage_IsDirty ( IPersistStorage iface)
static

Definition at line 1724 of file defaulthandler.c.

1726 {
1728  HRESULT hr;
1729 
1730  TRACE("(%p)\n", iface);
1731 
1732  hr = IPersistStorage_IsDirty(This->dataCache_PersistStg);
1733  if(hr != S_FALSE) return hr;
1734 
1735  if(object_is_running(This))
1736  {
1738  hr = IPersistStorage_IsDirty(This->pPSDelegate);
1739  end_object_call( This );
1740  }
1741 
1742  return hr;
1743 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
#define S_FALSE
Definition: winerror.h:2357
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)

◆ DefaultHandler_IPersistStorage_Load()

static HRESULT WINAPI DefaultHandler_IPersistStorage_Load ( IPersistStorage iface,
IStorage pStg 
)
static

Definition at line 1845 of file defaulthandler.c.

1848 {
1850  HRESULT hr;
1851 
1852  TRACE("(%p)->(%p)\n", iface, pStg);
1853 
1854  hr = load_ole_stream(This, pStg);
1855 
1856  if(SUCCEEDED(hr))
1857  hr = IPersistStorage_Load(This->dataCache_PersistStg, pStg);
1858 
1860  {
1862  hr = IPersistStorage_Load(This->pPSDelegate, pStg);
1863  end_object_call( This );
1864  }
1865 
1866  if(SUCCEEDED(hr))
1867  {
1868  IStorage_AddRef(pStg);
1869  This->storage = pStg;
1870  This->storage_state = storage_state_loaded;
1871  }
1872  return hr;
1873 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static HRESULT load_ole_stream(DefaultHandler *This, IStorage *storage)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_IPersistStorage_QueryInterface()

static HRESULT WINAPI DefaultHandler_IPersistStorage_QueryInterface ( IPersistStorage iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1661 of file defaulthandler.c.

1665 {
1667 
1668  return IUnknown_QueryInterface(This->outerUnknown, riid, ppvObject);
1669 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppvObject
Definition: precomp.h:44
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)

◆ DefaultHandler_IPersistStorage_Release()

static ULONG WINAPI DefaultHandler_IPersistStorage_Release ( IPersistStorage iface)
static

Definition at line 1687 of file defaulthandler.c.

1689 {
1691 
1692  return IUnknown_Release(This->outerUnknown);
1693 }
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)

◆ DefaultHandler_IPersistStorage_Save()

static HRESULT WINAPI DefaultHandler_IPersistStorage_Save ( IPersistStorage iface,
IStorage pStgSave,
BOOL  fSameAsLoad 
)
static

Definition at line 1880 of file defaulthandler.c.

1884 {
1886  HRESULT hr;
1887 
1888  TRACE("(%p)->(%p, %d)\n", iface, pStgSave, fSameAsLoad);
1889 
1890  hr = IPersistStorage_Save(This->dataCache_PersistStg, pStgSave, fSameAsLoad);
1892  {
1894  hr = IPersistStorage_Save(This->pPSDelegate, pStgSave, fSameAsLoad);
1895  end_object_call( This );
1896  }
1897 
1898  return hr;
1899 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_IPersistStorage_SaveCompleted()

static HRESULT WINAPI DefaultHandler_IPersistStorage_SaveCompleted ( IPersistStorage iface,
IStorage pStgNew 
)
static

Definition at line 1906 of file defaulthandler.c.

1909 {
1911  HRESULT hr;
1912 
1913  TRACE("(%p)->(%p)\n", iface, pStgNew);
1914 
1915  hr = IPersistStorage_SaveCompleted(This->dataCache_PersistStg, pStgNew);
1916 
1918  {
1920  hr = IPersistStorage_SaveCompleted(This->pPSDelegate, pStgNew);
1921  end_object_call( This );
1922  }
1923 
1924  if(pStgNew)
1925  {
1926  IStorage_AddRef(pStgNew);
1927  if(This->storage) IStorage_Release(This->storage);
1928  This->storage = pStgNew;
1929  This->storage_state = storage_state_loaded;
1930  }
1931 
1932  return hr;
1933 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IPersistStorage(IPersistStorage *iface)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ DefaultHandler_IRunnableObject_AddRef()

static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef ( IRunnableObject iface)
static

Definition at line 1411 of file defaulthandler.c.

1413 {
1415 
1416  return IUnknown_AddRef(This->outerUnknown);
1417 }
static DefaultHandler * impl_from_IRunnableObject(IRunnableObject *iface)

◆ DefaultHandler_IRunnableObject_QueryInterface()

static HRESULT WINAPI DefaultHandler_IRunnableObject_QueryInterface ( IRunnableObject iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1396 of file defaulthandler.c.

1400 {
1402 
1403  return IUnknown_QueryInterface(This->outerUnknown, riid, ppvObject);
1404 }
REFIID riid
Definition: precomp.h:44
static DefaultHandler * impl_from_IRunnableObject(IRunnableObject *iface)
REFIID LPVOID * ppvObject
Definition: precomp.h:44

◆ DefaultHandler_IRunnableObject_Release()

static ULONG WINAPI DefaultHandler_IRunnableObject_Release ( IRunnableObject iface)
static

Definition at line 1424 of file defaulthandler.c.

1426 {
1428 
1429  return IUnknown_Release(This->outerUnknown);
1430 }
static DefaultHandler * impl_from_IRunnableObject(IRunnableObject *iface)

◆ DefaultHandler_IsRunning()

static BOOL WINAPI DefaultHandler_IsRunning ( IRunnableObject iface)
static

Definition at line 1527 of file defaulthandler.c.

1529 {
1531 
1532  TRACE("()\n");
1533 
1534  if (This->object_state == object_state_running)
1535  return TRUE;
1536  else
1537  return FALSE;
1538 }
#define TRUE
Definition: types.h:120
#define TRACE(s)
Definition: solgame.cpp:4
static DefaultHandler * impl_from_IRunnableObject(IRunnableObject *iface)

◆ DefaultHandler_IsUpToDate()

static HRESULT WINAPI DefaultHandler_IsUpToDate ( IOleObject iface)
static

Definition at line 747 of file defaulthandler.c.

749 {
752  TRACE("(%p)\n", iface);
753 
754  if (object_is_running(This))
755  {
757  hr = IOleObject_IsUpToDate(This->pOleDelegate);
759  }
760 
761  return hr;
762 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_LockRunning()

static HRESULT WINAPI DefaultHandler_LockRunning ( IRunnableObject iface,
BOOL  fLock,
BOOL  fLastUnlockCloses 
)
static

Definition at line 1545 of file defaulthandler.c.

1549 {
1550  FIXME("()\n");
1551  return S_OK;
1552 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ DefaultHandler_NDIUnknown_AddRef()

static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef ( IUnknown iface)
static

Definition at line 276 of file defaulthandler.c.

278 {
280  return InterlockedIncrement(&This->ref);
281 }
static DefaultHandler * impl_from_IUnknown(IUnknown *iface)
#define InterlockedIncrement
Definition: armddk.h:53

◆ DefaultHandler_NDIUnknown_QueryInterface()

static HRESULT WINAPI DefaultHandler_NDIUnknown_QueryInterface ( IUnknown iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 215 of file defaulthandler.c.

219 {
221 
222  if (!ppvObject)
223  return E_INVALIDARG;
224 
225  *ppvObject = NULL;
226 
228  *ppvObject = iface;
229  else if (IsEqualIID(&IID_IOleObject, riid))
230  *ppvObject = &This->IOleObject_iface;
231  else if (IsEqualIID(&IID_IDataObject, riid))
232  *ppvObject = &This->IDataObject_iface;
233  else if (IsEqualIID(&IID_IRunnableObject, riid))
234  *ppvObject = &This->IRunnableObject_iface;
235  else if (IsEqualIID(&IID_IPersist, riid) ||
237  *ppvObject = &This->IPersistStorage_iface;
238  else if (IsEqualIID(&IID_IViewObject, riid) ||
242  {
243  HRESULT hr = IUnknown_QueryInterface(This->dataCache, riid, ppvObject);
244  if (FAILED(hr)) FIXME("interface %s not implemented by data cache\n", debugstr_guid(riid));
245  return hr;
246  }
247  else if (This->inproc_server && This->pOleDelegate)
248  {
249  return IOleObject_QueryInterface(This->pOleDelegate, riid, ppvObject);
250  }
251 
252  /* Check that we obtained an interface. */
253  if (*ppvObject == NULL)
254  {
255  WARN( "() : asking for unsupported interface %s\n", debugstr_guid(riid));
256  return E_NOINTERFACE;
257  }
258 
259  /*
260  * Query Interface always increases the reference count by one when it is
261  * successful.
262  */
263  IUnknown_AddRef((IUnknown*)*ppvObject);
264 
265  return S_OK;
266 }
const GUID IID_IViewObject
#define E_NOINTERFACE
Definition: winerror.h:2364
static DefaultHandler * impl_from_IUnknown(IUnknown *iface)
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
const GUID IID_IPersist
Definition: proxy.cpp:14
#define WARN(fmt,...)
Definition: debug.h:111
const GUID IID_IDataObject
const GUID IID_IPersistStorage
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IOleObject
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
REFIID LPVOID * ppvObject
Definition: precomp.h:44
const GUID IID_IRunnableObject
const GUID IID_IOleCache2
#define S_OK
Definition: intsafe.h:59
const GUID IID_IViewObject2
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
const GUID IID_IOleCache

◆ DefaultHandler_NDIUnknown_Release()

static ULONG WINAPI DefaultHandler_NDIUnknown_Release ( IUnknown iface)
static

Definition at line 291 of file defaulthandler.c.

293 {
295  ULONG ref;
296 
297  ref = InterlockedDecrement(&This->ref);
298 
300 
301  return ref;
302 }
static DefaultHandler * impl_from_IUnknown(IUnknown *iface)
static void DefaultHandler_Destroy(DefaultHandler *This)
Definition: send.c:47
GLenum GLint ref
Definition: glext.h:6028
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1

◆ DefaultHandler_QueryGetData()

static HRESULT WINAPI DefaultHandler_QueryGetData ( IDataObject iface,
LPFORMATETC  pformatetc 
)
static

Definition at line 1162 of file defaulthandler.c.

1165 {
1166  IDataObject* cacheDataObject = NULL;
1167  HRESULT hres;
1168 
1170 
1171  TRACE("(%p, %p)\n", iface, pformatetc);
1172 
1173  hres = IUnknown_QueryInterface(This->dataCache,
1174  &IID_IDataObject,
1175  (void**)&cacheDataObject);
1176 
1177  if (FAILED(hres))
1178  return E_UNEXPECTED;
1179 
1180  hres = IDataObject_QueryGetData(cacheDataObject,
1181  pformatetc);
1182 
1183  IDataObject_Release(cacheDataObject);
1184 
1185  if (hres == S_OK) return hres;
1186 
1187  if (object_is_running( This ))
1188  {
1190  hres = IDataObject_QueryGetData(This->pDataDelegate, pformatetc);
1191  end_object_call( This );
1192  if (hres == S_OK) return hres;
1193  }
1194 
1195  /* Query running state again, as the object may have closed during _QueryGetData call */
1196  if (!object_is_running( This ))
1198 
1199  return hres;
1200 }
static void end_object_call(DefaultHandler *This)
const GUID IID_IDataObject
smooth NULL
Definition: ftsmooth.c:416
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
#define E_UNEXPECTED
Definition: winerror.h:2456
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_QueryInterface()

static HRESULT WINAPI DefaultHandler_QueryInterface ( IOleObject iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 314 of file defaulthandler.c.

318 {
320 
321  return IUnknown_QueryInterface(This->outerUnknown, riid, ppvObject);
322 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppvObject
Definition: precomp.h:44
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_Release()

static ULONG WINAPI DefaultHandler_Release ( IOleObject iface)
static

Definition at line 342 of file defaulthandler.c.

344 {
346 
347  return IUnknown_Release(This->outerUnknown);
348 }
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_Run()

static HRESULT WINAPI DefaultHandler_Run ( IRunnableObject iface,
IBindCtx pbc 
)
static

Definition at line 1445 of file defaulthandler.c.

1448 {
1450  HRESULT hr;
1451  IOleCacheControl *cache_ctrl;
1452 
1453  FIXME("(%p): semi-stub\n", pbc);
1454 
1455  /* already running? if so nothing to do */
1456  if (object_is_running(This))
1457  return S_OK;
1458 
1460 
1461  hr = CoCreateInstance(&This->clsid, NULL, CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER,
1462  &IID_IOleObject, (void **)&This->pOleDelegate);
1463  if (FAILED(hr))
1464  return hr;
1465 
1466  hr = IOleObject_Advise(This->pOleDelegate, &This->IAdviseSink_iface, &This->dwAdvConn);
1467  if (FAILED(hr)) goto fail;
1468 
1469  if (This->clientSite)
1470  {
1471  hr = IOleObject_SetClientSite(This->pOleDelegate, This->clientSite);
1472  if (FAILED(hr)) goto fail;
1473  }
1474 
1475  hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IPersistStorage,
1476  (void **)&This->pPSDelegate);
1477  if (FAILED(hr)) goto fail;
1478 
1479  if (This->storage_state == storage_state_initialised)
1480  hr = IPersistStorage_InitNew(This->pPSDelegate, This->storage);
1481  else if (This->storage_state == storage_state_loaded)
1482  hr = IPersistStorage_Load(This->pPSDelegate, This->storage);
1483  if (FAILED(hr)) goto fail;
1484 
1485  if (This->containerApp)
1486  {
1487  hr = IOleObject_SetHostNames(This->pOleDelegate, This->containerApp,
1488  This->containerObj);
1489  if (FAILED(hr)) goto fail;
1490  }
1491 
1492  /* FIXME: do more stuff here:
1493  * - IOleObject_GetMiscStatus
1494  * - IOleObject_GetMoniker
1495  */
1496 
1497  hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject,
1498  (void **)&This->pDataDelegate);
1499  if (FAILED(hr)) goto fail;
1500 
1501  This->object_state = object_state_running;
1502 
1503  if (This->dataAdviseHolder)
1504  {
1505  hr = DataAdviseHolder_OnConnect(This->dataAdviseHolder, This->pDataDelegate);
1506  if (FAILED(hr)) goto fail;
1507  }
1508 
1509  hr = IUnknown_QueryInterface( This->dataCache, &IID_IOleCacheControl, (void **)&cache_ctrl );
1510  if (FAILED(hr)) goto fail;
1511  hr = IOleCacheControl_OnRun( cache_ctrl, This->pDataDelegate );
1512  IOleCacheControl_Release( cache_ctrl );
1513  if (FAILED(hr)) goto fail;
1514 
1515  return hr;
1516 
1517 fail:
1519  return hr;
1520 }
HRESULT hr
Definition: shlfolder.c:183
const GUID IID_IOleCacheControl
const GUID IID_IDataObject
const GUID IID_IPersistStorage
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
static void DefaultHandler_Stop(DefaultHandler *This)
const GUID IID_IOleObject
static void release_delegates(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
LONG HRESULT
Definition: typedefs.h:77
static DefaultHandler * impl_from_IRunnableObject(IRunnableObject *iface)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
#define S_OK
Definition: intsafe.h:59
HRESULT DataAdviseHolder_OnConnect(IDataAdviseHolder *iface, IDataObject *pDelegate) DECLSPEC_HIDDEN
Definition: oleobj.c:806

◆ DefaultHandler_SetClientSite()

static HRESULT WINAPI DefaultHandler_SetClientSite ( IOleObject iface,
IOleClientSite pClientSite 
)
static

Definition at line 358 of file defaulthandler.c.

361 {
363  HRESULT hr = S_OK;
364 
365  TRACE("(%p, %p)\n", iface, pClientSite);
366 
367  if (object_is_running(This))
368  {
370  hr = IOleObject_SetClientSite(This->pOleDelegate, pClientSite);
372  }
373 
374  /*
375  * Make sure we release the previous client site if there
376  * was one.
377  */
378  if (This->clientSite)
379  IOleClientSite_Release(This->clientSite);
380 
381  This->clientSite = pClientSite;
382 
383  if (This->clientSite)
384  IOleClientSite_AddRef(This->clientSite);
385 
386  return hr;
387 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_SetColorScheme()

static HRESULT WINAPI DefaultHandler_SetColorScheme ( IOleObject iface,
struct tagLOGPALETTE pLogpal 
)
static

Definition at line 1031 of file defaulthandler.c.

1034 {
1037 
1038  TRACE("(%p, %p))\n", iface, pLogpal);
1039 
1040  if (object_is_running(This))
1041  {
1043  hr = IOleObject_SetColorScheme(This->pOleDelegate, pLogpal);
1044  end_object_call( This );
1045  }
1046 
1047  return hr;
1048 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619

◆ DefaultHandler_SetContainedObject()

static HRESULT WINAPI DefaultHandler_SetContainedObject ( IRunnableObject iface,
BOOL  fContained 
)
static

Definition at line 1559 of file defaulthandler.c.

1562 {
1563  FIXME("()\n");
1564  return S_OK;
1565 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ DefaultHandler_SetData()

static HRESULT WINAPI DefaultHandler_SetData ( IDataObject iface,
LPFORMATETC  pformatetc,
STGMEDIUM *  pmedium,
BOOL  fRelease 
)
static

Definition at line 1237 of file defaulthandler.c.

1242 {
1244  IDataObject* cacheDataObject = NULL;
1245  HRESULT hres;
1246 
1247  TRACE("(%p, %p, %p, %d)\n", iface, pformatetc, pmedium, fRelease);
1248 
1249  hres = IUnknown_QueryInterface(This->dataCache,
1250  &IID_IDataObject,
1251  (void**)&cacheDataObject);
1252 
1253  if (FAILED(hres))
1254  return E_UNEXPECTED;
1255 
1256  hres = IDataObject_SetData(cacheDataObject,
1257  pformatetc,
1258  pmedium,
1259  fRelease);
1260 
1261  IDataObject_Release(cacheDataObject);
1262 
1263  return hres;
1264 }
const GUID IID_IDataObject
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
LONG HRESULT
Definition: typedefs.h:77
static DefaultHandler * impl_from_IDataObject(IDataObject *iface)
#define E_UNEXPECTED
Definition: winerror.h:2456

◆ DefaultHandler_SetExtent()

static HRESULT WINAPI DefaultHandler_SetExtent ( IOleObject iface,
DWORD  dwDrawAspect,
SIZEL psizel 
)
static

Definition at line 831 of file defaulthandler.c.

835 {
838 
839  TRACE("(%p, %x, (%d x %d))\n", iface,
840  dwDrawAspect, psizel->cx, psizel->cy);
841 
842  if (object_is_running(This))
843  {
845  hr = IOleObject_SetExtent(This->pOleDelegate, dwDrawAspect, psizel);
847  }
848 
849  return hr;
850 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
LONG cx
Definition: windef.h:319
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define OLE_E_NOTRUNNING
Definition: winerror.h:2619
LONG cy
Definition: windef.h:320

◆ DefaultHandler_SetHostNames()

static HRESULT WINAPI DefaultHandler_SetHostNames ( IOleObject iface,
LPCOLESTR  szContainerApp,
LPCOLESTR  szContainerObj 
)
static

Definition at line 422 of file defaulthandler.c.

426 {
428 
429  TRACE("(%p, %s, %s)\n",
430  iface,
431  debugstr_w(szContainerApp),
432  debugstr_w(szContainerObj));
433 
434  if (object_is_running(This))
435  {
437  IOleObject_SetHostNames(This->pOleDelegate, szContainerApp, szContainerObj);
439  }
440 
441  /* Be sure to cleanup before re-assigning the strings. */
442  HeapFree( GetProcessHeap(), 0, This->containerApp );
443  This->containerApp = NULL;
444  HeapFree( GetProcessHeap(), 0, This->containerObj );
445  This->containerObj = NULL;
446 
447  if (szContainerApp)
448  {
449  if ((This->containerApp = HeapAlloc( GetProcessHeap(), 0,
450  (lstrlenW(szContainerApp) + 1) * sizeof(WCHAR) )))
451  lstrcpyW( This->containerApp, szContainerApp );
452  }
453 
454  if (szContainerObj)
455  {
456  if ((This->containerObj = HeapAlloc( GetProcessHeap(), 0,
457  (lstrlenW(szContainerObj) + 1) * sizeof(WCHAR) )))
458  lstrcpyW( This->containerObj, szContainerObj );
459  }
460  return S_OK;
461 }
static void end_object_call(DefaultHandler *This)
#define lstrlenW
Definition: compat.h:415
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
#define lstrcpyW
Definition: compat.h:414
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)
#define HeapFree(x, y, z)
Definition: compat.h:402

◆ DefaultHandler_SetMoniker()

static HRESULT WINAPI DefaultHandler_SetMoniker ( IOleObject iface,
DWORD  dwWhichMoniker,
IMoniker pmk 
)
static

Definition at line 543 of file defaulthandler.c.

547 {
549  HRESULT hr = S_OK;
550 
551  TRACE("(%p, %d, %p)\n", iface, dwWhichMoniker, pmk);
552 
553  if (object_is_running(This))
554  {
556  hr = IOleObject_SetMoniker(This->pOleDelegate, dwWhichMoniker, pmk);
558  }
559 
560  return hr;
561 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59
static void start_object_call(DefaultHandler *This)
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_Stop()

static void DefaultHandler_Stop ( DefaultHandler This)
static

Definition at line 483 of file defaulthandler.c.

484 {
485  IOleCacheControl *cache_ctrl;
486  HRESULT hr;
487 
488  if (This->object_state == object_state_not_running)
489  return;
490 
491  hr = IUnknown_QueryInterface( This->dataCache, &IID_IOleCacheControl, (void **)&cache_ctrl );
492  if (SUCCEEDED(hr))
493  {
494  hr = IOleCacheControl_OnStop( cache_ctrl );
495  IOleCacheControl_Release( cache_ctrl );
496  }
497 
498  IOleObject_Unadvise(This->pOleDelegate, This->dwAdvConn);
499 
500  if (This->dataAdviseHolder)
501  DataAdviseHolder_OnDisconnect(This->dataAdviseHolder);
502 
503  This->object_state = object_state_not_running;
505 }
HRESULT hr
Definition: shlfolder.c:183
const GUID IID_IOleCacheControl
void DataAdviseHolder_OnDisconnect(IDataAdviseHolder *iface) DECLSPEC_HIDDEN
Definition: oleobj.c:828
static void release_delegates(DefaultHandler *This)
LONG HRESULT
Definition: typedefs.h:77
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by DefaultHandler_Close(), DefaultHandler_Destroy(), DefaultHandler_IAdviseSink_OnClose(), DefaultHandler_Run(), and end_object_call().

◆ DefaultHandler_Unadvise()

static HRESULT WINAPI DefaultHandler_Unadvise ( IOleObject iface,
DWORD  dwConnection 
)
static

Definition at line 944 of file defaulthandler.c.

947 {
949 
950  TRACE("(%p, %d)\n", iface, dwConnection);
951 
952  /*
953  * If we don't have an advise holder yet, it means we don't have
954  * a connection.
955  */
956  if (!This->oleAdviseHolder)
957  return OLE_E_NOCONNECTION;
958 
959  return IOleAdviseHolder_Unadvise(This->oleAdviseHolder,
960  dwConnection);
961 }
#define OLE_E_NOCONNECTION
Definition: winerror.h:2618
#define TRACE(s)
Definition: solgame.cpp:4
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ DefaultHandler_Update()

static HRESULT WINAPI DefaultHandler_Update ( IOleObject iface)
static

Definition at line 719 of file defaulthandler.c.

721 {
723  HRESULT hr;
724 
725  TRACE("(%p)\n", iface);
726 
727  if (!object_is_running(This))
728  {
729  FIXME("Should run object\n");
730  return E_NOTIMPL;
731  }
732 
734  hr = IOleObject_Update(This->pOleDelegate);
736 
737  return hr;
738 }
HRESULT hr
Definition: shlfolder.c:183
static void end_object_call(DefaultHandler *This)
#define FIXME(fmt,...)
Definition: debug.h:110
static BOOL object_is_running(DefaultHandler *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static void start_object_call(DefaultHandler *This)
#define E_NOTIMPL
Definition: ddrawi.h:99
static DefaultHandler * impl_from_IOleObject(IOleObject *iface)

◆ end_object_call()

◆ HandlerCF_AddRef()

static ULONG WINAPI HandlerCF_AddRef ( LPCLASSFACTORY  iface)
static

Definition at line 2321 of file defaulthandler.c.

2322 {
2324  return InterlockedIncrement(&This->refs);
2325 }
#define InterlockedIncrement
Definition: armddk.h:53
static HandlerCF * impl_from_IClassFactory(IClassFactory *iface)

◆ HandlerCF_Create()

HRESULT HandlerCF_Create ( REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 2358 of file defaulthandler.c.

2359 {
2360  HRESULT hr;
2361  HandlerCF *This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
2362  if (!This) return E_OUTOFMEMORY;
2363  This->IClassFactory_iface.lpVtbl = &HandlerClassFactoryVtbl;
2364  This->refs = 0;
2365  This->clsid = *rclsid;
2366 
2367  hr = IClassFactory_QueryInterface(&This->IClassFactory_iface, riid, ppv);
2368  if (FAILED(hr))
2369  HeapFree(GetProcessHeap(), 0, This);
2370 
2371  return hr;
2372 }
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static const IClassFactoryVtbl HandlerClassFactoryVtbl
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG HRESULT
Definition: typedefs.h:77
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by Handler_DllGetClassObject().

◆ HandlerCF_CreateInstance()

static HRESULT WINAPI HandlerCF_CreateInstance ( LPCLASSFACTORY  iface,
LPUNKNOWN  pUnk,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 2337 of file defaulthandler.c.

2339 {
2341  return OleCreateDefaultHandler(&This->clsid, pUnk, riid, ppv);
2342 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
static HandlerCF * impl_from_IClassFactory(IClassFactory *iface)

◆ HandlerCF_LockServer()

static HRESULT WINAPI HandlerCF_LockServer ( LPCLASSFACTORY  iface,
BOOL  fLock 
)
static

Definition at line 2344 of file defaulthandler.c.

2345 {
2346  FIXME("(%d), stub!\n",fLock);
2347  return S_OK;
2348 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ HandlerCF_QueryInterface()

static HRESULT WINAPI HandlerCF_QueryInterface ( LPCLASSFACTORY  iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 2308 of file defaulthandler.c.

2309 {
2310  *ppv = NULL;
2311  if (IsEqualIID(riid,&IID_IUnknown) ||
2313  {
2314  *ppv = iface;
2315  IClassFactory_AddRef(iface);
2316  return S_OK;
2317  }
2318  return E_NOINTERFACE;
2319 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
smooth NULL
Definition: ftsmooth.c:416
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
const GUID IID_IClassFactory
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ HandlerCF_Release()

static ULONG WINAPI HandlerCF_Release ( LPCLASSFACTORY  iface)
static

Definition at line 2327 of file defaulthandler.c.

2328 {
2330  ULONG refs = InterlockedDecrement(&This->refs);
2331  if (!refs)
2332  HeapFree(GetProcessHeap(), 0, This);
2333  return refs;
2334 }
#define GetProcessHeap()
Definition: compat.h:403
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1
#define HeapFree(x, y, z)
Definition: compat.h:402
static HandlerCF * impl_from_IClassFactory(IClassFactory *iface)

◆ impl_from_IAdviseSink()

static DefaultHandler* impl_from_IAdviseSink ( IAdviseSink iface)
inlinestatic

Definition at line 171 of file defaulthandler.c.

172 {
173  return CONTAINING_RECORD(iface, DefaultHandler, IAdviseSink_iface);
174 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by DefaultHandler_IAdviseSink_AddRef(), DefaultHandler_IAdviseSink_OnClose(), DefaultHandler_IAdviseSink_OnRename(), DefaultHandler_IAdviseSink_OnSave(), and DefaultHandler_IAdviseSink_Release().

◆ impl_from_IClassFactory()

static HandlerCF* impl_from_IClassFactory ( IClassFactory iface)
inlinestatic

Definition at line 2302 of file defaulthandler.c.

2303 {
2304  return CONTAINING_RECORD(iface, HandlerCF, IClassFactory_iface);
2305 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by HandlerCF_AddRef(), HandlerCF_CreateInstance(), and HandlerCF_Release().

◆ impl_from_IDataObject()

static DefaultHandler* impl_from_IDataObject ( IDataObject iface)
inlinestatic

Definition at line 161 of file defaulthandler.c.

162 {
163  return CONTAINING_RECORD(iface, DefaultHandler, IDataObject_iface);
164 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by DefaultHandler_DAdvise(), DefaultHandler_DUnadvise(), DefaultHandler_EnumDAdvise(), DefaultHandler_EnumFormatEtc(), DefaultHandler_GetCanonicalFormatEtc(), DefaultHandler_GetData(), DefaultHandler_IDataObject_AddRef(), DefaultHandler_IDataObject_QueryInterface(), DefaultHandler_IDataObject_Release(), DefaultHandler_QueryGetData(), and DefaultHandler_SetData().

◆ impl_from_IOleObject()

◆ impl_from_IPersistStorage()

static DefaultHandler* impl_from_IPersistStorage ( IPersistStorage iface)
inlinestatic

Definition at line 176 of file defaulthandler.c.

177 {
178  return CONTAINING_RECORD(iface, DefaultHandler, IPersistStorage_iface);
179 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by DefaultHandler_IPersistStorage_AddRef(), DefaultHandler_IPersistStorage_GetClassID(), DefaultHandler_IPersistStorage_HandsOffStorage(), DefaultHandler_IPersistStorage_InitNew(), DefaultHandler_IPersistStorage_IsDirty(), DefaultHandler_IPersistStorage_Load(), DefaultHandler_IPersistStorage_QueryInterface(), DefaultHandler_IPersistStorage_Release(), DefaultHandler_IPersistStorage_Save(), and DefaultHandler_IPersistStorage_SaveCompleted().

◆ impl_from_IRunnableObject()

static DefaultHandler* impl_from_IRunnableObject ( IRunnableObject iface)
inlinestatic

Definition at line 166 of file defaulthandler.c.

167 {
168  return CONTAINING_RECORD(iface, DefaultHandler, IRunnableObject_iface);
169 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by DefaultHandler_IRunnableObject_AddRef(), DefaultHandler_IRunnableObject_QueryInterface(), DefaultHandler_IRunnableObject_Release(), DefaultHandler_IsRunning(), and DefaultHandler_Run().

◆ impl_from_IUnknown()

static DefaultHandler* impl_from_IUnknown ( IUnknown iface)
inlinestatic

Definition at line 156 of file defaulthandler.c.

157 {
158  return CONTAINING_RECORD(iface, DefaultHandler, IUnknown_iface);
159 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by DefaultHandler_NDIUnknown_AddRef(), DefaultHandler_NDIUnknown_QueryInterface(), and DefaultHandler_NDIUnknown_Release().

◆ load_ole_stream()

static HRESULT load_ole_stream ( DefaultHandler This,
IStorage storage 
)
static

Definition at line 1772 of file defaulthandler.c.

1773 {
1774  IStream *stream;
1775  HRESULT hr;
1776 
1777  hr = IStorage_OpenStream(storage, OleStream, NULL, STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &stream);
1778 
1779  if(SUCCEEDED(hr))
1780  {
1781  DWORD read;
1783 
1784  hr = IStream_Read(stream, &header, sizeof(header), &read);
1785  if(hr == S_OK && read == sizeof(header) && header.version == ole_stream_version)
1786  {
1787  if(header.flags & 1)
1788  {
1789  /* FIXME: Read the moniker and deal with the link */
1790  FIXME("Linked objects are not supported yet\n");
1791  }
1792  }
1793  else
1794  {
1795  WARN("Incorrect OleStream header\n");
1796  hr = DV_E_CLIPFORMAT;
1797  }
1798  IStream_Release(stream);
1799  }
1800  else
1801  hr = STORAGE_CreateOleStream(storage, 0);
1802 
1803  return hr;
1804 }
HRESULT hr
Definition: shlfolder.c:183
static const WCHAR OleStream[]
#define STGM_SHARE_EXCLUSIVE
Definition: objbase.h:922
#define WARN(fmt,...)
Definition: debug.h:111
#define DV_E_CLIPFORMAT
Definition: winerror.h:2639
#define FIXME(fmt,...)
Definition: debug.h:110
HRESULT STORAGE_CreateOleStream(IStorage *storage, DWORD flags)
Definition: storage32.c:9207
smooth NULL
Definition: ftsmooth.c:416
#define STGM_READ
Definition: objbase.h:916
LONG HRESULT
Definition: typedefs.h:77
unsigned long DWORD
Definition: ntddk_ex.h:95
Definition: parse.h:22
GLuint GLuint stream
Definition: glext.h:7522
#define S_OK
Definition: intsafe.h:59
static const DWORD ole_stream_version
struct CFHEADER header
Definition: fdi.c:101
_CRTIMP int __cdecl read(_In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by DefaultHandler_IPersistStorage_Load().

◆ object_is_running()

◆ OleCreateDefaultHandler()

HRESULT WINAPI OleCreateDefaultHandler ( REFCLSID  clsid,
LPUNKNOWN  pUnkOuter,
REFIID  riid,
LPVOID ppvObj 
)

Definition at line 2287 of file defaulthandler.c.

2289 {
2290  TRACE("(%s, %p, %s, %p)\n", debugstr_guid(clsid), pUnkOuter,debugstr_guid(riid), ppvObj);
2292  NULL, riid, ppvObj);
2293 }
HRESULT WINAPI OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, IClassFactory *pCF, REFIID riid, LPVOID *ppvObj)
REFIID riid
Definition: precomp.h:44
#define EMBDHLP_CREATENOW
Definition: ole2.h:49
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
#define EMBDHLP_INPROC_HANDLER
Definition: ole2.h:47
REFCLSID clsid
Definition: msctf.c:82

Referenced by add_icon_to_control(), HandlerCF_CreateInstance(), insert_static_object(), OleCreateStaticFromData(), OleLoad(), test_default_handler(), test_default_handler_run(), and test_olestream().

◆ OleCreateEmbeddingHelper()

HRESULT WINAPI OleCreateEmbeddingHelper ( REFCLSID  clsid,
LPUNKNOWN  pUnkOuter,
DWORD  flags,
IClassFactory pCF,
REFIID  riid,
LPVOID ppvObj 
)

Definition at line 2234 of file defaulthandler.c.

2241 {
2242  DefaultHandler* newHandler = NULL;
2243  HRESULT hr = S_OK;
2244 
2245  TRACE("(%s, %p, %08x, %p, %s, %p)\n", debugstr_guid(clsid), pUnkOuter, flags, pCF, debugstr_guid(riid), ppvObj);
2246 
2247  if (!ppvObj)
2248  return E_POINTER;
2249 
2250  *ppvObj = NULL;
2251 
2252  /*
2253  * If This handler is constructed for aggregation, make sure
2254  * the caller is requesting the IUnknown interface.
2255  * This is necessary because it's the only time the non-delegating
2256  * IUnknown pointer can be returned to the outside.
2257  */
2258  if (pUnkOuter && !IsEqualIID(&IID_IUnknown, riid))
2259  return CLASS_E_NOAGGREGATION;
2260 
2261  /*
2262  * Try to construct a new instance of the class.
2263  */
2264  newHandler = DefaultHandler_Construct(clsid, pUnkOuter, flags, pCF);
2265 
2266  if (!newHandler)
2267  return E_OUTOFMEMORY;
2268 
2269  /*
2270  * Make sure it supports the interface required by the caller.
2271  */
2272  hr = IUnknown_QueryInterface(&newHandler->IUnknown_iface, riid, ppvObj);
2273 
2274  /*
2275  * Release the reference obtained in the constructor. If
2276  * the QueryInterface was unsuccessful, it will free the class.
2277  */
2278  IUnknown_Release(&newHandler->IUnknown_iface);
2279 
2280  return hr;
2281 }
HRESULT hr
Definition: shlfolder.c:183
REFIID riid
Definition: precomp.h:44
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
GLbitfield flags
Definition: glext.h:7161
REFCLSID clsid
Definition: msctf.c:82
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:2662
IUnknown IUnknown_iface
#define S_OK
Definition: intsafe.h:59
static DefaultHandler * DefaultHandler_Construct(REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, IClassFactory *pCF)
#define E_POINTER
Definition: winerror.h:2365
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

Referenced by OleCreateDefaultHandler(), and test_default_handler().

◆ release_delegates()

static void release_delegates ( DefaultHandler This)
static

Definition at line 463 of file defaulthandler.c.

464 {
465  if (This->pDataDelegate)
466  {
467  IDataObject_Release(This->pDataDelegate);
468  This->pDataDelegate = NULL;
469  }
470  if (This->pPSDelegate)
471  {
472  IPersistStorage_Release(This->pPSDelegate);
473  This->pPSDelegate = NULL;
474  }
475  if (This->pOleDelegate)
476  {
477  IOleObject_Release(This->pOleDelegate);
478  This->pOleDelegate = NULL;
479  }
480 }
smooth NULL
Definition: ftsmooth.c:416

Referenced by DefaultHandler_Run(), and DefaultHandler_Stop().

◆ start_object_call()

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ole  )

Variable Documentation

◆ DefaultHandler_IAdviseSink_VTable

const IAdviseSinkVtbl DefaultHandler_IAdviseSink_VTable
static
Initial value:
=
{
}
static void WINAPI DefaultHandler_IAdviseSink_OnRename(IAdviseSink *iface, IMoniker *pmk)
static ULONG WINAPI DefaultHandler_IAdviseSink_AddRef(IAdviseSink *iface)
static void WINAPI DefaultHandler_IAdviseSink_OnClose(IAdviseSink *iface)
static HRESULT WINAPI DefaultHandler_IAdviseSink_QueryInterface(IAdviseSink *iface, REFIID riid, void **ppvObject)
static void WINAPI DefaultHandler_IAdviseSink_OnSave(IAdviseSink *iface)
static ULONG WINAPI DefaultHandler_IAdviseSink_Release(IAdviseSink *iface)
static void WINAPI DefaultHandler_IAdviseSink_OnDataChange(IAdviseSink *iface, FORMATETC *pFormatetc, STGMEDIUM *pStgmed)
static void WINAPI DefaultHandler_IAdviseSink_OnViewChange(IAdviseSink *iface, DWORD dwAspect, LONG lindex)

Definition at line 2031 of file defaulthandler.c.

Referenced by DefaultHandler_Construct().

◆ DefaultHandler_IDataObject_VTable

const IDataObjectVtbl DefaultHandler_IDataObject_VTable
static
Initial value:
=
{
}
static HRESULT WINAPI DefaultHandler_EnumDAdvise(IDataObject *iface, IEnumSTATDATA **ppenumAdvise)
static HRESULT WINAPI DefaultHandler_QueryGetData(IDataObject *iface, LPFORMATETC pformatetc)
static HRESULT WINAPI DefaultHandler_SetData(IDataObject *iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
static ULONG WINAPI DefaultHandler_IDataObject_Release(IDataObject *iface)
static HRESULT WINAPI DefaultHandler_EnumFormatEtc(IDataObject *iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc)
static HRESULT WINAPI DefaultHandler_IDataObject_QueryInterface(IDataObject *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI DefaultHandler_GetCanonicalFormatEtc(IDataObject *iface, LPFORMATETC pformatetcIn, LPFORMATETC pformatetcOut)
static HRESULT WINAPI DefaultHandler_DAdvise(IDataObject *iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
static ULONG WINAPI DefaultHandler_IDataObject_AddRef(IDataObject *iface)
static HRESULT WINAPI DefaultHandler_GetData(IDataObject *iface, LPFORMATETC pformatetcIn, STGMEDIUM *pmedium)
static HRESULT WINAPI DefaultHandler_GetDataHere(IDataObject *iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium)
static HRESULT WINAPI DefaultHandler_DUnadvise(IDataObject *iface, DWORD dwConnection)

Definition at line 2003 of file defaulthandler.c.

Referenced by DefaultHandler_Construct().

◆ DefaultHandler_IOleObject_VTable

const IOleObjectVtbl DefaultHandler_IOleObject_VTable
static
Initial value:
=
{
}
static HRESULT WINAPI DefaultHandler_Unadvise(IOleObject *iface, DWORD dwConnection)
static HRESULT WINAPI DefaultHandler_SetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
static HRESULT WINAPI DefaultHandler_SetColorScheme(IOleObject *iface, struct tagLOGPALETTE *pLogpal)
static HRESULT WINAPI DefaultHandler_InitFromData(IOleObject *iface, IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved)
static HRESULT WINAPI DefaultHandler_GetClipboardData(IOleObject *iface, DWORD dwReserved, IDataObject **ppDataObject)
static HRESULT WINAPI DefaultHandler_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
static HRESULT WINAPI DefaultHandler_EnumAdvise(IOleObject *iface, IEnumSTATDATA **ppenumAdvise)
static HRESULT WINAPI DefaultHandler_EnumVerbs(IOleObject *iface, IEnumOLEVERB **ppEnumOleVerb)
static HRESULT WINAPI DefaultHandler_GetUserClassID(IOleObject *iface, CLSID *pClsid)
static HRESULT WINAPI DefaultHandler_Advise(IOleObject *iface, IAdviseSink *pAdvSink, DWORD *pdwConnection)
static HRESULT WINAPI DefaultHandler_GetUserType(IOleObject *iface, DWORD dwFormOfType, LPOLESTR *pszUserType)
static HRESULT WINAPI DefaultHandler_GetMoniker(IOleObject *iface, DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
static ULONG WINAPI DefaultHandler_AddRef(IOleObject *iface)
static HRESULT WINAPI DefaultHandler_QueryInterface(IOleObject *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI DefaultHandler_SetHostNames(IOleObject *iface, LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
static HRESULT WINAPI DefaultHandler_Update(IOleObject *iface)
static HRESULT WINAPI DefaultHandler_Close(IOleObject *iface, DWORD dwSaveOption)
static ULONG WINAPI DefaultHandler_Release(IOleObject *iface)
static HRESULT WINAPI DefaultHandler_GetClientSite(IOleObject *iface, IOleClientSite **ppClientSite)
static HRESULT WINAPI DefaultHandler_GetMiscStatus(IOleObject *iface, DWORD dwAspect, DWORD *pdwStatus)
static HRESULT WINAPI DefaultHandler_GetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
static HRESULT WINAPI DefaultHandler_SetMoniker(IOleObject *iface, DWORD dwWhichMoniker, IMoniker *pmk)
static HRESULT WINAPI DefaultHandler_DoVerb(IOleObject *iface, LONG iVerb, struct tagMSG *lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
static HRESULT WINAPI DefaultHandler_IsUpToDate(IOleObject *iface)

Definition at line 1968 of file defaulthandler.c.

Referenced by DefaultHandler_Construct().

◆ DefaultHandler_IPersistStorage_VTable

const IPersistStorageVtbl DefaultHandler_IPersistStorage_VTable
static
Initial value:
=
{
}
static HRESULT WINAPI DefaultHandler_IPersistStorage_GetClassID(IPersistStorage *iface, CLSID *clsid)
static HRESULT WINAPI DefaultHandler_IPersistStorage_Load(IPersistStorage *iface, IStorage *pStg)
static ULONG WINAPI DefaultHandler_IPersistStorage_AddRef(IPersistStorage *iface)
static HRESULT WINAPI DefaultHandler_IPersistStorage_IsDirty(IPersistStorage *iface)
static HRESULT WINAPI DefaultHandler_IPersistStorage_HandsOffStorage(IPersistStorage *iface)
static HRESULT WINAPI DefaultHandler_IPersistStorage_InitNew(IPersistStorage *iface, IStorage *pStg)
static HRESULT WINAPI DefaultHandler_IPersistStorage_QueryInterface(IPersistStorage *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI DefaultHandler_IPersistStorage_Release(IPersistStorage *iface)
static HRESULT WINAPI DefaultHandler_IPersistStorage_SaveCompleted(IPersistStorage *iface, IStorage *pStgNew)
static HRESULT WINAPI DefaultHandler_IPersistStorage_Save(IPersistStorage *iface, IStorage *pStgSave, BOOL fSameAsLoad)

Definition at line 2043 of file defaulthandler.c.

Referenced by DefaultHandler_Construct().

◆ DefaultHandler_IRunnableObject_VTable

const IRunnableObjectVtbl DefaultHandler_IRunnableObject_VTable
static
Initial value:
=
{
}
static ULONG WINAPI DefaultHandler_IRunnableObject_Release(IRunnableObject *iface)
static HRESULT WINAPI DefaultHandler_SetContainedObject(IRunnableObject *iface, BOOL fContained)
static HRESULT WINAPI DefaultHandler_Run(IRunnableObject *iface, IBindCtx *pbc)
static HRESULT WINAPI DefaultHandler_LockRunning(IRunnableObject *iface, BOOL fLock, BOOL fLastUnlockCloses)
static HRESULT WINAPI DefaultHandler_GetRunningClass(IRunnableObject *iface, LPCLSID lpClsid)
static BOOL WINAPI DefaultHandler_IsRunning(IRunnableObject *iface)
static HRESULT WINAPI DefaultHandler_IRunnableObject_QueryInterface(IRunnableObject *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef(IRunnableObject *iface)

Definition at line 2019 of file defaulthandler.c.

Referenced by DefaultHandler_Construct().

◆ DefaultHandler_NDIUnknown_VTable

const IUnknownVtbl DefaultHandler_NDIUnknown_VTable
static
Initial value:
=
{
}
static HRESULT WINAPI DefaultHandler_NDIUnknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef(IUnknown *iface)
static ULONG WINAPI DefaultHandler_NDIUnknown_Release(IUnknown *iface)

Definition at line 1996 of file defaulthandler.c.

Referenced by DefaultHandler_Construct().

◆ HandlerClassFactoryVtbl

const IClassFactoryVtbl HandlerClassFactoryVtbl
static
Initial value:
= {
}
static ULONG WINAPI HandlerCF_AddRef(LPCLASSFACTORY iface)
static HRESULT WINAPI HandlerCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI HandlerCF_LockServer(LPCLASSFACTORY iface, BOOL fLock)
static HRESULT WINAPI HandlerCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv)
static ULONG WINAPI HandlerCF_Release(LPCLASSFACTORY iface)

Definition at line 2350 of file defaulthandler.c.

Referenced by HandlerCF_Create().

◆ ole_stream_version

const DWORD ole_stream_version = 0x02000001
static

Definition at line 1770 of file defaulthandler.c.

Referenced by load_ole_stream().

◆ OleStream

const WCHAR OleStream[] = {1,'O','l','e',0}
static

Definition at line 1761 of file defaulthandler.c.

Referenced by load_ole_stream().