| /* |
| * Copyright 2010 Vincent Povirk for CodeWeavers |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "unknwn.idl"; |
| import "oaidl.idl"; |
| import "ocidl.idl"; |
| import "mscoree.idl"; |
| |
| cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") |
| cpp_quote("#undef LoadLibrary") |
| cpp_quote("#endif") |
| |
| typedef enum |
| { |
| METAHOST_POLICY_HIGHCOMPAT = 0, |
| METAHOST_POLICY_APPLY_UPGRADE_POLICY = 0x08, |
| METAHOST_POLICY_EMULATE_EXE_LAUNCH = 0x10, |
| METAHOST_POLICY_SHOW_ERROR_DIALOG = 0x20, |
| METAHOST_POLICY_USE_PROCESS_IMAGE_PATH = 0x40, |
| METAHOST_POLICY_ENSURE_SKU_SUPPORTED = 0x80 |
| } METAHOST_POLICY_FLAGS; |
| |
| typedef enum |
| { |
| CLR_DEBUGGING_MANAGED_EVENT_PENDING = 1 |
| } CLR_DEBUGGING_PROCESS_FLAGS; |
| |
| typedef struct _CLR_DEBUGGING_VERSION |
| { |
| WORD wStructVersion; |
| WORD wMajor; |
| WORD wMinor; |
| WORD wBuild; |
| WORD wRevision; |
| } CLR_DEBUGGING_VERSION; |
| |
| [ |
| object, |
| local, |
| uuid(bd39d1d2-ba2f-486a-89b0-b4b0cb466891) |
| ] |
| interface ICLRRuntimeInfo : IUnknown |
| { |
| HRESULT GetVersionString( |
| [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, |
| [in, out] DWORD *pcchBuffer); |
| |
| HRESULT GetRuntimeDirectory( |
| [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, |
| [in, out] DWORD *pcchBuffer); |
| |
| HRESULT IsLoaded( |
| [in] HANDLE hndProcess, |
| [out, retval] BOOL *pbLoaded); |
| |
| HRESULT LoadErrorString( |
| [in] UINT iResourceID, |
| [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, |
| [in, out] DWORD *pcchBuffer, |
| [in] LONG iLocaleid); |
| |
| HRESULT LoadLibrary( |
| [in] LPCWSTR pwzDllName, |
| [out, retval] HMODULE *phndModule); |
| |
| HRESULT GetProcAddress( |
| [in] LPCSTR pszProcName, |
| [out, retval] LPVOID *ppProc); |
| |
| HRESULT GetInterface( |
| [in] REFCLSID rclsid, |
| [in] REFIID riid, |
| [out, iid_is(riid), retval] LPVOID *ppUnk); |
| |
| HRESULT IsLoadable( |
| [out, retval] BOOL *pbLoadable); |
| |
| HRESULT SetDefaultStartupFlags( |
| [in] DWORD dwStartupFlags, |
| [in] LPCWSTR pwzHostConfigFile); |
| |
| HRESULT GetDefaultStartupFlags( |
| [out] DWORD *pdwStartupFlags, |
| [out, size_is(*pcchHostConfigFile)] LPWSTR pwzHostConfigFile, |
| [in, out] DWORD *pcchHostConfigFile); |
| |
| HRESULT BindAsLegacyV2Runtime(); |
| |
| HRESULT IsStarted( |
| [out] BOOL *pbStarted, |
| [out] DWORD *pdwStartupFlags); |
| }; |
| |
| typedef HRESULT (__stdcall *CallbackThreadSetFnPtr)(); |
| typedef HRESULT (__stdcall *CallbackThreadUnsetFnPtr)(); |
| |
| typedef void (__stdcall *RuntimeLoadedCallbackFnPtr)( |
| ICLRRuntimeInfo *pRuntimeInfo, |
| CallbackThreadSetFnPtr pfnCallbackThreadSet, |
| CallbackThreadUnsetFnPtr pfnCallbackThreadUnset); |
| |
| cpp_quote("DEFINE_GUID(CLSID_CLRDebuggingLegacy, 0xDF8395B5,0xA4BA,0x450b,0xA7,0x7C,0xA9,0xA4,0x77,0x62,0xC5,0x20);") |
| cpp_quote("DEFINE_GUID(CLSID_CLRMetaHost, 0x9280188d,0x0e8e,0x4867,0xb3,0x0c,0x7f,0xa8,0x38,0x84,0xe8,0xde);") |
| |
| [ |
| object, |
| local, |
| uuid(d332db9e-b9b3-4125-8207-a14884f53216) |
| ] |
| interface ICLRMetaHost : IUnknown |
| { |
| HRESULT GetRuntime( |
| [in] LPCWSTR pwzVersion, |
| [in] REFIID iid, |
| [out, iid_is(iid), retval] LPVOID *ppRuntime); |
| |
| HRESULT GetVersionFromFile( |
| [in] LPCWSTR pwzFilePath, |
| [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, |
| [in, out] DWORD *pcchBuffer); |
| |
| HRESULT EnumerateInstalledRuntimes( |
| [out, retval] IEnumUnknown **ppEnumerator); |
| |
| HRESULT EnumerateLoadedRuntimes( |
| [in] HANDLE hndProcess, |
| [out, retval] IEnumUnknown **ppEnumerator); |
| |
| HRESULT RequestRuntimeLoadedNotification( |
| [in] RuntimeLoadedCallbackFnPtr pCallbackFunction); |
| |
| HRESULT QueryLegacyV2RuntimeBinding( |
| [in] REFIID riid, |
| [out, iid_is(riid), retval] LPVOID *ppUnk); |
| |
| HRESULT ExitProcess( |
| [in] INT32 iExitCode); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(e2190695-77b2-492e-8e14-c4b3a7fdd593) |
| ] |
| interface ICLRMetaHostPolicy : IUnknown |
| { |
| HRESULT GetRequestedRuntime([in] METAHOST_POLICY_FLAGS dwPolicyFlags, |
| [in] LPCWSTR pwzBinary, [in] IStream *pCfgStream, |
| [in, out] LPWSTR pwzVersion, [in, out] DWORD *pcchVersion, |
| [out] LPWSTR pwzImageVersion, [out, in] DWORD *pcchImageVersion, |
| [out] DWORD *pdwConfigFlags, [in] REFIID riid, [retval, out] LPVOID *ppRuntime); |
| } |
| |
| [ |
| uuid(2ebcd49a-1b47-4a61-b13a-4a03701e594b) |
| ] |
| coclass CLRMetaHostPolicy |
| { |
| [default] interface ICLRMetaHostPolicy; |
| } |
| |
| [ |
| object, |
| local, |
| uuid(3151c08d-4d09-4f9b-8838-2880bf18fe51) |
| ] |
| interface ICLRDebuggingLibraryProvider : IUnknown |
| { |
| HRESULT ProvideLibrary([in] const WCHAR *pwszFileName, |
| [in] DWORD dwTimestamp, [in] DWORD dwSizeOfImage, |
| [out] HMODULE *phModule); |
| } |
| |
| [ |
| object, |
| local, |
| uuid(d28f3c5a-9634-4206-a509-477552eefb10) |
| ] |
| interface ICLRDebugging : IUnknown |
| { |
| HRESULT OpenVirtualProcess([in] ULONG64 moduleBaseAddress, |
| [in] IUnknown *pDataTarget, [in] ICLRDebuggingLibraryProvider *pLibraryProvider, |
| [in] CLR_DEBUGGING_VERSION *pMaxDebuggerSupportedVersion, |
| [in] REFIID riidProcess, [out] IUnknown **ppProcess, |
| [out, in] CLR_DEBUGGING_VERSION *pVersion, |
| [out] CLR_DEBUGGING_PROCESS_FLAGS *pdwFlags); |
| |
| HRESULT CanUnloadNow(HMODULE hModule); |
| } |
| |
| cpp_quote("HRESULT WINAPI CLRCreateInstance(REFCLSID clsid, REFIID riid, LPVOID *ppInterface);") |