//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1993. // // File: Comdthk.c (16 bit target) // // Contents: CompObj Directly Thunked APIs // // Functions: // // History: 16-Dec-93 JohannP Created // 07-Mar-94 BobDay Moved into COMTHUNK.C from COMAPI.CXX // //-------------------------------------------------------------------------- #include #pragma hdrstop #include #include STDAPI_(BOOL) GUIDFromString(LPCSTR lpsz, LPGUID pguid); //+--------------------------------------------------------------------------- // // Function: Straight thunk routines // // Synopsis: The following routines do not need to do any special // processing on the 16-bit side so they thunk straight // through // // History: 18-Feb-94 JohannP Created // // Notes: "Review to ensure these don't have to do any work" // 15-Feb-2000 I'm pretty sure they don't. JohnDoty // //---------------------------------------------------------------------------- //+--------------------------------------------------------------------------- // // Function: CLSIDFromString, Remote // // History: Straight from OLE2 sources // //---------------------------------------------------------------------------- STDAPI CLSIDFromString(LPSTR lpsz, LPCLSID pclsid) { HRESULT hr; thkDebugOut((DEB_ITRACE, "CLSIDFromString\n")); // // The 16-bit OLE2 application "Family Tree Maker" always passes a bad // string to CLSIDFromString. We need to make sure we fail in the exact // same way with the interop layer. This will also provide a speed // improvement since we only need to remote to the 32bit version of // CLSIDFromString when the string provided does not start with '{'. // if (lpsz[0] == '{') return GUIDFromString(lpsz, pclsid) ? NOERROR : ResultFromScode(CO_E_CLASSSTRING); // Note: Corel calls this function prior to calling // CoInitialize so use CheckInit return (HRESULT)CallObjectInWOWCheckInit(THK_API_METHOD(THK_API_CLSIDFromString), PASCAL_STACK_PTR(lpsz)); } //+--------------------------------------------------------------------------- // // Function: CoGetClassObject, Remote // // Synopsis: // // Effects: // // Arguments: [rclsid] -- // [dwClsContext] -- // [pvReserved] -- // [riid] -- // [ppv] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID FAR* ppv) { thkDebugOut((DEB_ITRACE, " CoGetClassObject\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoGetClassObject), PASCAL_STACK_PTR(rclsid) ); } //+--------------------------------------------------------------------------- // // Function: CoRegisterClassObject, Remote // // Synopsis: // // Effects: // // Arguments: [rclsid] -- // [pUnk] -- // [dwClsContext] -- // [flags] -- // [lpdwRegister] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister) { thkDebugOut((DEB_ITRACE, " CoRegisterClassObject\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoRegisterClassObject), PASCAL_STACK_PTR(rclsid)); } //+--------------------------------------------------------------------------- // // Function: CoRevokeClassObject, Remote // // Synopsis: // // Effects: // // Arguments: [dwRegister] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoRevokeClassObject(DWORD dwRegister) { thkDebugOut((DEB_ITRACE, " CoRevokeClassObject\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoRevokeClassObject), PASCAL_STACK_PTR(dwRegister) ); } //+--------------------------------------------------------------------------- // // Function: CoMarshalInterface, Unknown // // Synopsis: // // Effects: // // Arguments: [pStm] -- // [riid] -- // [pUnk] -- // [dwDestContext] -- // [pvDestContext] -- // [mshlflags] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoMarshalInterface(LPSTREAM pStm, REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags) { thkDebugOut((DEB_ITRACE, " CoMarshalInterface\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoMarshalInterface), PASCAL_STACK_PTR(pStm)); } //+--------------------------------------------------------------------------- // // Function: CoUnmarshalInterface, Unknown // // Synopsis: // // Effects: // // Arguments: [pStm] -- // [riid] -- // [ppv] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoUnmarshalInterface(LPSTREAM pStm, REFIID riid, LPVOID FAR* ppv) { thkDebugOut((DEB_ITRACE, "CoUnmarshalInterface\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoUnmarshalInterface), PASCAL_STACK_PTR(pStm)); } //+--------------------------------------------------------------------------- // // Function: CoReleaseMarshalData, Unknown // // Synopsis: // // Effects: // // Arguments: [pStm] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoReleaseMarshalData(LPSTREAM pStm) { thkDebugOut((DEB_ITRACE, "CoReleaseMarshalData\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoReleaseMarshalData), PASCAL_STACK_PTR(pStm)); } //+--------------------------------------------------------------------------- // // Function: CoDisconnectObject, Remote // // Synopsis: // // Effects: // // Arguments: [pUnk] -- // [dwReserved] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoDisconnectObject(LPUNKNOWN pUnk, DWORD dwReserved) { thkDebugOut((DEB_ITRACE, "CoDisconnectObject\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoDisconnectObject), PASCAL_STACK_PTR(pUnk)); } //+--------------------------------------------------------------------------- // // Function: CoLockObjectExternal, Remote // // Synopsis: // // Effects: // // Arguments: [pUnk] -- // [fLock] -- // [fLastUnlockReleases] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases) { thkDebugOut((DEB_ITRACE, "CoLockObjectExternal\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoLockObjectExternal), PASCAL_STACK_PTR(pUnk)); } //+--------------------------------------------------------------------------- // // Function: CoGetStandardMarshal, Remote // // Synopsis: // // Effects: // // Arguments: [riid] -- // [pUnk] -- // [dwDestContext] -- // [pvDestContext] -- // [mshlflags] -- // [ppMarshal] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoGetStandardMarshal(REFIID riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL FAR* ppMarshal) { thkDebugOut((DEB_ITRACE, "CoGetStandardMarshal\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoGetStandardMarshal), PASCAL_STACK_PTR(riid)); } //+--------------------------------------------------------------------------- // // Function: CoIsHandlerConnected, Remote // // Synopsis: // // Effects: // // Arguments: [pUnk] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN pUnk) { thkDebugOut((DEB_ITRACE, "CoIsHandlerConnected\n")); return (BOOL)CallObjectInWOW(THK_API_METHOD(THK_API_CoIsHandlerConnected), PASCAL_STACK_PTR(pUnk)); } //+--------------------------------------------------------------------------- // // Function: CoCreateInstance, Remote // // Synopsis: // // Effects: // // Arguments: [rclsid] -- // [pUnkOuter] -- // [dwClsContext] -- // [riid] -- // [ppv] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID FAR* ppv) { thkDebugOut((DEB_ITRACE, "CoCreateInstance\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoCreateInstance), PASCAL_STACK_PTR(rclsid) ); } //+--------------------------------------------------------------------------- // // Function: CoIsOle1Class, Remote // // Synopsis: // // Effects: // // Arguments: [rclsid] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI_(BOOL) CoIsOle1Class(REFCLSID rclsid) { thkDebugOut((DEB_ITRACE, "CoIsOle1Class\n")); return (BOOL)CallObjectInWOW(THK_API_METHOD(THK_API_CoIsOle1Class), PASCAL_STACK_PTR(rclsid) ); } //+--------------------------------------------------------------------------- // // Function: ProgIDFromCLSID, Remote // // Synopsis: // // Effects: // // Arguments: [clsid] -- // [lplpszProgID] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI ProgIDFromCLSID(REFCLSID clsid, LPSTR FAR* lplpszProgID) { thkDebugOut((DEB_ITRACE, "ProgIDFromCLSID\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_ProgIDFromCLSID), PASCAL_STACK_PTR(clsid) ); } //+--------------------------------------------------------------------------- // // Function: CLSIDFromProgID, Remote // // Synopsis: // // Effects: // // Arguments: [lpszProgID] -- // [lpclsid] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CLSIDFromProgID(LPCSTR lpszProgID, LPCLSID lpclsid) { thkDebugOut((DEB_ITRACE, "CLSIDFromProgID\n")); // Note: Word 6 calls this function prior to calling // CoInitialize so use CheckInit return (HRESULT)CallObjectInWOWCheckInit(THK_API_METHOD(THK_API_CLSIDFromProgID), PASCAL_STACK_PTR(lpszProgID) ); } //+--------------------------------------------------------------------------- // // Function: CoCreateGuid, Remote // // Synopsis: // // Effects: // // Arguments: [pguid] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoCreateGuid(GUID FAR *pguid) { thkDebugOut((DEB_ITRACE, "CoCreateGuid\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoCreateGuid), PASCAL_STACK_PTR(pguid)); } //+--------------------------------------------------------------------------- // // Function: CoFileTimeToDosDateTime, Remote // // Synopsis: // // Effects: // // Arguments: [lpFileTime] -- // [lpDosDate] -- // [lpDosTime] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI_(BOOL) CoFileTimeToDosDateTime(FILETIME FAR* lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime) { thkDebugOut((DEB_ITRACE, "CoFileTimeToDosDateTime\n")); return (BOOL)CallObjectInWOW(THK_API_METHOD(THK_API_CoFileTimeToDosDateTime), PASCAL_STACK_PTR(lpFileTime)); } //+--------------------------------------------------------------------------- // // Function: CoDosDateTimeToFileTime, Remote // // Synopsis: // // Effects: // // Arguments: [nDosDate] -- // [nDosTime] -- // [lpFileTime] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI_(BOOL) CoDosDateTimeToFileTime(WORD nDosDate, WORD nDosTime, FILETIME FAR* lpFileTime) { thkDebugOut((DEB_ITRACE, "CoDosDateTimeToFileTime\n")); return (BOOL)CallObjectInWOW(THK_API_METHOD(THK_API_CoDosDateTimeToFileTime), PASCAL_STACK_PTR(nDosDate)); } //+--------------------------------------------------------------------------- // // Function: CoFileTimeNow, Remote // // Synopsis: // // Effects: // // Arguments: [lpFileTime] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoFileTimeNow(FILETIME FAR* lpFileTime) { thkDebugOut((DEB_ITRACE, "CoFileTimeNow\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoFileTimeNow), PASCAL_STACK_PTR(lpFileTime)); } //+--------------------------------------------------------------------------- // // Function: CoRegisterMessageFilter, Remote // // Synopsis: // // Effects: // // Arguments: [lpMessageFilter] -- // [lplpMessageFilter] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter, LPMESSAGEFILTER FAR* lplpMessageFilter) { thkDebugOut((DEB_ITRACE, "CoRegisterMessageFilter\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoRegisterMessageFilter), PASCAL_STACK_PTR(lpMessageFilter) ); } //+--------------------------------------------------------------------------- // // Function: CoGetTreatAsClass, Remote // // Synopsis: // // Effects: // // Arguments: [clsidOld] -- // [pClsidNew] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoGetTreatAsClass(REFCLSID clsidOld, LPCLSID pClsidNew) { thkDebugOut((DEB_ITRACE, "CoGetTreatAsClass\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoGetTreatAsClass), PASCAL_STACK_PTR(clsidOld) ); } //+--------------------------------------------------------------------------- // // Function: CoTreatAsClass, Remote // // Synopsis: // // Effects: // // Arguments: [clsidOld] -- // [clsidNew] -- // // Requires: // // Returns: // // Signals: // // Modifies: // // Algorithm: // // History: 2-28-94 kevinro Created // // Notes: // //---------------------------------------------------------------------------- STDAPI CoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew) { thkDebugOut((DEB_ITRACE, "CoTreatAsClass\n")); return (HRESULT)CallObjectInWOW(THK_API_METHOD(THK_API_CoTreatAsClass), PASCAL_STACK_PTR(clsidOld) ); }