1/* 2 * Copyright 2010 Vincent Povirk for CodeWeavers 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "unknwn.idl"; 20import "oaidl.idl"; 21import "ocidl.idl"; 22import "mscoree.idl"; 23 24cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") 25cpp_quote("#undef LoadLibrary") 26cpp_quote("#endif") 27 28[ 29 object, 30 local, 31 uuid(bd39d1d2-ba2f-486a-89b0-b4b0cb466891) 32] 33interface ICLRRuntimeInfo : IUnknown 34{ 35 HRESULT GetVersionString( 36 [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, 37 [in, out] DWORD *pcchBuffer); 38 39 HRESULT GetRuntimeDirectory( 40 [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, 41 [in, out] DWORD *pcchBuffer); 42 43 HRESULT IsLoaded( 44 [in] HANDLE hndProcess, 45 [out, retval] BOOL *pbLoaded); 46 47 HRESULT LoadErrorString( 48 [in] UINT iResourceID, 49 [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, 50 [in, out] DWORD *pcchBuffer, 51 [in] LONG iLocaleid); 52 53 HRESULT LoadLibrary( 54 [in] LPCWSTR pwzDllName, 55 [out, retval] HMODULE *phndModule); 56 57 HRESULT GetProcAddress( 58 [in] LPCSTR pszProcName, 59 [out, retval] LPVOID *ppProc); 60 61 HRESULT GetInterface( 62 [in] REFCLSID rclsid, 63 [in] REFIID riid, 64 [out, iid_is(riid), retval] LPVOID *ppUnk); 65 66 HRESULT IsLoadable( 67 [out, retval] BOOL *pbLoadable); 68 69 HRESULT SetDefaultStartupFlags( 70 [in] DWORD dwStartupFlags, 71 [in] LPCWSTR pwzHostConfigFile); 72 73 HRESULT GetDefaultStartupFlags( 74 [out] DWORD *pdwStartupFlags, 75 [out, size_is(*pcchHostConfigFile)] LPWSTR pwzHostConfigFile, 76 [in, out] DWORD *pcchHostConfigFile); 77 78 HRESULT BindAsLegacyV2Runtime(); 79 80 HRESULT IsStarted( 81 [out] BOOL *pbStarted, 82 [out] DWORD *pdwStartupFlags); 83}; 84 85typedef HRESULT (__stdcall *CallbackThreadSetFnPtr)(); 86typedef HRESULT (__stdcall *CallbackThreadUnsetFnPtr)(); 87 88typedef void (__stdcall *RuntimeLoadedCallbackFnPtr)( 89 ICLRRuntimeInfo *pRuntimeInfo, 90 CallbackThreadSetFnPtr pfnCallbackThreadSet, 91 CallbackThreadUnsetFnPtr pfnCallbackThreadUnset); 92 93cpp_quote("DEFINE_GUID(CLSID_CLRDebuggingLegacy, 0xDF8395B5,0xA4BA,0x450b,0xA7,0x7C,0xA9,0xA4,0x77,0x62,0xC5,0x20);") 94cpp_quote("DEFINE_GUID(CLSID_CLRMetaHost, 0x9280188d,0x0e8e,0x4867,0xb3,0x0c,0x7f,0xa8,0x38,0x84,0xe8,0xde);") 95 96[ 97 object, 98 local, 99 uuid(d332db9e-b9b3-4125-8207-a14884f53216) 100] 101interface ICLRMetaHost : IUnknown 102{ 103 HRESULT GetRuntime( 104 [in] LPCWSTR pwzVersion, 105 [in] REFIID iid, 106 [out, iid_is(iid), retval] LPVOID *ppRuntime); 107 108 HRESULT GetVersionFromFile( 109 [in] LPCWSTR pwzFilePath, 110 [out, size_is(*pcchBuffer)] LPWSTR pwzBuffer, 111 [in, out] DWORD *pcchBuffer); 112 113 HRESULT EnumerateInstalledRuntimes( 114 [out, retval] IEnumUnknown **ppEnumerator); 115 116 HRESULT EnumerateLoadedRuntimes( 117 [in] HANDLE hndProcess, 118 [out, retval] IEnumUnknown **ppEnumerator); 119 120 HRESULT RequestRuntimeLoadedNotification( 121 [in] RuntimeLoadedCallbackFnPtr pCallbackFunction); 122 123 HRESULT QueryLegacyV2RuntimeBinding( 124 [in] REFIID riid, 125 [out, iid_is(riid), retval] LPVOID *ppUnk); 126 127 HRESULT ExitProcess( 128 [in] INT32 iExitCode); 129}; 130 131cpp_quote("HRESULT WINAPI CLRCreateInstance(REFCLSID clsid, REFIID riid, LPVOID *ppInterface);") 132