summaryrefslogtreecommitdiffstats
path: root/private/ole32/ih/thunkapi.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/ole32/ih/thunkapi.hxx')
-rw-r--r--private/ole32/ih/thunkapi.hxx142
1 files changed, 142 insertions, 0 deletions
diff --git a/private/ole32/ih/thunkapi.hxx b/private/ole32/ih/thunkapi.hxx
new file mode 100644
index 000000000..44ca0e9ba
--- /dev/null
+++ b/private/ole32/ih/thunkapi.hxx
@@ -0,0 +1,142 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: thunkapi.hxx
+//
+// Contents: Defines interfaces and methods for use by the WOW thunking
+// system. This is intended as a private interface between
+// OLE32 and the WOW thunking layer.
+//
+// Classes: OleThunkWOW
+//
+// Functions:
+//
+// History: 3-15-94 kevinro Created
+//
+//----------------------------------------------------------------------------
+#ifndef __thunkapi_hxx__
+#define __thunkapi_hxx__
+
+
+//
+// ThunkManager interface
+//
+interface IThunkManager : public IUnknown
+{
+ // *** IUnknown methods ***
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ // *** IThunkManager methods ***
+ STDMETHOD_(BOOL, IsIIDRequested) (THIS_ REFIID rrid) PURE;
+ STDMETHOD_(BOOL, IsCustom3216Proxy) (THIS_ IUnknown *punk,
+ REFIID riid) PURE;
+};
+
+
+//
+// The following sets up an interface between OLE32
+// and the WOW thunking system. This interface is intended to be private
+// between OLE32 and the WOW thunk layer.
+//
+
+class OleThunkWOW
+{
+public:
+
+ STDMETHOD(LoadProcDll)( LPCTSTR pszDllName,
+ LPDWORD lpvpfnGetClassObject,
+ LPDWORD lpvpfnCanUnloadNow,
+ LPDWORD lpvhmodule );
+
+ STDMETHOD(UnloadProcDll)( DWORD vhmodule );
+
+
+ STDMETHOD(CallGetClassObject)( DWORD vpfnGetClassObject,
+ REFCLSID rclsid,
+ REFIID riid,
+ LPVOID FAR *ppv );
+
+ STDMETHOD(CallCanUnloadNow)( DWORD vpfnCanUnloadNow );
+ STDMETHOD(GetThunkManager)( IThunkManager **pThkMgr);
+
+ // Used to launch OLE 1.0 servers when we're in Wow
+ STDMETHOD(WinExec16)(LPCOLESTR pszCommandLine, USHORT usShow);
+
+ //
+ // Called by the DDE code to convert incoming HWND's from
+ // 16 bit HWND's into 32-bit HWND's.
+ //
+ STDMETHOD_(HWND,ConvertHwndToFullHwnd)(HWND hwnd);
+
+ //
+ // Called by the DDE code to delete a metafile
+ //
+ STDMETHOD_(BOOL,FreeMetaFile)(HANDLE hmf);
+
+ // Called by Call Control to guarantee that a Yield happens
+ // when running in Wow.
+ STDMETHOD(YieldTask16)(void);
+
+ // Call Control Directed Yeild
+ STDMETHOD(DirectedYield)(DWORD dwCalleeTID);
+
+ // Called by OLE32 when it is shutting down (done on a per thread basis)
+ STDMETHOD_(void,PrepareForCleanup)(void);
+
+ STDMETHOD_(DWORD,GetAppCompatibilityFlags)(void);
+};
+
+typedef OleThunkWOW *LPOLETHUNKWOW,OLETHUNKWOW;
+
+//
+// OLE Thunk Application Compatability flags
+//
+
+#define OACF_CLIENTSITE_REF 0x80000000 // IOleObject::GetClientSite not ref'd
+ // Bug in Excel 5.0a
+#define OACF_RESETMENU 0x40000000 // IOleInPlaceFrame::RemoveMenu didn't
+ // do a OleSetMenuDescriptor(NULL).
+#define OACF_USEGDI 0x20000000 // Word 6 thinks bitmaps and palette
+ // objects are HGLOBALs, but they
+ // are really GDI objects. We'll patch
+ // this up for them.
+//
+// The following flag is set in olethunk\h\interop.hxx because it is used by
+// 16-bit binaries.
+// OACF_CORELTRASHMEM 0x10000000 // CorelDraw relies on the fact that
+// // OLE16 trashed memory during paste-
+// // link. Therefore, we'll go ahead
+// // and trash it for them if this
+// // flag is on.
+
+//
+// The original OLE32 version of the stdid table didn't clean up properly. Some apps cannot
+// handle the stdid calling after CoUninitialize. This flag prevents the stdid from doing so.
+// Word 6.0c is an example of this.
+//
+
+#define OACF_NO_UNINIT_CLEANUP 0x02000000 // Do not cleanup interfaces on CoUninitialize
+
+#define OACF_IVIEWOBJECT2 0x01000000 // use IViewObject2 instead IViewObject
+
+
+
+
+
+//
+// The following three routines are exported from OLE32.DLL, and
+// are called only by the WOW thunk layer.
+//
+
+STDAPI CoInitializeWOW( LPMALLOC vlpmalloc, LPOLETHUNKWOW lpthk );
+STDAPI CoUnloadingWOW(BOOL fProcessDetach);
+STDAPI OleInitializeWOW( LPMALLOC vlpmalloc, LPOLETHUNKWOW lpthk );
+STDAPI DllGetClassObjectWOW( REFCLSID rclsid, REFIID riid, LPVOID *ppv );
+
+extern void SetOleThunkWowPtr(LPOLETHUNKWOW lpthk);
+
+#endif //