summaryrefslogtreecommitdiffstats
path: root/private/ole32/ih/hkole32x.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ole32/ih/hkole32x.h')
-rw-r--r--private/ole32/ih/hkole32x.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/private/ole32/ih/hkole32x.h b/private/ole32/ih/hkole32x.h
new file mode 100644
index 000000000..895c0e59c
--- /dev/null
+++ b/private/ole32/ih/hkole32x.h
@@ -0,0 +1,134 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1994.
+//
+// File: hkOle32x.h
+//
+// Contents: OLE 32 Extensions Header File
+//
+// Functions:
+//
+// History: 29-Nov-94 Garry Lenz Created
+//
+//--------------------------------------------------------------------------
+#ifndef _HKOLE32X_H_
+#define _HKOLE32X_H_
+
+#include <Windows.h>
+#include <TChar.h>
+
+interface IHookOleObject;
+
+STDAPI CoGetCurrentLogicalThreadId(GUID* pguidLogicalThreadId);
+STDAPI GetHookInterface(IHookOleObject** pIHookOleObject);
+STDAPI EnableHookObject(BOOL fNewState, BOOL* pfPrevState);
+
+#define GUID_STRING_LENGTH 39
+#define CLSID_STRING_LENGTH 39
+#define IID_STRING_LENGTH 39
+#define PROGID_STRING_LENGTH 40
+
+
+
+// used by INITHOOKOBJECT
+
+inline HRESULT CLSIDFromStringA(LPSTR lpsz, LPCLSID lpclsid)
+{
+ LPWSTR lpwsz = new WCHAR[(strlen(lpsz)+1)];
+ MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpsz, -1, lpwsz, lstrlenA(lpsz)+1);
+ HRESULT hr = CLSIDFromString(lpwsz, lpclsid);
+ delete lpwsz;
+ return hr;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#ifdef OLETOOLS
+// these are needed only by the tools, not internally by ole32. we ifdef
+// it here to maintain source compatibility.
+
+inline BOOL IsOle32ProcDefined(LPCSTR pszProcName)
+{
+ BOOL fResult = FALSE;
+ HINSTANCE hInstOle32 = LoadLibrary(__T("OLE32.DLL"));
+ if (hInstOle32)
+ {
+ if (GetProcAddress(hInstOle32, pszProcName) != NULL)
+ fResult = TRUE;
+ FreeLibrary(hInstOle32);
+ }
+ return fResult;
+}
+
+inline HINSTANCE CoLoadLibrary(LPSTR lpszLibName, BOOL bAutoFree)
+{
+ LPWSTR lpwsz = new WCHAR[(strlen(lpszLibName)+1)];
+ MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpszLibName, -1, lpwsz, lstrlenA(lpszLibName)+1);
+ HINSTANCE hInstance = CoLoadLibrary(lpwsz, bAutoFree);
+ delete lpwsz;
+ return hInstance;
+}
+
+inline HRESULT IIDFromString(LPSTR lpsz, LPIID lpiid)
+{
+ LPWSTR lpwsz = new WCHAR[(strlen(lpsz)+1)];
+ MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpsz, -1, lpwsz, lstrlenA(lpsz)+1);
+ HRESULT hr = IIDFromString(lpwsz, lpiid);
+ delete lpwsz;
+ return hr;
+}
+
+inline HRESULT StringFromIID(REFIID riid, LPSTR FAR* lplpsz)
+{
+ HRESULT hr = StringFromIID(riid, (LPWSTR*)lplpsz);
+ if (hr == S_OK)
+ {
+ WCHAR wsz[IID_STRING_LENGTH];
+ lstrcpyW(wsz, (LPWSTR)*lplpsz);
+ WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, wsz, -1, *lplpsz, lstrlenW(wsz), NULL, NULL);
+ }
+ return hr;
+}
+
+inline HRESULT StringFromCLSID(REFCLSID rclsid, LPSTR FAR* lplpsz)
+{
+ HRESULT hr = StringFromCLSID(rclsid, (LPWSTR*)lplpsz);
+ if (hr == S_OK)
+ {
+ WCHAR wsz[CLSID_STRING_LENGTH];
+ lstrcpyW(wsz, (LPWSTR)*lplpsz);
+ WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, wsz, -1, *lplpsz, lstrlenW(wsz), NULL, NULL);
+ }
+ return hr;
+}
+
+inline HRESULT ProgIDFromCLSID(REFCLSID rclsid, LPSTR FAR* lplpsz)
+{
+ HRESULT hr = ProgIDFromCLSID(rclsid, (LPWSTR*)lplpsz);
+ if (hr == S_OK)
+ {
+ WCHAR wsz[PROGID_STRING_LENGTH];
+ lstrcpyW(wsz, (LPWSTR)*lplpsz);
+ WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, wsz, -1, *lplpsz, lstrlenW(wsz), NULL, NULL);
+ }
+ return hr;
+}
+
+inline HRESULT CLSIDFromProgID(LPCSTR lpszProgID, LPCLSID lpclsid)
+{
+ LPWSTR lpwsz = new WCHAR[(strlen(lpszProgID)+1)];
+ MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpszProgID, -1, lpwsz, lstrlenA(lpszProgID)+1);
+ HRESULT hr = CLSIDFromProgID(lpwsz, lpclsid);
+ delete lpwsz;
+ return hr;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+#endif
+
+#endif // _HKOLE32X_H_