1/* 2 * Copyright (C) 2007 Francois Gouget 3 * Copyright (C) 2008 Alistair Leslie-Hughes 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 18 */ 19 20import "unknwn.idl"; 21cpp_quote("/* FIXME: #include <gcghost.h> */") 22cpp_quote("/* FIXME: #include <ivalidator.h> */") 23 24cpp_quote("HRESULT WINAPI CorBindToRuntimeHost(LPCWSTR,LPCWSTR,LPCWSTR,VOID*,DWORD,REFCLSID,REFIID,LPVOID*);") 25cpp_quote("void WINAPI CorExitProcess(int);") 26cpp_quote("HRESULT WINAPI GetCORSystemDirectory(LPWSTR,DWORD,DWORD*);") 27cpp_quote("HRESULT WINAPI GetCORVersion(LPWSTR,DWORD,DWORD*);") 28cpp_quote("HRESULT WINAPI GetRequestedRuntimeInfo(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,LPWSTR,DWORD,DWORD*,LPWSTR,DWORD,DWORD*);") 29cpp_quote("HRESULT WINAPI LoadLibraryShim(LPCWSTR,LPCWSTR,LPVOID,HMODULE*);") 30cpp_quote("#ifdef WINE_STRICT_PROTOTYPES") 31cpp_quote("typedef HRESULT (__stdcall *FLockClrVersionCallback)(void);") 32cpp_quote("#else") 33cpp_quote("typedef HRESULT (__stdcall *FLockClrVersionCallback)();") 34cpp_quote("#endif") 35cpp_quote("HRESULT WINAPI LockClrVersion(FLockClrVersionCallback,FLockClrVersionCallback*,FLockClrVersionCallback*);") 36 37typedef void* HDOMAINENUM; 38 39typedef enum RUNTIME_INFO_FLAGS { 40 RUNTIME_INFO_UPGRADE_VERSION = 0x1, 41 RUNTIME_INFO_REQUEST_IA64 = 0x2, 42 RUNTIME_INFO_REQUEST_AMD64 = 0x4, 43 RUNTIME_INFO_REQUEST_X86 = 0x8, 44 RUNTIME_INFO_DONT_RETURN_DIRECTORY = 0x10, 45 RUNTIME_INFO_DONT_RETURN_VERSION = 0x20, 46 RUNTIME_INFO_DONT_SHOW_ERROR_DIALOG = 0x40 47} RUNTIME_INFO_FLAGS; 48 49typedef HRESULT (__stdcall *FExecuteInAppDomainCallback)([in] void* cookie); 50 51[ 52 uuid(F31D1788-C397-4725-87A5-6AF3472C2791), 53 version(1.0), 54 object, 55 local 56] 57interface IGCThreadControl : IUnknown 58{ 59 HRESULT ThreadIsBlockingForSuspension(); 60 61 HRESULT SuspensionStarting(); 62 63 HRESULT SuspensionEnding(DWORD generation); 64} 65 66[ 67 uuid(5513D564-8374-4cb9-AED9-0083F4160A1D), 68 version(1.1), 69 local, 70 object 71] 72interface IGCHostControl : IUnknown 73{ 74 HRESULT RequestVirtualMemLimit([in] SIZE_T nMaxVirtualMemMB, 75 [in, out] SIZE_T* nNewMaxVirtualMemMB); 76} 77 78[ 79 uuid(23D86786-0BB5-4774-8FB5-E3522ADD6246), 80 version(1.0), 81 local, 82 object 83] 84interface IDebuggerThreadControl : IUnknown 85{ 86 HRESULT ThreadIsBlockingForDebugger(); 87 88 HRESULT ReleaseAllRuntimeThreads(); 89 90 HRESULT StartBlockingForDebugger(DWORD dwUnused); 91} 92 93[ 94 uuid(5C2B07A5-1E98-11d3-872F-00C04F79ED0D), 95 version(1.0), 96 local, 97 object 98] 99interface ICorConfiguration : IUnknown 100{ 101 HRESULT SetGCThreadControl([in] IGCThreadControl* GCThreadControl); 102 103 HRESULT SetGCHostControl([in] IGCHostControl* GCHostControl); 104 105 HRESULT SetDebuggerThreadControl([in] IDebuggerThreadControl* debuggerThreadControl); 106 107 HRESULT AddDebuggerSpecialThread([in] DWORD specialThreadId); 108} 109 110[ 111 uuid(9065597E-D1A1-4fb2-B6BA-7E1FCE230F61), 112 version(1.0), 113 local 114] 115interface ICLRControl : IUnknown 116{ 117 HRESULT GetCLRManager([in] REFIID riid, [out] void **ppObject); 118 119 HRESULT SetAppDomainManagerType([in] LPCWSTR appDomainManagerAssembly, 120 [in] LPCWSTR appDomainManagerType); 121} 122 123[ 124 uuid(02CA073C-7079-4860-880A-C2F7A449C991), 125 version(1.0), 126 local 127] 128interface IHostControl : IUnknown 129{ 130 HRESULT GetHostManager( [in] REFIID riid, [out] void **ppObject); 131 132 HRESULT SetAppDomainManager([in] DWORD appDomainID, 133 [in] IUnknown* appDomainManager); 134} 135 136cpp_quote("DEFINE_GUID(CLSID_CorRuntimeHost, 0xcb2f6723,0xab3a,0x11d2,0x9c,0x40,0x00,0xc0,0x4f,0xa3,0x0a,0x3e);") 137 138[ 139 uuid(CB2F6722-AB3A-11d2-9C40-00C04FA30A3E), 140 version(1.0), 141 local, 142 object 143] 144interface ICorRuntimeHost : IUnknown 145{ 146 HRESULT CreateLogicalThreadState(); 147 HRESULT DeleteLogicalThreadState(); 148 HRESULT SwitchInLogicalThreadState([in] DWORD *fiberCookie); 149 150 HRESULT SwitchOutLogicalThreadState([out] DWORD **fiberCookie); 151 152 HRESULT LocksHeldByLogicalThread( [out] DWORD *pCount ); 153 154 HRESULT MapFile([in] HANDLE hFile, [out] HMODULE* mapAddress); 155 156 HRESULT GetConfiguration([out] ICorConfiguration** pConfiguration); 157 158 HRESULT Start(); 159 160 HRESULT Stop(); 161 162 HRESULT CreateDomain([in] LPCWSTR friendlyName, 163 [in] IUnknown* identityArray, 164 [out] IUnknown** appDomain); 165 166 HRESULT GetDefaultDomain([out] IUnknown** pAppDomain); 167 168 HRESULT EnumDomains([out] HDOMAINENUM *hEnum); 169 170 HRESULT NextDomain([in] HDOMAINENUM hEnum, [out] IUnknown** appDomain); 171 172 HRESULT CloseEnum([in] HDOMAINENUM hEnum); 173 174 HRESULT CreateDomainEx([in] LPCWSTR friendlyName, 175 [in] IUnknown* setup, 176 [in] IUnknown* evidence, 177 [out] IUnknown** appDomain); 178 179 HRESULT CreateDomainSetup([out] IUnknown** appDomainSetup); 180 181 HRESULT CreateEvidence([out] IUnknown** evidence); 182 183 HRESULT UnloadDomain([in] IUnknown* appDomain); 184 185 HRESULT CurrentDomain([out] IUnknown** appDomain); 186}; 187 188cpp_quote("DEFINE_GUID(CLSID_CLRRuntimeHost, 0x90f1a06e,0x7712,0x4762,0x86,0xb5,0x7a,0x5e,0xba,0x6b,0xdb,0x02);") 189 190[ 191 uuid(90f1a06c-7712-4762-86b5-7a5eba6bdb02), 192 local, 193 object 194] 195interface ICLRRuntimeHost : IUnknown 196{ 197 HRESULT Start(); 198 199 HRESULT Stop(); 200 201 HRESULT SetHostControl([in] IHostControl *pHostControl); 202 203 HRESULT GetCLRControl([out] ICLRControl **pCLRControl); 204 205 HRESULT UnloadAppDomain([in] DWORD dwAppDomainId, 206 [in] BOOL fWaitUntilDone); 207 208 HRESULT ExecuteInAppDomain([in] DWORD dwAppDomainId, 209 [in] FExecuteInAppDomainCallback pCallback, 210 [in] void *cookie); 211 212 HRESULT GetCurrentAppDomainId([out] DWORD *pdwAppDomainId); 213 214 HRESULT ExecuteApplication([in] LPCWSTR pwzAppFullName, 215 [in] DWORD dwManifestPaths, 216 [in] LPCWSTR *ppwzManifestPaths, 217 [in] DWORD dwActivationData, 218 [in] LPCWSTR *ppwzActivationData, 219 [out] int *pReturnValue); 220 221 HRESULT ExecuteInDefaultAppDomain([in] LPCWSTR pwzAssemblyPath, 222 [in] LPCWSTR pwzTypeName, 223 [in] LPCWSTR pwzMethodName, 224 [in] LPCWSTR pwzArgument, 225 [out] DWORD *pReturnValue); 226} 227 228[ 229 uuid(C3FCC19E-A970-11d2-8B5A-00A0C9B7C9C4), 230 local, 231 object 232] 233interface IManagedObject : IUnknown 234{ 235 HRESULT GetSerializedBuffer([out] BSTR *pBSTR); 236 237 HRESULT GetObjectIdentity([out] BSTR *pBSTRGUID, 238 [out] int *AppDomainID, 239 [out] int *pCCW); 240} 241