diff --git a/src/coreclr/src/debug/daccess/daccess.cpp b/src/coreclr/src/debug/daccess/daccess.cpp index e999ec866f7d04..713dabd3b3726f 100644 --- a/src/coreclr/src/debug/daccess/daccess.cpp +++ b/src/coreclr/src/debug/daccess/daccess.cpp @@ -3297,6 +3297,10 @@ ClrDataAccess::QueryInterface(THIS_ { ifaceRet = static_cast(this); } + else if (IsEqualIID(interfaceId, __uuidof(ISOSDacInterface10))) + { + ifaceRet = static_cast(this); + } else { *iface = NULL; diff --git a/src/coreclr/src/debug/daccess/dacimpl.h b/src/coreclr/src/debug/daccess/dacimpl.h index c0809924bc3e1d..3e05dcb2de07f0 100644 --- a/src/coreclr/src/debug/daccess/dacimpl.h +++ b/src/coreclr/src/debug/daccess/dacimpl.h @@ -841,7 +841,8 @@ class ClrDataAccess public ISOSDacInterface6, public ISOSDacInterface7, public ISOSDacInterface8, - public ISOSDacInterface9 + public ISOSDacInterface9, + public ISOSDacInterface10 { public: ClrDataAccess(ICorDebugDataTarget * pTarget, ICLRDataTarget * pLegacyTarget=0); @@ -1209,6 +1210,12 @@ class ClrDataAccess // ISOSDacInterface9 virtual HRESULT STDMETHODCALLTYPE GetBreakingChangeVersion(int* pVersion); + // ISOSDacInterface10 + virtual HRESULT STDMETHODCALLTYPE GetObjectComWrappersData(CLRDATA_ADDRESS objAddr, CLRDATA_ADDRESS *rcw, unsigned int count, CLRDATA_ADDRESS *mowList, unsigned int *pNeeded); + virtual HRESULT STDMETHODCALLTYPE IsComWrappersCCW(CLRDATA_ADDRESS ccw, BOOL *isComWrappersCCW); + virtual HRESULT STDMETHODCALLTYPE GetComWrappersCCWData(CLRDATA_ADDRESS ccw, CLRDATA_ADDRESS *managedObject, int *refCount); + virtual HRESULT STDMETHODCALLTYPE IsComWrappersRCW(CLRDATA_ADDRESS rcw, BOOL *isComWrappersRCW); + virtual HRESULT STDMETHODCALLTYPE GetComWrappersRCWData(CLRDATA_ADDRESS rcw, CLRDATA_ADDRESS *identity); // // ClrDataAccess. // @@ -1475,6 +1482,8 @@ class ClrDataAccess #endif #ifdef FEATURE_COMWRAPPERS + BOOL DACIsComWrappersCCW(CLRDATA_ADDRESS ccwPtr); + TADDR DACGetManagedObjectWrapperFromCCW(CLRDATA_ADDRESS ccwPtr); HRESULT DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef); #endif diff --git a/src/coreclr/src/debug/daccess/enummem.cpp b/src/coreclr/src/debug/daccess/enummem.cpp index a746aa46b3d13d..0ed62846435519 100644 --- a/src/coreclr/src/debug/daccess/enummem.cpp +++ b/src/coreclr/src/debug/daccess/enummem.cpp @@ -1424,21 +1424,21 @@ HRESULT ClrDataAccess::DumpStowedExceptionObject(CLRDataEnumMemoryFlags flags, C OBJECTREF managedExceptionObject = NULL; -#ifdef FEATURE_COMINTEROP - // dump the managed exception object wrapped in CCW - // memory of the CCW object itself is dumped later by DacInstanceManager::DumpAllInstances - DacpCCWData ccwData; - GetCCWData(ccwPtr, &ccwData); // this call collects some memory implicitly - managedExceptionObject = OBJECTREF(CLRDATA_ADDRESS_TO_TADDR(ccwData.managedObject)); -#endif #ifdef FEATURE_COMWRAPPERS + OBJECTREF wrappedObjAddress; + if (DACTryGetComWrappersObjectFromCCW(ccwPtr, &wrappedObjAddress) == S_OK) + { + managedExceptionObject = wrappedObjAddress; + } +#endif +#ifdef FEATURE_COMINTEROP if (managedExceptionObject == NULL) { - OBJECTREF wrappedObjAddress; - if (DACTryGetComWrappersObjectFromCCW(ccwPtr, &wrappedObjAddress) == S_OK) - { - managedExceptionObject = wrappedObjAddress; - } + // dump the managed exception object wrapped in CCW + // memory of the CCW object itself is dumped later by DacInstanceManager::DumpAllInstances + DacpCCWData ccwData; + GetCCWData(ccwPtr, &ccwData); // this call collects some memory implicitly + managedExceptionObject = OBJECTREF(CLRDATA_ADDRESS_TO_TADDR(ccwData.managedObject)); } #endif DumpManagedExcepObject(flags, managedExceptionObject); diff --git a/src/coreclr/src/debug/daccess/request.cpp b/src/coreclr/src/debug/daccess/request.cpp index 5047421d595970..ec057708ba5e11 100644 --- a/src/coreclr/src/debug/daccess/request.cpp +++ b/src/coreclr/src/debug/daccess/request.cpp @@ -15,12 +15,46 @@ #include "typestring.h" #include #include + #ifdef FEATURE_COMINTEROP #include #endif // FEATURE_COMINTEROP +#ifdef FEATURE_COMWRAPPERS +#include #include +// Public contract for ExternalObjectContext, keep in sync with definition in +// interoplibinterface.cpp +struct ExternalObjectContextDACnterface +{ + INT_PTR sentinel; + PTR_VOID identity; + INT_PTR _padding1; + DWORD _padding2; + INT64 _padding3; +}; + +typedef DPTR(ExternalObjectContextDACnterface) PTR_ExternalObjectContext; + +// Public contract for ManagedObjectWrapper, keep in sync with definition in +// comwrappers.hpp +struct ManagedObjectWrapperDACInterface +{ + PTR_VOID managedObject; + INT32 _padding1; + INT32 _padding2; + INT_PTR _padding3; + INT_PTR _padding4; + INT_PTR _padding6; + LONGLONG _refCount; + INT32 _padding7; +}; + +typedef DPTR(ManagedObjectWrapperDACInterface) PTR_ManagedObjectWrapper; + +#endif // FEATURE_COMWRAPPERS + #ifndef TARGET_UNIX // It is unfortunate having to include this header just to get the definition of GenericModeBlock #include @@ -4071,32 +4105,26 @@ PTR_IUnknown ClrDataAccess::DACGetCOMIPFromCCW(PTR_ComCallWrapper pCCW, int vtab #endif #ifdef FEATURE_COMWRAPPERS -HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef) +BOOL ClrDataAccess::DACIsComWrappersCCW(CLRDATA_ADDRESS ccwPtr) { - if (ccwPtr == 0 || objRef == NULL) - return E_INVALIDARG; - - SOSDacEnter(); - // Read CCWs QI address and compare it to the managed object wrapper's implementation. + HRESULT hr = S_OK; ULONG32 bytesRead = 0; TADDR ccw = CLRDATA_ADDRESS_TO_TADDR(ccwPtr); TADDR vTableAddress = NULL; - IfFailGo(m_pTarget->ReadVirtual(ccw, (PBYTE)&vTableAddress, sizeof(TADDR), &bytesRead)); - if (bytesRead != sizeof(TADDR) + if (FAILED(m_pTarget->ReadVirtual(ccw, (PBYTE)&vTableAddress, sizeof(TADDR), &bytesRead)) + || bytesRead != sizeof(TADDR) || vTableAddress == NULL) { - hr = E_FAIL; - goto ErrExit; + return FALSE; } TADDR qiAddress = NULL; - IfFailGo(m_pTarget->ReadVirtual(vTableAddress, (PBYTE)&qiAddress, sizeof(TADDR), &bytesRead)); - if (bytesRead != sizeof(TADDR) + if (FAILED(m_pTarget->ReadVirtual(vTableAddress, (PBYTE)&qiAddress, sizeof(TADDR), &bytesRead)) + || bytesRead != sizeof(TADDR) || qiAddress == NULL) { - hr = E_FAIL; - goto ErrExit; + return FALSE; } @@ -4106,23 +4134,58 @@ HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, #endif if (qiAddress != GetEEFuncEntryPoint(ManagedObjectWrapper_QueryInterface)) + { + return FALSE; + } + + return TRUE; +} + +TADDR ClrDataAccess::DACGetManagedObjectWrapperFromCCW(CLRDATA_ADDRESS ccwPtr) +{ + if (!DACIsComWrappersCCW(ccwPtr)) + { + return NULL; + } + + ULONG32 bytesRead = 0; + TADDR managedObjectWrapperPtrPtr = ccwPtr & InteropLib::ABI::DispatchThisPtrMask; + TADDR managedObjectWrapperPtr = 0; + if (FAILED(m_pTarget->ReadVirtual(managedObjectWrapperPtrPtr, (PBYTE)&managedObjectWrapperPtr, sizeof(TADDR), &bytesRead)) + || bytesRead != sizeof(TADDR)) + { + return NULL; + } + + return managedObjectWrapperPtr; +} + +HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef) +{ + if (ccwPtr == 0 || objRef == NULL) + return E_INVALIDARG; + + SOSDacEnter(); + + if (!DACIsComWrappersCCW(ccwPtr)) { hr = E_FAIL; goto ErrExit; } + TADDR ccw = CLRDATA_ADDRESS_TO_TADDR(ccwPtr); // Mask the "dispatch pointer" to get a double pointer to the ManagedObjectWrapper TADDR managedObjectWrapperPtrPtr = ccw & InteropLib::ABI::DispatchThisPtrMask; // Return ManagedObjectWrapper as an OBJECTHANDLE. (The OBJECTHANDLE is guaranteed to live at offset 0). - TADDR managedObjectWrapperPtr; - IfFailGo(m_pTarget->ReadVirtual(managedObjectWrapperPtrPtr, (PBYTE)&managedObjectWrapperPtr, sizeof(TADDR), &bytesRead)); - if (bytesRead != sizeof(TADDR)) + TADDR managedObjectWrapperPtr = DACGetManagedObjectWrapperFromCCW(ccwPtr); + if (managedObjectWrapperPtr == NULL) { hr = E_FAIL; goto ErrExit; } + ULONG32 bytesRead = 0; OBJECTHANDLE handle; IfFailGo(m_pTarget->ReadVirtual(managedObjectWrapperPtr, (PBYTE)&handle, sizeof(OBJECTHANDLE), &bytesRead)); if (bytesRead != sizeof(OBJECTHANDLE)) @@ -4741,3 +4804,205 @@ HRESULT ClrDataAccess::GetBreakingChangeVersion(int* pVersion) *pVersion = SOS_BREAKING_CHANGE_VERSION; return S_OK; } + +HRESULT ClrDataAccess::GetObjectComWrappersData(CLRDATA_ADDRESS objAddr, CLRDATA_ADDRESS *rcw, unsigned int count, CLRDATA_ADDRESS *mowList, unsigned int *pNeeded) +{ +#ifdef FEATURE_COMWRAPPERS + if (objAddr == 0 ) + { + return E_INVALIDARG; + } + + if (count > 0 && mowList == NULL) + { + return E_INVALIDARG; + } + + SOSDacEnter(); + auto ComWrapperCallback = [](void *mocw, void *additionalData) + { + CQuickArrayList *comWrappers = (CQuickArrayList*)additionalData; + + comWrappers->Push(TO_CDADDR(mocw)); + + }; + + if (pNeeded != NULL) + { + *pNeeded = 0; + } + + if (rcw != NULL) + { + *rcw = 0; + } + + PTR_SyncBlock pSyncBlk = PTR_Object(TO_TADDR(objAddr))->PassiveGetSyncBlock(); + if (pSyncBlk != NULL) + { + PTR_InteropSyncBlockInfo pInfo = pSyncBlk->GetInteropInfoNoCreate(); + if (pInfo != NULL) + { + if (rcw != NULL) + { + *rcw = PTR_CDADDR(pInfo->m_externalComObjectContext); + } + + CQuickArrayList comWrappers; + pInfo->IterateComWrappers(ComWrapperCallback, (void *)&comWrappers); + + if (pNeeded != NULL) + { + *pNeeded = (unsigned int)comWrappers.Size(); + } + + for (SIZE_T pos = 0; pos < comWrappers.Size(); ++pos) + { + if (pos >= count) + { + hr = S_FALSE; + break; + } + + mowList[pos] = comWrappers[pos]; + } + } + else + { + hr = S_FALSE; + } + } + else + { + hr = S_FALSE; + } + + SOSDacLeave(); + return hr; +#else // FEATURE_COMWRAPPERS + return E_NOTIMPL; +#endif // FEATURE_COMWRAPPERS +} + +HRESULT ClrDataAccess::IsComWrappersCCW(CLRDATA_ADDRESS ccw, BOOL *isComWrappersCCW) +{ +#ifdef FEATURE_COMWRAPPERS + if (ccw == 0) + { + return E_INVALIDARG; + } + + SOSDacEnter(); + + if (isComWrappersCCW != NULL) + { + TADDR managedObjectWrapperPtr = DACGetManagedObjectWrapperFromCCW(ccw); + *isComWrappersCCW = managedObjectWrapperPtr != NULL; + hr = *isComWrappersCCW ? S_OK : S_FALSE; + } + + SOSDacLeave(); + return hr; +#else // FEATURE_COMWRAPPERS + return E_NOTIMPL; +#endif // FEATURE_COMWRAPPERS +} + +HRESULT ClrDataAccess::GetComWrappersCCWData(CLRDATA_ADDRESS ccw, CLRDATA_ADDRESS *managedObject, int *refCount) +{ +#ifdef FEATURE_COMWRAPPERS + if (ccw == 0) + { + return E_INVALIDARG; + } + + SOSDacEnter(); + + TADDR managedObjectWrapperPtr = DACGetManagedObjectWrapperFromCCW(ccw); + if (managedObjectWrapperPtr != NULL) + { + PTR_ManagedObjectWrapper pMOW(managedObjectWrapperPtr); + + if (managedObject != NULL) + { + OBJECTREF managedObjectRef; + if (SUCCEEDED(DACTryGetComWrappersObjectFromCCW(ccw, &managedObjectRef))) + { + *managedObject = PTR_HOST_TO_TADDR(managedObjectRef); + } + else + { + *managedObject = 0; + } + } + + if (refCount != NULL) + { + *refCount = (int)pMOW->_refCount; + } + } + else + { + // Not a ComWrappers CCW + hr = E_INVALIDARG; + } + + SOSDacLeave(); + return hr; +#else // FEATURE_COMWRAPPERS + return E_NOTIMPL; +#endif // FEATURE_COMWRAPPERS +} + +HRESULT ClrDataAccess::IsComWrappersRCW(CLRDATA_ADDRESS rcw, BOOL *isComWrappersRCW) +{ +#ifdef FEATURE_COMWRAPPERS + if (rcw == 0) + { + return E_INVALIDARG; + } + + SOSDacEnter(); + + PTR_ExternalObjectContext pEOC(TO_TADDR(rcw)); + if (isComWrappersRCW != NULL) + { + *isComWrappersRCW = pEOC->sentinel == ExternalObjectContextSentinelValue; + hr = *isComWrappersRCW ? S_OK : S_FALSE; + } + + SOSDacLeave(); + return hr; +#else // FEATURE_COMWRAPPERS + return E_NOTIMPL; +#endif // FEATURE_COMWRAPPERS +} + +HRESULT ClrDataAccess::GetComWrappersRCWData(CLRDATA_ADDRESS rcw, CLRDATA_ADDRESS *identity) +{ +#ifdef FEATURE_COMWRAPPERS + if (rcw == 0) + { + return E_INVALIDARG; + } + + SOSDacEnter(); + + PTR_ExternalObjectContext pEOC(TO_TADDR(rcw)); + if (pEOC->sentinel != ExternalObjectContextSentinelValue) + { + // Not a ComWrappers RCW + hr = E_INVALIDARG; + } + + if (identity != NULL) + { + *identity = PTR_CDADDR(pEOC->identity); + } + + SOSDacLeave(); + return hr; +#else // FEATURE_COMWRAPPERS + return E_NOTIMPL; +#endif // FEATURE_COMWRAPPERS +} diff --git a/src/coreclr/src/inc/sospriv.idl b/src/coreclr/src/inc/sospriv.idl index 770d5b56f749cc..dae0a4ff520888 100644 --- a/src/coreclr/src/inc/sospriv.idl +++ b/src/coreclr/src/inc/sospriv.idl @@ -424,3 +424,17 @@ interface ISOSDacInterface9 : IUnknown { HRESULT GetBreakingChangeVersion(int* pVersion); } + +[ + object, + local, + uuid(90B8FCC3-7251-4B0A-AE3D-5C13A67EC9AA) +] +interface ISOSDacInterface10 : IUnknown +{ + HRESULT GetObjectComWrappersData(CLRDATA_ADDRESS objAddr, CLRDATA_ADDRESS *rcw, unsigned int count, CLRDATA_ADDRESS *mowList, unsigned int *pNeeded); + HRESULT IsComWrappersCCW(CLRDATA_ADDRESS ccw, BOOL *isComWrappersCCW); + HRESULT GetComWrappersCCWData(CLRDATA_ADDRESS ccw, CLRDATA_ADDRESS *managedObject, int *refCount); + HRESULT IsComWrappersRCW(CLRDATA_ADDRESS rcw, BOOL *isComWrappersRCW); + HRESULT GetComWrappersRCWData(CLRDATA_ADDRESS rcw, CLRDATA_ADDRESS *identity); +} diff --git a/src/coreclr/src/interop/comwrappers.hpp b/src/coreclr/src/interop/comwrappers.hpp index 8535bd9f18e9e8..055906511b978e 100644 --- a/src/coreclr/src/interop/comwrappers.hpp +++ b/src/coreclr/src/interop/comwrappers.hpp @@ -34,6 +34,7 @@ namespace ABI // Class for wrapping a managed object and projecting it in a non-managed environment class ManagedObjectWrapper { + friend constexpr size_t RefCountOffset(); public: Volatile Target; @@ -116,8 +117,21 @@ class ManagedObjectWrapper /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR * __RPC_FAR * ppvObject); ULONG AddRef(void); ULONG Release(void); + }; +// These Sentinel and Identity are used by the DAC, any changes to the layout must be updated on the DAC side (request.cpp) +static constexpr size_t DACTargetOffset = 0; +static_assert(offsetof(ManagedObjectWrapper, Target) == DACTargetOffset, "Keep in sync with DAC interfaces"); +static constexpr size_t DACRefCountOffset = (4 * sizeof(intptr_t)) + (2 * sizeof(int32_t)); +static constexpr size_t RefCountOffset() +{ + // _refCount is a private field and offsetof won't let you look at private fields. To overcome + // this RefCountOffset() is a friend function. + return offsetof(ManagedObjectWrapper, _refCount); +} +static_assert(RefCountOffset() == DACRefCountOffset, "Keep in sync with DAC interfaces"); + // ABI contract. This below offset is assumed in managed code. ABI_ASSERT(offsetof(ManagedObjectWrapper, Target) == 0); diff --git a/src/coreclr/src/pal/prebuilt/idl/sospriv_i.cpp b/src/coreclr/src/pal/prebuilt/idl/sospriv_i.cpp index ee2cd1d82010b3..44e6f3ca739e09 100644 --- a/src/coreclr/src/pal/prebuilt/idl/sospriv_i.cpp +++ b/src/coreclr/src/pal/prebuilt/idl/sospriv_i.cpp @@ -105,6 +105,10 @@ MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface8,0xc12f35a9,0xe55c,0x4520,0xa8,0x94,0 MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface9,0x4eca42d8,0x7e7b,0x4c8a,0xa1,0x16,0x7b,0xfb,0xf6,0x92,0x92,0x67); + +MIDL_DEFINE_GUID(IID, IID_ISOSDacInterface10,0x90B8FCC3,0x7251,0x4B0A,0xAE,0x3D,0x5C,0x13,0xA6,0x7E,0xC9,0xAA); + + #undef MIDL_DEFINE_GUID #ifdef __cplusplus diff --git a/src/coreclr/src/pal/prebuilt/inc/sospriv.h b/src/coreclr/src/pal/prebuilt/inc/sospriv.h index 6fe59addcfe218..72b1871e40f0cb 100644 --- a/src/coreclr/src/pal/prebuilt/inc/sospriv.h +++ b/src/coreclr/src/pal/prebuilt/inc/sospriv.h @@ -4,13 +4,11 @@ /* File created by MIDL compiler version 8.01.0622 */ -/* at Mon Jan 18 19:14:07 2038 - */ -/* Compiler settings for C:/git/runtime/src/coreclr/src/inc/sospriv.idl: - Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622 +/* Compiler settings for sospriv.idl: + Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622 protocol : dce , ms_ext, c_ext, robust - error checks: allocation ref bounds_check enum stub_data - VC __declspec() decoration level: + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: __declspec(uuid()), __declspec(selectany), __declspec(novtable) DECLSPEC_UUID(), MIDL_INTERFACE() */ @@ -43,7 +41,7 @@ #pragma once #endif -/* Forward Declarations */ +/* Forward Declarations */ #ifndef __ISOSEnum_FWD_DEFINED__ #define __ISOSEnum_FWD_DEFINED__ @@ -129,17 +127,31 @@ typedef interface ISOSDacInterface8 ISOSDacInterface8; #endif /* __ISOSDacInterface8_FWD_DEFINED__ */ +#ifndef __ISOSDacInterface9_FWD_DEFINED__ +#define __ISOSDacInterface9_FWD_DEFINED__ +typedef interface ISOSDacInterface9 ISOSDacInterface9; + +#endif /* __ISOSDacInterface9_FWD_DEFINED__ */ + + +#ifndef __ISOSDacInterface10_FWD_DEFINED__ +#define __ISOSDacInterface10_FWD_DEFINED__ +typedef interface ISOSDacInterface10 ISOSDacInterface10; + +#endif /* __ISOSDacInterface10_FWD_DEFINED__ */ + + /* header files for imported files */ #include "unknwn.h" #include "xclrdata.h" #ifdef __cplusplus extern "C"{ -#endif +#endif /* interface __MIDL_itf_sospriv_0000_0000 */ -/* [local] */ +/* [local] */ @@ -183,24 +195,24 @@ typedef int VCSHeapType; #endif typedef enum { TYPEDEFTOMETHODTABLE, TYPEREFTOMETHODTABLE } ModuleMapType; typedef enum {IndcellHeap, LookupHeap, ResolveHeap, DispatchHeap, CacheEntryHeap} VCSHeapType; -typedef void ( *MODULEMAPTRAVERSE )( +typedef void ( *MODULEMAPTRAVERSE )( UINT index, CLRDATA_ADDRESS methodTable, LPVOID token); -typedef void ( *VISITHEAP )( +typedef void ( *VISITHEAP )( CLRDATA_ADDRESS blockData, size_t blockSize, BOOL blockIsCurrentBlock); -typedef BOOL ( *VISITRCWFORCLEANUP )( +typedef BOOL ( *VISITRCWFORCLEANUP )( CLRDATA_ADDRESS RCW, CLRDATA_ADDRESS Context, CLRDATA_ADDRESS Thread, BOOL bIsFreeThreaded, LPVOID token); -typedef BOOL ( *DUMPEHINFO )( +typedef BOOL ( *DUMPEHINFO )( UINT clauseIndex, UINT totalClauses, struct DACEHInfo *pEHInfo, @@ -230,57 +242,57 @@ extern RPC_IF_HANDLE __MIDL_itf_sospriv_0000_0000_v0_0_s_ifspec; #define __ISOSEnum_INTERFACE_DEFINED__ /* interface ISOSEnum */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSEnum; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("286CA186-E763-4F61-9760-487D43AE4341") ISOSEnum : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE Skip( + virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ unsigned int count) = 0; - + virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCount( + + virtual HRESULT STDMETHODCALLTYPE GetCount( /* [out] */ unsigned int *pCount) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSEnumVtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSEnum * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSEnum * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSEnum * This); - - HRESULT ( STDMETHODCALLTYPE *Skip )( + + HRESULT ( STDMETHODCALLTYPE *Skip )( ISOSEnum * This, /* [in] */ unsigned int count); - - HRESULT ( STDMETHODCALLTYPE *Reset )( + + HRESULT ( STDMETHODCALLTYPE *Reset )( ISOSEnum * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( + + HRESULT ( STDMETHODCALLTYPE *GetCount )( ISOSEnum * This, /* [out] */ unsigned int *pCount); - + END_INTERFACE } ISOSEnumVtbl; @@ -289,29 +301,29 @@ EXTERN_C const IID IID_ISOSEnum; CONST_VTBL struct ISOSEnumVtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSEnum_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSEnum_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSEnum_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSEnum_Skip(This,count) \ - ( (This)->lpVtbl -> Skip(This,count) ) + ( (This)->lpVtbl -> Skip(This,count) ) #define ISOSEnum_Reset(This) \ - ( (This)->lpVtbl -> Reset(This) ) + ( (This)->lpVtbl -> Reset(This) ) #define ISOSEnum_GetCount(This,pCount) \ - ( (This)->lpVtbl -> GetCount(This,pCount) ) + ( (This)->lpVtbl -> GetCount(This,pCount) ) #endif /* COBJMACROS */ @@ -328,60 +340,60 @@ EXTERN_C const IID IID_ISOSEnum; #define __ISOSHandleEnum_INTERFACE_DEFINED__ /* interface ISOSHandleEnum */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSHandleEnum; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("3E269830-4A2B-4301-8EE2-D6805B29B2FA") ISOSHandleEnum : public ISOSEnum { public: - virtual HRESULT STDMETHODCALLTYPE Next( + virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ unsigned int count, /* [length_is][size_is][out] */ SOSHandleData handles[ ], /* [out] */ unsigned int *pNeeded) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSHandleEnumVtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSHandleEnum * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSHandleEnum * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSHandleEnum * This); - - HRESULT ( STDMETHODCALLTYPE *Skip )( + + HRESULT ( STDMETHODCALLTYPE *Skip )( ISOSHandleEnum * This, /* [in] */ unsigned int count); - - HRESULT ( STDMETHODCALLTYPE *Reset )( + + HRESULT ( STDMETHODCALLTYPE *Reset )( ISOSHandleEnum * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( + + HRESULT ( STDMETHODCALLTYPE *GetCount )( ISOSHandleEnum * This, /* [out] */ unsigned int *pCount); - - HRESULT ( STDMETHODCALLTYPE *Next )( + + HRESULT ( STDMETHODCALLTYPE *Next )( ISOSHandleEnum * This, /* [in] */ unsigned int count, /* [length_is][size_is][out] */ SOSHandleData handles[ ], /* [out] */ unsigned int *pNeeded); - + END_INTERFACE } ISOSHandleEnumVtbl; @@ -390,33 +402,33 @@ EXTERN_C const IID IID_ISOSHandleEnum; CONST_VTBL struct ISOSHandleEnumVtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSHandleEnum_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSHandleEnum_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSHandleEnum_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSHandleEnum_Skip(This,count) \ - ( (This)->lpVtbl -> Skip(This,count) ) + ( (This)->lpVtbl -> Skip(This,count) ) #define ISOSHandleEnum_Reset(This) \ - ( (This)->lpVtbl -> Reset(This) ) + ( (This)->lpVtbl -> Reset(This) ) #define ISOSHandleEnum_GetCount(This,pCount) \ - ( (This)->lpVtbl -> GetCount(This,pCount) ) + ( (This)->lpVtbl -> GetCount(This,pCount) ) #define ISOSHandleEnum_Next(This,count,handles,pNeeded) \ - ( (This)->lpVtbl -> Next(This,count,handles,pNeeded) ) + ( (This)->lpVtbl -> Next(This,count,handles,pNeeded) ) #endif /* COBJMACROS */ @@ -430,18 +442,18 @@ EXTERN_C const IID IID_ISOSHandleEnum; /* interface __MIDL_itf_sospriv_0000_0002 */ -/* [local] */ +/* [local] */ #ifndef _SOS_StackReference_ #define _SOS_StackReference_ -typedef +typedef enum SOSStackSourceType { SOS_StackSourceIP = 0, - SOS_StackSourceFrame = ( SOS_StackSourceIP + 1 ) + SOS_StackSourceFrame = ( SOS_StackSourceIP + 1 ) } SOSStackSourceType; -typedef +typedef enum SOSRefFlags { SOSRefInterior = 1, @@ -478,60 +490,60 @@ extern RPC_IF_HANDLE __MIDL_itf_sospriv_0000_0002_v0_0_s_ifspec; #define __ISOSStackRefErrorEnum_INTERFACE_DEFINED__ /* interface ISOSStackRefErrorEnum */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSStackRefErrorEnum; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("774F4E1B-FB7B-491B-976D-A8130FE355E9") ISOSStackRefErrorEnum : public ISOSEnum { public: - virtual HRESULT STDMETHODCALLTYPE Next( + virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ unsigned int count, /* [length_is][size_is][out] */ SOSStackRefError ref[ ], /* [out] */ unsigned int *pFetched) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSStackRefErrorEnumVtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSStackRefErrorEnum * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSStackRefErrorEnum * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSStackRefErrorEnum * This); - - HRESULT ( STDMETHODCALLTYPE *Skip )( + + HRESULT ( STDMETHODCALLTYPE *Skip )( ISOSStackRefErrorEnum * This, /* [in] */ unsigned int count); - - HRESULT ( STDMETHODCALLTYPE *Reset )( + + HRESULT ( STDMETHODCALLTYPE *Reset )( ISOSStackRefErrorEnum * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( + + HRESULT ( STDMETHODCALLTYPE *GetCount )( ISOSStackRefErrorEnum * This, /* [out] */ unsigned int *pCount); - - HRESULT ( STDMETHODCALLTYPE *Next )( + + HRESULT ( STDMETHODCALLTYPE *Next )( ISOSStackRefErrorEnum * This, /* [in] */ unsigned int count, /* [length_is][size_is][out] */ SOSStackRefError ref[ ], /* [out] */ unsigned int *pFetched); - + END_INTERFACE } ISOSStackRefErrorEnumVtbl; @@ -540,33 +552,33 @@ EXTERN_C const IID IID_ISOSStackRefErrorEnum; CONST_VTBL struct ISOSStackRefErrorEnumVtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSStackRefErrorEnum_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSStackRefErrorEnum_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSStackRefErrorEnum_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSStackRefErrorEnum_Skip(This,count) \ - ( (This)->lpVtbl -> Skip(This,count) ) + ( (This)->lpVtbl -> Skip(This,count) ) #define ISOSStackRefErrorEnum_Reset(This) \ - ( (This)->lpVtbl -> Reset(This) ) + ( (This)->lpVtbl -> Reset(This) ) #define ISOSStackRefErrorEnum_GetCount(This,pCount) \ - ( (This)->lpVtbl -> GetCount(This,pCount) ) + ( (This)->lpVtbl -> GetCount(This,pCount) ) #define ISOSStackRefErrorEnum_Next(This,count,ref,pFetched) \ - ( (This)->lpVtbl -> Next(This,count,ref,pFetched) ) + ( (This)->lpVtbl -> Next(This,count,ref,pFetched) ) #endif /* COBJMACROS */ @@ -583,67 +595,67 @@ EXTERN_C const IID IID_ISOSStackRefErrorEnum; #define __ISOSStackRefEnum_INTERFACE_DEFINED__ /* interface ISOSStackRefEnum */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSStackRefEnum; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("8FA642BD-9F10-4799-9AA3-512AE78C77EE") ISOSStackRefEnum : public ISOSEnum { public: - virtual HRESULT STDMETHODCALLTYPE Next( + virtual HRESULT STDMETHODCALLTYPE Next( /* [in] */ unsigned int count, /* [length_is][size_is][out] */ SOSStackRefData ref[ ], /* [out] */ unsigned int *pFetched) = 0; - - virtual HRESULT STDMETHODCALLTYPE EnumerateErrors( + + virtual HRESULT STDMETHODCALLTYPE EnumerateErrors( /* [out] */ ISOSStackRefErrorEnum **ppEnum) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSStackRefEnumVtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSStackRefEnum * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSStackRefEnum * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSStackRefEnum * This); - - HRESULT ( STDMETHODCALLTYPE *Skip )( + + HRESULT ( STDMETHODCALLTYPE *Skip )( ISOSStackRefEnum * This, /* [in] */ unsigned int count); - - HRESULT ( STDMETHODCALLTYPE *Reset )( + + HRESULT ( STDMETHODCALLTYPE *Reset )( ISOSStackRefEnum * This); - - HRESULT ( STDMETHODCALLTYPE *GetCount )( + + HRESULT ( STDMETHODCALLTYPE *GetCount )( ISOSStackRefEnum * This, /* [out] */ unsigned int *pCount); - - HRESULT ( STDMETHODCALLTYPE *Next )( + + HRESULT ( STDMETHODCALLTYPE *Next )( ISOSStackRefEnum * This, /* [in] */ unsigned int count, /* [length_is][size_is][out] */ SOSStackRefData ref[ ], /* [out] */ unsigned int *pFetched); - - HRESULT ( STDMETHODCALLTYPE *EnumerateErrors )( + + HRESULT ( STDMETHODCALLTYPE *EnumerateErrors )( ISOSStackRefEnum * This, /* [out] */ ISOSStackRefErrorEnum **ppEnum); - + END_INTERFACE } ISOSStackRefEnumVtbl; @@ -652,36 +664,36 @@ EXTERN_C const IID IID_ISOSStackRefEnum; CONST_VTBL struct ISOSStackRefEnumVtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSStackRefEnum_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSStackRefEnum_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSStackRefEnum_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSStackRefEnum_Skip(This,count) \ - ( (This)->lpVtbl -> Skip(This,count) ) + ( (This)->lpVtbl -> Skip(This,count) ) #define ISOSStackRefEnum_Reset(This) \ - ( (This)->lpVtbl -> Reset(This) ) + ( (This)->lpVtbl -> Reset(This) ) #define ISOSStackRefEnum_GetCount(This,pCount) \ - ( (This)->lpVtbl -> GetCount(This,pCount) ) + ( (This)->lpVtbl -> GetCount(This,pCount) ) #define ISOSStackRefEnum_Next(This,count,ref,pFetched) \ - ( (This)->lpVtbl -> Next(This,count,ref,pFetched) ) + ( (This)->lpVtbl -> Next(This,count,ref,pFetched) ) #define ISOSStackRefEnum_EnumerateErrors(This,ppEnum) \ - ( (This)->lpVtbl -> EnumerateErrors(This,ppEnum) ) + ( (This)->lpVtbl -> EnumerateErrors(This,ppEnum) ) #endif /* COBJMACROS */ @@ -698,546 +710,546 @@ EXTERN_C const IID IID_ISOSStackRefEnum; #define __ISOSDacInterface_INTERFACE_DEFINED__ /* interface ISOSDacInterface */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("436f00f2-b42a-4b9f-870c-e73db66ae930") ISOSDacInterface : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetThreadStoreData( + virtual HRESULT STDMETHODCALLTYPE GetThreadStoreData( struct DacpThreadStoreData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAppDomainStoreData( + + virtual HRESULT STDMETHODCALLTYPE GetAppDomainStoreData( struct DacpAppDomainStoreData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAppDomainList( + + virtual HRESULT STDMETHODCALLTYPE GetAppDomainList( unsigned int count, CLRDATA_ADDRESS values[ ], unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAppDomainData( + + virtual HRESULT STDMETHODCALLTYPE GetAppDomainData( CLRDATA_ADDRESS addr, struct DacpAppDomainData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAppDomainName( + + virtual HRESULT STDMETHODCALLTYPE GetAppDomainName( CLRDATA_ADDRESS addr, unsigned int count, WCHAR *name, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDomainFromContext( + + virtual HRESULT STDMETHODCALLTYPE GetDomainFromContext( CLRDATA_ADDRESS context, CLRDATA_ADDRESS *domain) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAssemblyList( + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyList( CLRDATA_ADDRESS appDomain, int count, CLRDATA_ADDRESS values[ ], int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAssemblyData( + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyData( CLRDATA_ADDRESS baseDomainPtr, CLRDATA_ADDRESS assembly, struct DacpAssemblyData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAssemblyName( + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyName( CLRDATA_ADDRESS assembly, unsigned int count, WCHAR *name, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetModule( + + virtual HRESULT STDMETHODCALLTYPE GetModule( CLRDATA_ADDRESS addr, IXCLRDataModule **mod) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetModuleData( + + virtual HRESULT STDMETHODCALLTYPE GetModuleData( CLRDATA_ADDRESS moduleAddr, struct DacpModuleData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE TraverseModuleMap( + + virtual HRESULT STDMETHODCALLTYPE TraverseModuleMap( ModuleMapType mmt, CLRDATA_ADDRESS moduleAddr, MODULEMAPTRAVERSE pCallback, LPVOID token) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAssemblyModuleList( + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyModuleList( CLRDATA_ADDRESS assembly, unsigned int count, CLRDATA_ADDRESS modules[ ], unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetILForModule( + + virtual HRESULT STDMETHODCALLTYPE GetILForModule( CLRDATA_ADDRESS moduleAddr, DWORD rva, CLRDATA_ADDRESS *il) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetThreadData( + + virtual HRESULT STDMETHODCALLTYPE GetThreadData( CLRDATA_ADDRESS thread, struct DacpThreadData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetThreadFromThinlockID( + + virtual HRESULT STDMETHODCALLTYPE GetThreadFromThinlockID( UINT thinLockId, CLRDATA_ADDRESS *pThread) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStackLimits( + + virtual HRESULT STDMETHODCALLTYPE GetStackLimits( CLRDATA_ADDRESS threadPtr, CLRDATA_ADDRESS *lower, CLRDATA_ADDRESS *upper, CLRDATA_ADDRESS *fp) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodDescData( + + virtual HRESULT STDMETHODCALLTYPE GetMethodDescData( CLRDATA_ADDRESS methodDesc, CLRDATA_ADDRESS ip, struct DacpMethodDescData *data, ULONG cRevertedRejitVersions, struct DacpReJitData *rgRevertedRejitData, ULONG *pcNeededRevertedRejitData) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodDescPtrFromIP( + + virtual HRESULT STDMETHODCALLTYPE GetMethodDescPtrFromIP( CLRDATA_ADDRESS ip, CLRDATA_ADDRESS *ppMD) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodDescName( + + virtual HRESULT STDMETHODCALLTYPE GetMethodDescName( CLRDATA_ADDRESS methodDesc, unsigned int count, WCHAR *name, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodDescPtrFromFrame( + + virtual HRESULT STDMETHODCALLTYPE GetMethodDescPtrFromFrame( CLRDATA_ADDRESS frameAddr, CLRDATA_ADDRESS *ppMD) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodDescFromToken( + + virtual HRESULT STDMETHODCALLTYPE GetMethodDescFromToken( CLRDATA_ADDRESS moduleAddr, mdToken token, CLRDATA_ADDRESS *methodDesc) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodDescTransparencyData( + + virtual HRESULT STDMETHODCALLTYPE GetMethodDescTransparencyData( CLRDATA_ADDRESS methodDesc, struct DacpMethodDescTransparencyData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCodeHeaderData( + + virtual HRESULT STDMETHODCALLTYPE GetCodeHeaderData( CLRDATA_ADDRESS ip, struct DacpCodeHeaderData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetJitManagerList( + + virtual HRESULT STDMETHODCALLTYPE GetJitManagerList( unsigned int count, struct DacpJitManagerInfo *managers, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetJitHelperFunctionName( + + virtual HRESULT STDMETHODCALLTYPE GetJitHelperFunctionName( CLRDATA_ADDRESS ip, unsigned int count, char *name, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetJumpThunkTarget( + + virtual HRESULT STDMETHODCALLTYPE GetJumpThunkTarget( T_CONTEXT *ctx, CLRDATA_ADDRESS *targetIP, CLRDATA_ADDRESS *targetMD) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetThreadpoolData( + + virtual HRESULT STDMETHODCALLTYPE GetThreadpoolData( struct DacpThreadpoolData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetWorkRequestData( + + virtual HRESULT STDMETHODCALLTYPE GetWorkRequestData( CLRDATA_ADDRESS addrWorkRequest, struct DacpWorkRequestData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHillClimbingLogEntry( + + virtual HRESULT STDMETHODCALLTYPE GetHillClimbingLogEntry( CLRDATA_ADDRESS addr, struct DacpHillClimbingLogEntry *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetObjectData( + + virtual HRESULT STDMETHODCALLTYPE GetObjectData( CLRDATA_ADDRESS objAddr, struct DacpObjectData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetObjectStringData( + + virtual HRESULT STDMETHODCALLTYPE GetObjectStringData( CLRDATA_ADDRESS obj, unsigned int count, WCHAR *stringData, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetObjectClassName( + + virtual HRESULT STDMETHODCALLTYPE GetObjectClassName( CLRDATA_ADDRESS obj, unsigned int count, WCHAR *className, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodTableName( + + virtual HRESULT STDMETHODCALLTYPE GetMethodTableName( CLRDATA_ADDRESS mt, unsigned int count, WCHAR *mtName, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodTableData( + + virtual HRESULT STDMETHODCALLTYPE GetMethodTableData( CLRDATA_ADDRESS mt, struct DacpMethodTableData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodTableSlot( + + virtual HRESULT STDMETHODCALLTYPE GetMethodTableSlot( CLRDATA_ADDRESS mt, unsigned int slot, CLRDATA_ADDRESS *value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodTableFieldData( + + virtual HRESULT STDMETHODCALLTYPE GetMethodTableFieldData( CLRDATA_ADDRESS mt, struct DacpMethodTableFieldData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodTableTransparencyData( + + virtual HRESULT STDMETHODCALLTYPE GetMethodTableTransparencyData( CLRDATA_ADDRESS mt, struct DacpMethodTableTransparencyData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodTableForEEClass( + + virtual HRESULT STDMETHODCALLTYPE GetMethodTableForEEClass( CLRDATA_ADDRESS eeClass, CLRDATA_ADDRESS *value) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFieldDescData( + + virtual HRESULT STDMETHODCALLTYPE GetFieldDescData( CLRDATA_ADDRESS fieldDesc, struct DacpFieldDescData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFrameName( + + virtual HRESULT STDMETHODCALLTYPE GetFrameName( CLRDATA_ADDRESS vtable, unsigned int count, WCHAR *frameName, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPEFileBase( + + virtual HRESULT STDMETHODCALLTYPE GetPEFileBase( CLRDATA_ADDRESS addr, CLRDATA_ADDRESS *base) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPEFileName( + + virtual HRESULT STDMETHODCALLTYPE GetPEFileName( CLRDATA_ADDRESS addr, unsigned int count, WCHAR *fileName, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGCHeapData( + + virtual HRESULT STDMETHODCALLTYPE GetGCHeapData( struct DacpGcHeapData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGCHeapList( + + virtual HRESULT STDMETHODCALLTYPE GetGCHeapList( unsigned int count, CLRDATA_ADDRESS heaps[ ], unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGCHeapDetails( + + virtual HRESULT STDMETHODCALLTYPE GetGCHeapDetails( CLRDATA_ADDRESS heap, struct DacpGcHeapDetails *details) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGCHeapStaticData( + + virtual HRESULT STDMETHODCALLTYPE GetGCHeapStaticData( struct DacpGcHeapDetails *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHeapSegmentData( + + virtual HRESULT STDMETHODCALLTYPE GetHeapSegmentData( CLRDATA_ADDRESS seg, struct DacpHeapSegmentData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOOMData( + + virtual HRESULT STDMETHODCALLTYPE GetOOMData( CLRDATA_ADDRESS oomAddr, struct DacpOomData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetOOMStaticData( + + virtual HRESULT STDMETHODCALLTYPE GetOOMStaticData( struct DacpOomData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHeapAnalyzeData( + + virtual HRESULT STDMETHODCALLTYPE GetHeapAnalyzeData( CLRDATA_ADDRESS addr, struct DacpGcHeapAnalyzeData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHeapAnalyzeStaticData( + + virtual HRESULT STDMETHODCALLTYPE GetHeapAnalyzeStaticData( struct DacpGcHeapAnalyzeData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDomainLocalModuleData( + + virtual HRESULT STDMETHODCALLTYPE GetDomainLocalModuleData( CLRDATA_ADDRESS addr, struct DacpDomainLocalModuleData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDomainLocalModuleDataFromAppDomain( + + virtual HRESULT STDMETHODCALLTYPE GetDomainLocalModuleDataFromAppDomain( CLRDATA_ADDRESS appDomainAddr, int moduleID, struct DacpDomainLocalModuleData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDomainLocalModuleDataFromModule( + + virtual HRESULT STDMETHODCALLTYPE GetDomainLocalModuleDataFromModule( CLRDATA_ADDRESS moduleAddr, struct DacpDomainLocalModuleData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetThreadLocalModuleData( + + virtual HRESULT STDMETHODCALLTYPE GetThreadLocalModuleData( CLRDATA_ADDRESS thread, unsigned int index, struct DacpThreadLocalModuleData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSyncBlockData( + + virtual HRESULT STDMETHODCALLTYPE GetSyncBlockData( unsigned int number, struct DacpSyncBlockData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetSyncBlockCleanupData( + + virtual HRESULT STDMETHODCALLTYPE GetSyncBlockCleanupData( CLRDATA_ADDRESS addr, struct DacpSyncBlockCleanupData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHandleEnum( + + virtual HRESULT STDMETHODCALLTYPE GetHandleEnum( ISOSHandleEnum **ppHandleEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHandleEnumForTypes( + + virtual HRESULT STDMETHODCALLTYPE GetHandleEnumForTypes( unsigned int types[ ], unsigned int count, ISOSHandleEnum **ppHandleEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHandleEnumForGC( + + virtual HRESULT STDMETHODCALLTYPE GetHandleEnumForGC( unsigned int gen, ISOSHandleEnum **ppHandleEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE TraverseEHInfo( + + virtual HRESULT STDMETHODCALLTYPE TraverseEHInfo( CLRDATA_ADDRESS ip, DUMPEHINFO pCallback, LPVOID token) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetNestedExceptionData( + + virtual HRESULT STDMETHODCALLTYPE GetNestedExceptionData( CLRDATA_ADDRESS exception, CLRDATA_ADDRESS *exceptionObject, CLRDATA_ADDRESS *nextNestedException) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStressLogAddress( + + virtual HRESULT STDMETHODCALLTYPE GetStressLogAddress( CLRDATA_ADDRESS *stressLog) = 0; - - virtual HRESULT STDMETHODCALLTYPE TraverseLoaderHeap( + + virtual HRESULT STDMETHODCALLTYPE TraverseLoaderHeap( CLRDATA_ADDRESS loaderHeapAddr, VISITHEAP pCallback) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCodeHeapList( + + virtual HRESULT STDMETHODCALLTYPE GetCodeHeapList( CLRDATA_ADDRESS jitManager, unsigned int count, struct DacpJitCodeHeapInfo *codeHeaps, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE TraverseVirtCallStubHeap( + + virtual HRESULT STDMETHODCALLTYPE TraverseVirtCallStubHeap( CLRDATA_ADDRESS pAppDomain, VCSHeapType heaptype, VISITHEAP pCallback) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetUsefulGlobals( + + virtual HRESULT STDMETHODCALLTYPE GetUsefulGlobals( struct DacpUsefulGlobalsData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetClrWatsonBuckets( + + virtual HRESULT STDMETHODCALLTYPE GetClrWatsonBuckets( CLRDATA_ADDRESS thread, void *pGenericModeBlock) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetTLSIndex( + + virtual HRESULT STDMETHODCALLTYPE GetTLSIndex( ULONG *pIndex) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetDacModuleHandle( + + virtual HRESULT STDMETHODCALLTYPE GetDacModuleHandle( HMODULE *phModule) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRCWData( + + virtual HRESULT STDMETHODCALLTYPE GetRCWData( CLRDATA_ADDRESS addr, struct DacpRCWData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRCWInterfaces( + + virtual HRESULT STDMETHODCALLTYPE GetRCWInterfaces( CLRDATA_ADDRESS rcw, unsigned int count, struct DacpCOMInterfacePointerData *interfaces, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCCWData( + + virtual HRESULT STDMETHODCALLTYPE GetCCWData( CLRDATA_ADDRESS ccw, struct DacpCCWData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetCCWInterfaces( + + virtual HRESULT STDMETHODCALLTYPE GetCCWInterfaces( CLRDATA_ADDRESS ccw, unsigned int count, struct DacpCOMInterfacePointerData *interfaces, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE TraverseRCWCleanupList( + + virtual HRESULT STDMETHODCALLTYPE TraverseRCWCleanupList( CLRDATA_ADDRESS cleanupListPtr, VISITRCWFORCLEANUP pCallback, LPVOID token) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetStackReferences( + + virtual HRESULT STDMETHODCALLTYPE GetStackReferences( /* [in] */ DWORD osThreadID, /* [out] */ ISOSStackRefEnum **ppEnum) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetRegisterName( + + virtual HRESULT STDMETHODCALLTYPE GetRegisterName( /* [in] */ int regName, /* [in] */ unsigned int count, /* [out] */ WCHAR *buffer, /* [out] */ unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetThreadAllocData( + + virtual HRESULT STDMETHODCALLTYPE GetThreadAllocData( CLRDATA_ADDRESS thread, struct DacpAllocData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetHeapAllocData( + + virtual HRESULT STDMETHODCALLTYPE GetHeapAllocData( unsigned int count, struct DacpGenerationAllocData *data, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyList( + + virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyList( CLRDATA_ADDRESS appDomain, int count, CLRDATA_ADDRESS values[ ], unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetPrivateBinPaths( + + virtual HRESULT STDMETHODCALLTYPE GetPrivateBinPaths( CLRDATA_ADDRESS appDomain, int count, WCHAR *paths, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAssemblyLocation( + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyLocation( CLRDATA_ADDRESS assembly, int count, WCHAR *location, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAppDomainConfigFile( + + virtual HRESULT STDMETHODCALLTYPE GetAppDomainConfigFile( CLRDATA_ADDRESS appDomain, int count, WCHAR *configFile, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetApplicationBase( + + virtual HRESULT STDMETHODCALLTYPE GetApplicationBase( CLRDATA_ADDRESS appDomain, int count, WCHAR *base, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyData( + + virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyData( CLRDATA_ADDRESS assembly, unsigned int *pContext, HRESULT *pResult) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyLocation( + + virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyLocation( CLRDATA_ADDRESS assesmbly, unsigned int count, WCHAR *location, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyDisplayName( + + virtual HRESULT STDMETHODCALLTYPE GetFailedAssemblyDisplayName( CLRDATA_ADDRESS assembly, unsigned int count, WCHAR *name, unsigned int *pNeeded) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterfaceVtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface * This); - - HRESULT ( STDMETHODCALLTYPE *GetThreadStoreData )( + + HRESULT ( STDMETHODCALLTYPE *GetThreadStoreData )( ISOSDacInterface * This, struct DacpThreadStoreData *data); - - HRESULT ( STDMETHODCALLTYPE *GetAppDomainStoreData )( + + HRESULT ( STDMETHODCALLTYPE *GetAppDomainStoreData )( ISOSDacInterface * This, struct DacpAppDomainStoreData *data); - - HRESULT ( STDMETHODCALLTYPE *GetAppDomainList )( + + HRESULT ( STDMETHODCALLTYPE *GetAppDomainList )( ISOSDacInterface * This, unsigned int count, CLRDATA_ADDRESS values[ ], unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetAppDomainData )( + + HRESULT ( STDMETHODCALLTYPE *GetAppDomainData )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, struct DacpAppDomainData *data); - - HRESULT ( STDMETHODCALLTYPE *GetAppDomainName )( + + HRESULT ( STDMETHODCALLTYPE *GetAppDomainName )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, unsigned int count, WCHAR *name, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetDomainFromContext )( + + HRESULT ( STDMETHODCALLTYPE *GetDomainFromContext )( ISOSDacInterface * This, CLRDATA_ADDRESS context, CLRDATA_ADDRESS *domain); - - HRESULT ( STDMETHODCALLTYPE *GetAssemblyList )( + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyList )( ISOSDacInterface * This, CLRDATA_ADDRESS appDomain, int count, CLRDATA_ADDRESS values[ ], int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetAssemblyData )( + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyData )( ISOSDacInterface * This, CLRDATA_ADDRESS baseDomainPtr, CLRDATA_ADDRESS assembly, struct DacpAssemblyData *data); - - HRESULT ( STDMETHODCALLTYPE *GetAssemblyName )( + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyName )( ISOSDacInterface * This, CLRDATA_ADDRESS assembly, unsigned int count, WCHAR *name, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetModule )( + + HRESULT ( STDMETHODCALLTYPE *GetModule )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, IXCLRDataModule **mod); - - HRESULT ( STDMETHODCALLTYPE *GetModuleData )( + + HRESULT ( STDMETHODCALLTYPE *GetModuleData )( ISOSDacInterface * This, CLRDATA_ADDRESS moduleAddr, struct DacpModuleData *data); - - HRESULT ( STDMETHODCALLTYPE *TraverseModuleMap )( + + HRESULT ( STDMETHODCALLTYPE *TraverseModuleMap )( ISOSDacInterface * This, ModuleMapType mmt, CLRDATA_ADDRESS moduleAddr, MODULEMAPTRAVERSE pCallback, LPVOID token); - - HRESULT ( STDMETHODCALLTYPE *GetAssemblyModuleList )( + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyModuleList )( ISOSDacInterface * This, CLRDATA_ADDRESS assembly, unsigned int count, CLRDATA_ADDRESS modules[ ], unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetILForModule )( + + HRESULT ( STDMETHODCALLTYPE *GetILForModule )( ISOSDacInterface * This, CLRDATA_ADDRESS moduleAddr, DWORD rva, CLRDATA_ADDRESS *il); - - HRESULT ( STDMETHODCALLTYPE *GetThreadData )( + + HRESULT ( STDMETHODCALLTYPE *GetThreadData )( ISOSDacInterface * This, CLRDATA_ADDRESS thread, struct DacpThreadData *data); - - HRESULT ( STDMETHODCALLTYPE *GetThreadFromThinlockID )( + + HRESULT ( STDMETHODCALLTYPE *GetThreadFromThinlockID )( ISOSDacInterface * This, UINT thinLockId, CLRDATA_ADDRESS *pThread); - - HRESULT ( STDMETHODCALLTYPE *GetStackLimits )( + + HRESULT ( STDMETHODCALLTYPE *GetStackLimits )( ISOSDacInterface * This, CLRDATA_ADDRESS threadPtr, CLRDATA_ADDRESS *lower, CLRDATA_ADDRESS *upper, CLRDATA_ADDRESS *fp); - - HRESULT ( STDMETHODCALLTYPE *GetMethodDescData )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodDescData )( ISOSDacInterface * This, CLRDATA_ADDRESS methodDesc, CLRDATA_ADDRESS ip, @@ -1245,397 +1257,397 @@ EXTERN_C const IID IID_ISOSDacInterface; ULONG cRevertedRejitVersions, struct DacpReJitData *rgRevertedRejitData, ULONG *pcNeededRevertedRejitData); - - HRESULT ( STDMETHODCALLTYPE *GetMethodDescPtrFromIP )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodDescPtrFromIP )( ISOSDacInterface * This, CLRDATA_ADDRESS ip, CLRDATA_ADDRESS *ppMD); - - HRESULT ( STDMETHODCALLTYPE *GetMethodDescName )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodDescName )( ISOSDacInterface * This, CLRDATA_ADDRESS methodDesc, unsigned int count, WCHAR *name, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetMethodDescPtrFromFrame )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodDescPtrFromFrame )( ISOSDacInterface * This, CLRDATA_ADDRESS frameAddr, CLRDATA_ADDRESS *ppMD); - - HRESULT ( STDMETHODCALLTYPE *GetMethodDescFromToken )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodDescFromToken )( ISOSDacInterface * This, CLRDATA_ADDRESS moduleAddr, mdToken token, CLRDATA_ADDRESS *methodDesc); - - HRESULT ( STDMETHODCALLTYPE *GetMethodDescTransparencyData )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodDescTransparencyData )( ISOSDacInterface * This, CLRDATA_ADDRESS methodDesc, struct DacpMethodDescTransparencyData *data); - - HRESULT ( STDMETHODCALLTYPE *GetCodeHeaderData )( + + HRESULT ( STDMETHODCALLTYPE *GetCodeHeaderData )( ISOSDacInterface * This, CLRDATA_ADDRESS ip, struct DacpCodeHeaderData *data); - - HRESULT ( STDMETHODCALLTYPE *GetJitManagerList )( + + HRESULT ( STDMETHODCALLTYPE *GetJitManagerList )( ISOSDacInterface * This, unsigned int count, struct DacpJitManagerInfo *managers, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetJitHelperFunctionName )( + + HRESULT ( STDMETHODCALLTYPE *GetJitHelperFunctionName )( ISOSDacInterface * This, CLRDATA_ADDRESS ip, unsigned int count, char *name, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetJumpThunkTarget )( + + HRESULT ( STDMETHODCALLTYPE *GetJumpThunkTarget )( ISOSDacInterface * This, T_CONTEXT *ctx, CLRDATA_ADDRESS *targetIP, CLRDATA_ADDRESS *targetMD); - - HRESULT ( STDMETHODCALLTYPE *GetThreadpoolData )( + + HRESULT ( STDMETHODCALLTYPE *GetThreadpoolData )( ISOSDacInterface * This, struct DacpThreadpoolData *data); - - HRESULT ( STDMETHODCALLTYPE *GetWorkRequestData )( + + HRESULT ( STDMETHODCALLTYPE *GetWorkRequestData )( ISOSDacInterface * This, CLRDATA_ADDRESS addrWorkRequest, struct DacpWorkRequestData *data); - - HRESULT ( STDMETHODCALLTYPE *GetHillClimbingLogEntry )( + + HRESULT ( STDMETHODCALLTYPE *GetHillClimbingLogEntry )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, struct DacpHillClimbingLogEntry *data); - - HRESULT ( STDMETHODCALLTYPE *GetObjectData )( + + HRESULT ( STDMETHODCALLTYPE *GetObjectData )( ISOSDacInterface * This, CLRDATA_ADDRESS objAddr, struct DacpObjectData *data); - - HRESULT ( STDMETHODCALLTYPE *GetObjectStringData )( + + HRESULT ( STDMETHODCALLTYPE *GetObjectStringData )( ISOSDacInterface * This, CLRDATA_ADDRESS obj, unsigned int count, WCHAR *stringData, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetObjectClassName )( + + HRESULT ( STDMETHODCALLTYPE *GetObjectClassName )( ISOSDacInterface * This, CLRDATA_ADDRESS obj, unsigned int count, WCHAR *className, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableName )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableName )( ISOSDacInterface * This, CLRDATA_ADDRESS mt, unsigned int count, WCHAR *mtName, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableData )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableData )( ISOSDacInterface * This, CLRDATA_ADDRESS mt, struct DacpMethodTableData *data); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableSlot )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableSlot )( ISOSDacInterface * This, CLRDATA_ADDRESS mt, unsigned int slot, CLRDATA_ADDRESS *value); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableFieldData )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableFieldData )( ISOSDacInterface * This, CLRDATA_ADDRESS mt, struct DacpMethodTableFieldData *data); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableTransparencyData )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableTransparencyData )( ISOSDacInterface * This, CLRDATA_ADDRESS mt, struct DacpMethodTableTransparencyData *data); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableForEEClass )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableForEEClass )( ISOSDacInterface * This, CLRDATA_ADDRESS eeClass, CLRDATA_ADDRESS *value); - - HRESULT ( STDMETHODCALLTYPE *GetFieldDescData )( + + HRESULT ( STDMETHODCALLTYPE *GetFieldDescData )( ISOSDacInterface * This, CLRDATA_ADDRESS fieldDesc, struct DacpFieldDescData *data); - - HRESULT ( STDMETHODCALLTYPE *GetFrameName )( + + HRESULT ( STDMETHODCALLTYPE *GetFrameName )( ISOSDacInterface * This, CLRDATA_ADDRESS vtable, unsigned int count, WCHAR *frameName, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetPEFileBase )( + + HRESULT ( STDMETHODCALLTYPE *GetPEFileBase )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, CLRDATA_ADDRESS *base); - - HRESULT ( STDMETHODCALLTYPE *GetPEFileName )( + + HRESULT ( STDMETHODCALLTYPE *GetPEFileName )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, unsigned int count, WCHAR *fileName, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetGCHeapData )( + + HRESULT ( STDMETHODCALLTYPE *GetGCHeapData )( ISOSDacInterface * This, struct DacpGcHeapData *data); - - HRESULT ( STDMETHODCALLTYPE *GetGCHeapList )( + + HRESULT ( STDMETHODCALLTYPE *GetGCHeapList )( ISOSDacInterface * This, unsigned int count, CLRDATA_ADDRESS heaps[ ], unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetGCHeapDetails )( + + HRESULT ( STDMETHODCALLTYPE *GetGCHeapDetails )( ISOSDacInterface * This, CLRDATA_ADDRESS heap, struct DacpGcHeapDetails *details); - - HRESULT ( STDMETHODCALLTYPE *GetGCHeapStaticData )( + + HRESULT ( STDMETHODCALLTYPE *GetGCHeapStaticData )( ISOSDacInterface * This, struct DacpGcHeapDetails *data); - - HRESULT ( STDMETHODCALLTYPE *GetHeapSegmentData )( + + HRESULT ( STDMETHODCALLTYPE *GetHeapSegmentData )( ISOSDacInterface * This, CLRDATA_ADDRESS seg, struct DacpHeapSegmentData *data); - - HRESULT ( STDMETHODCALLTYPE *GetOOMData )( + + HRESULT ( STDMETHODCALLTYPE *GetOOMData )( ISOSDacInterface * This, CLRDATA_ADDRESS oomAddr, struct DacpOomData *data); - - HRESULT ( STDMETHODCALLTYPE *GetOOMStaticData )( + + HRESULT ( STDMETHODCALLTYPE *GetOOMStaticData )( ISOSDacInterface * This, struct DacpOomData *data); - - HRESULT ( STDMETHODCALLTYPE *GetHeapAnalyzeData )( + + HRESULT ( STDMETHODCALLTYPE *GetHeapAnalyzeData )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, struct DacpGcHeapAnalyzeData *data); - - HRESULT ( STDMETHODCALLTYPE *GetHeapAnalyzeStaticData )( + + HRESULT ( STDMETHODCALLTYPE *GetHeapAnalyzeStaticData )( ISOSDacInterface * This, struct DacpGcHeapAnalyzeData *data); - - HRESULT ( STDMETHODCALLTYPE *GetDomainLocalModuleData )( + + HRESULT ( STDMETHODCALLTYPE *GetDomainLocalModuleData )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, struct DacpDomainLocalModuleData *data); - - HRESULT ( STDMETHODCALLTYPE *GetDomainLocalModuleDataFromAppDomain )( + + HRESULT ( STDMETHODCALLTYPE *GetDomainLocalModuleDataFromAppDomain )( ISOSDacInterface * This, CLRDATA_ADDRESS appDomainAddr, int moduleID, struct DacpDomainLocalModuleData *data); - - HRESULT ( STDMETHODCALLTYPE *GetDomainLocalModuleDataFromModule )( + + HRESULT ( STDMETHODCALLTYPE *GetDomainLocalModuleDataFromModule )( ISOSDacInterface * This, CLRDATA_ADDRESS moduleAddr, struct DacpDomainLocalModuleData *data); - - HRESULT ( STDMETHODCALLTYPE *GetThreadLocalModuleData )( + + HRESULT ( STDMETHODCALLTYPE *GetThreadLocalModuleData )( ISOSDacInterface * This, CLRDATA_ADDRESS thread, unsigned int index, struct DacpThreadLocalModuleData *data); - - HRESULT ( STDMETHODCALLTYPE *GetSyncBlockData )( + + HRESULT ( STDMETHODCALLTYPE *GetSyncBlockData )( ISOSDacInterface * This, unsigned int number, struct DacpSyncBlockData *data); - - HRESULT ( STDMETHODCALLTYPE *GetSyncBlockCleanupData )( + + HRESULT ( STDMETHODCALLTYPE *GetSyncBlockCleanupData )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, struct DacpSyncBlockCleanupData *data); - - HRESULT ( STDMETHODCALLTYPE *GetHandleEnum )( + + HRESULT ( STDMETHODCALLTYPE *GetHandleEnum )( ISOSDacInterface * This, ISOSHandleEnum **ppHandleEnum); - - HRESULT ( STDMETHODCALLTYPE *GetHandleEnumForTypes )( + + HRESULT ( STDMETHODCALLTYPE *GetHandleEnumForTypes )( ISOSDacInterface * This, unsigned int types[ ], unsigned int count, ISOSHandleEnum **ppHandleEnum); - - HRESULT ( STDMETHODCALLTYPE *GetHandleEnumForGC )( + + HRESULT ( STDMETHODCALLTYPE *GetHandleEnumForGC )( ISOSDacInterface * This, unsigned int gen, ISOSHandleEnum **ppHandleEnum); - - HRESULT ( STDMETHODCALLTYPE *TraverseEHInfo )( + + HRESULT ( STDMETHODCALLTYPE *TraverseEHInfo )( ISOSDacInterface * This, CLRDATA_ADDRESS ip, DUMPEHINFO pCallback, LPVOID token); - - HRESULT ( STDMETHODCALLTYPE *GetNestedExceptionData )( + + HRESULT ( STDMETHODCALLTYPE *GetNestedExceptionData )( ISOSDacInterface * This, CLRDATA_ADDRESS exception, CLRDATA_ADDRESS *exceptionObject, CLRDATA_ADDRESS *nextNestedException); - - HRESULT ( STDMETHODCALLTYPE *GetStressLogAddress )( + + HRESULT ( STDMETHODCALLTYPE *GetStressLogAddress )( ISOSDacInterface * This, CLRDATA_ADDRESS *stressLog); - - HRESULT ( STDMETHODCALLTYPE *TraverseLoaderHeap )( + + HRESULT ( STDMETHODCALLTYPE *TraverseLoaderHeap )( ISOSDacInterface * This, CLRDATA_ADDRESS loaderHeapAddr, VISITHEAP pCallback); - - HRESULT ( STDMETHODCALLTYPE *GetCodeHeapList )( + + HRESULT ( STDMETHODCALLTYPE *GetCodeHeapList )( ISOSDacInterface * This, CLRDATA_ADDRESS jitManager, unsigned int count, struct DacpJitCodeHeapInfo *codeHeaps, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *TraverseVirtCallStubHeap )( + + HRESULT ( STDMETHODCALLTYPE *TraverseVirtCallStubHeap )( ISOSDacInterface * This, CLRDATA_ADDRESS pAppDomain, VCSHeapType heaptype, VISITHEAP pCallback); - - HRESULT ( STDMETHODCALLTYPE *GetUsefulGlobals )( + + HRESULT ( STDMETHODCALLTYPE *GetUsefulGlobals )( ISOSDacInterface * This, struct DacpUsefulGlobalsData *data); - - HRESULT ( STDMETHODCALLTYPE *GetClrWatsonBuckets )( + + HRESULT ( STDMETHODCALLTYPE *GetClrWatsonBuckets )( ISOSDacInterface * This, CLRDATA_ADDRESS thread, void *pGenericModeBlock); - - HRESULT ( STDMETHODCALLTYPE *GetTLSIndex )( + + HRESULT ( STDMETHODCALLTYPE *GetTLSIndex )( ISOSDacInterface * This, ULONG *pIndex); - - HRESULT ( STDMETHODCALLTYPE *GetDacModuleHandle )( + + HRESULT ( STDMETHODCALLTYPE *GetDacModuleHandle )( ISOSDacInterface * This, HMODULE *phModule); - - HRESULT ( STDMETHODCALLTYPE *GetRCWData )( + + HRESULT ( STDMETHODCALLTYPE *GetRCWData )( ISOSDacInterface * This, CLRDATA_ADDRESS addr, struct DacpRCWData *data); - - HRESULT ( STDMETHODCALLTYPE *GetRCWInterfaces )( + + HRESULT ( STDMETHODCALLTYPE *GetRCWInterfaces )( ISOSDacInterface * This, CLRDATA_ADDRESS rcw, unsigned int count, struct DacpCOMInterfacePointerData *interfaces, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetCCWData )( + + HRESULT ( STDMETHODCALLTYPE *GetCCWData )( ISOSDacInterface * This, CLRDATA_ADDRESS ccw, struct DacpCCWData *data); - - HRESULT ( STDMETHODCALLTYPE *GetCCWInterfaces )( + + HRESULT ( STDMETHODCALLTYPE *GetCCWInterfaces )( ISOSDacInterface * This, CLRDATA_ADDRESS ccw, unsigned int count, struct DacpCOMInterfacePointerData *interfaces, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *TraverseRCWCleanupList )( + + HRESULT ( STDMETHODCALLTYPE *TraverseRCWCleanupList )( ISOSDacInterface * This, CLRDATA_ADDRESS cleanupListPtr, VISITRCWFORCLEANUP pCallback, LPVOID token); - - HRESULT ( STDMETHODCALLTYPE *GetStackReferences )( + + HRESULT ( STDMETHODCALLTYPE *GetStackReferences )( ISOSDacInterface * This, /* [in] */ DWORD osThreadID, /* [out] */ ISOSStackRefEnum **ppEnum); - - HRESULT ( STDMETHODCALLTYPE *GetRegisterName )( + + HRESULT ( STDMETHODCALLTYPE *GetRegisterName )( ISOSDacInterface * This, /* [in] */ int regName, /* [in] */ unsigned int count, /* [out] */ WCHAR *buffer, /* [out] */ unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetThreadAllocData )( + + HRESULT ( STDMETHODCALLTYPE *GetThreadAllocData )( ISOSDacInterface * This, CLRDATA_ADDRESS thread, struct DacpAllocData *data); - - HRESULT ( STDMETHODCALLTYPE *GetHeapAllocData )( + + HRESULT ( STDMETHODCALLTYPE *GetHeapAllocData )( ISOSDacInterface * This, unsigned int count, struct DacpGenerationAllocData *data, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyList )( + + HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyList )( ISOSDacInterface * This, CLRDATA_ADDRESS appDomain, int count, CLRDATA_ADDRESS values[ ], unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetPrivateBinPaths )( + + HRESULT ( STDMETHODCALLTYPE *GetPrivateBinPaths )( ISOSDacInterface * This, CLRDATA_ADDRESS appDomain, int count, WCHAR *paths, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetAssemblyLocation )( + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyLocation )( ISOSDacInterface * This, CLRDATA_ADDRESS assembly, int count, WCHAR *location, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetAppDomainConfigFile )( + + HRESULT ( STDMETHODCALLTYPE *GetAppDomainConfigFile )( ISOSDacInterface * This, CLRDATA_ADDRESS appDomain, int count, WCHAR *configFile, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetApplicationBase )( + + HRESULT ( STDMETHODCALLTYPE *GetApplicationBase )( ISOSDacInterface * This, CLRDATA_ADDRESS appDomain, int count, WCHAR *base, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyData )( + + HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyData )( ISOSDacInterface * This, CLRDATA_ADDRESS assembly, unsigned int *pContext, HRESULT *pResult); - - HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyLocation )( + + HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyLocation )( ISOSDacInterface * This, CLRDATA_ADDRESS assesmbly, unsigned int count, WCHAR *location, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyDisplayName )( + + HRESULT ( STDMETHODCALLTYPE *GetFailedAssemblyDisplayName )( ISOSDacInterface * This, CLRDATA_ADDRESS assembly, unsigned int count, WCHAR *name, unsigned int *pNeeded); - + END_INTERFACE } ISOSDacInterfaceVtbl; @@ -1644,284 +1656,284 @@ EXTERN_C const IID IID_ISOSDacInterface; CONST_VTBL struct ISOSDacInterfaceVtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface_GetThreadStoreData(This,data) \ - ( (This)->lpVtbl -> GetThreadStoreData(This,data) ) + ( (This)->lpVtbl -> GetThreadStoreData(This,data) ) #define ISOSDacInterface_GetAppDomainStoreData(This,data) \ - ( (This)->lpVtbl -> GetAppDomainStoreData(This,data) ) + ( (This)->lpVtbl -> GetAppDomainStoreData(This,data) ) #define ISOSDacInterface_GetAppDomainList(This,count,values,pNeeded) \ - ( (This)->lpVtbl -> GetAppDomainList(This,count,values,pNeeded) ) + ( (This)->lpVtbl -> GetAppDomainList(This,count,values,pNeeded) ) #define ISOSDacInterface_GetAppDomainData(This,addr,data) \ - ( (This)->lpVtbl -> GetAppDomainData(This,addr,data) ) + ( (This)->lpVtbl -> GetAppDomainData(This,addr,data) ) #define ISOSDacInterface_GetAppDomainName(This,addr,count,name,pNeeded) \ - ( (This)->lpVtbl -> GetAppDomainName(This,addr,count,name,pNeeded) ) + ( (This)->lpVtbl -> GetAppDomainName(This,addr,count,name,pNeeded) ) #define ISOSDacInterface_GetDomainFromContext(This,context,domain) \ - ( (This)->lpVtbl -> GetDomainFromContext(This,context,domain) ) + ( (This)->lpVtbl -> GetDomainFromContext(This,context,domain) ) #define ISOSDacInterface_GetAssemblyList(This,appDomain,count,values,pNeeded) \ - ( (This)->lpVtbl -> GetAssemblyList(This,appDomain,count,values,pNeeded) ) + ( (This)->lpVtbl -> GetAssemblyList(This,appDomain,count,values,pNeeded) ) #define ISOSDacInterface_GetAssemblyData(This,baseDomainPtr,assembly,data) \ - ( (This)->lpVtbl -> GetAssemblyData(This,baseDomainPtr,assembly,data) ) + ( (This)->lpVtbl -> GetAssemblyData(This,baseDomainPtr,assembly,data) ) #define ISOSDacInterface_GetAssemblyName(This,assembly,count,name,pNeeded) \ - ( (This)->lpVtbl -> GetAssemblyName(This,assembly,count,name,pNeeded) ) + ( (This)->lpVtbl -> GetAssemblyName(This,assembly,count,name,pNeeded) ) #define ISOSDacInterface_GetModule(This,addr,mod) \ - ( (This)->lpVtbl -> GetModule(This,addr,mod) ) + ( (This)->lpVtbl -> GetModule(This,addr,mod) ) #define ISOSDacInterface_GetModuleData(This,moduleAddr,data) \ - ( (This)->lpVtbl -> GetModuleData(This,moduleAddr,data) ) + ( (This)->lpVtbl -> GetModuleData(This,moduleAddr,data) ) #define ISOSDacInterface_TraverseModuleMap(This,mmt,moduleAddr,pCallback,token) \ - ( (This)->lpVtbl -> TraverseModuleMap(This,mmt,moduleAddr,pCallback,token) ) + ( (This)->lpVtbl -> TraverseModuleMap(This,mmt,moduleAddr,pCallback,token) ) #define ISOSDacInterface_GetAssemblyModuleList(This,assembly,count,modules,pNeeded) \ - ( (This)->lpVtbl -> GetAssemblyModuleList(This,assembly,count,modules,pNeeded) ) + ( (This)->lpVtbl -> GetAssemblyModuleList(This,assembly,count,modules,pNeeded) ) #define ISOSDacInterface_GetILForModule(This,moduleAddr,rva,il) \ - ( (This)->lpVtbl -> GetILForModule(This,moduleAddr,rva,il) ) + ( (This)->lpVtbl -> GetILForModule(This,moduleAddr,rva,il) ) #define ISOSDacInterface_GetThreadData(This,thread,data) \ - ( (This)->lpVtbl -> GetThreadData(This,thread,data) ) + ( (This)->lpVtbl -> GetThreadData(This,thread,data) ) #define ISOSDacInterface_GetThreadFromThinlockID(This,thinLockId,pThread) \ - ( (This)->lpVtbl -> GetThreadFromThinlockID(This,thinLockId,pThread) ) + ( (This)->lpVtbl -> GetThreadFromThinlockID(This,thinLockId,pThread) ) #define ISOSDacInterface_GetStackLimits(This,threadPtr,lower,upper,fp) \ - ( (This)->lpVtbl -> GetStackLimits(This,threadPtr,lower,upper,fp) ) + ( (This)->lpVtbl -> GetStackLimits(This,threadPtr,lower,upper,fp) ) #define ISOSDacInterface_GetMethodDescData(This,methodDesc,ip,data,cRevertedRejitVersions,rgRevertedRejitData,pcNeededRevertedRejitData) \ - ( (This)->lpVtbl -> GetMethodDescData(This,methodDesc,ip,data,cRevertedRejitVersions,rgRevertedRejitData,pcNeededRevertedRejitData) ) + ( (This)->lpVtbl -> GetMethodDescData(This,methodDesc,ip,data,cRevertedRejitVersions,rgRevertedRejitData,pcNeededRevertedRejitData) ) #define ISOSDacInterface_GetMethodDescPtrFromIP(This,ip,ppMD) \ - ( (This)->lpVtbl -> GetMethodDescPtrFromIP(This,ip,ppMD) ) + ( (This)->lpVtbl -> GetMethodDescPtrFromIP(This,ip,ppMD) ) #define ISOSDacInterface_GetMethodDescName(This,methodDesc,count,name,pNeeded) \ - ( (This)->lpVtbl -> GetMethodDescName(This,methodDesc,count,name,pNeeded) ) + ( (This)->lpVtbl -> GetMethodDescName(This,methodDesc,count,name,pNeeded) ) #define ISOSDacInterface_GetMethodDescPtrFromFrame(This,frameAddr,ppMD) \ - ( (This)->lpVtbl -> GetMethodDescPtrFromFrame(This,frameAddr,ppMD) ) + ( (This)->lpVtbl -> GetMethodDescPtrFromFrame(This,frameAddr,ppMD) ) #define ISOSDacInterface_GetMethodDescFromToken(This,moduleAddr,token,methodDesc) \ - ( (This)->lpVtbl -> GetMethodDescFromToken(This,moduleAddr,token,methodDesc) ) + ( (This)->lpVtbl -> GetMethodDescFromToken(This,moduleAddr,token,methodDesc) ) #define ISOSDacInterface_GetMethodDescTransparencyData(This,methodDesc,data) \ - ( (This)->lpVtbl -> GetMethodDescTransparencyData(This,methodDesc,data) ) + ( (This)->lpVtbl -> GetMethodDescTransparencyData(This,methodDesc,data) ) #define ISOSDacInterface_GetCodeHeaderData(This,ip,data) \ - ( (This)->lpVtbl -> GetCodeHeaderData(This,ip,data) ) + ( (This)->lpVtbl -> GetCodeHeaderData(This,ip,data) ) #define ISOSDacInterface_GetJitManagerList(This,count,managers,pNeeded) \ - ( (This)->lpVtbl -> GetJitManagerList(This,count,managers,pNeeded) ) + ( (This)->lpVtbl -> GetJitManagerList(This,count,managers,pNeeded) ) #define ISOSDacInterface_GetJitHelperFunctionName(This,ip,count,name,pNeeded) \ - ( (This)->lpVtbl -> GetJitHelperFunctionName(This,ip,count,name,pNeeded) ) + ( (This)->lpVtbl -> GetJitHelperFunctionName(This,ip,count,name,pNeeded) ) #define ISOSDacInterface_GetJumpThunkTarget(This,ctx,targetIP,targetMD) \ - ( (This)->lpVtbl -> GetJumpThunkTarget(This,ctx,targetIP,targetMD) ) + ( (This)->lpVtbl -> GetJumpThunkTarget(This,ctx,targetIP,targetMD) ) #define ISOSDacInterface_GetThreadpoolData(This,data) \ - ( (This)->lpVtbl -> GetThreadpoolData(This,data) ) + ( (This)->lpVtbl -> GetThreadpoolData(This,data) ) #define ISOSDacInterface_GetWorkRequestData(This,addrWorkRequest,data) \ - ( (This)->lpVtbl -> GetWorkRequestData(This,addrWorkRequest,data) ) + ( (This)->lpVtbl -> GetWorkRequestData(This,addrWorkRequest,data) ) #define ISOSDacInterface_GetHillClimbingLogEntry(This,addr,data) \ - ( (This)->lpVtbl -> GetHillClimbingLogEntry(This,addr,data) ) + ( (This)->lpVtbl -> GetHillClimbingLogEntry(This,addr,data) ) #define ISOSDacInterface_GetObjectData(This,objAddr,data) \ - ( (This)->lpVtbl -> GetObjectData(This,objAddr,data) ) + ( (This)->lpVtbl -> GetObjectData(This,objAddr,data) ) #define ISOSDacInterface_GetObjectStringData(This,obj,count,stringData,pNeeded) \ - ( (This)->lpVtbl -> GetObjectStringData(This,obj,count,stringData,pNeeded) ) + ( (This)->lpVtbl -> GetObjectStringData(This,obj,count,stringData,pNeeded) ) #define ISOSDacInterface_GetObjectClassName(This,obj,count,className,pNeeded) \ - ( (This)->lpVtbl -> GetObjectClassName(This,obj,count,className,pNeeded) ) + ( (This)->lpVtbl -> GetObjectClassName(This,obj,count,className,pNeeded) ) #define ISOSDacInterface_GetMethodTableName(This,mt,count,mtName,pNeeded) \ - ( (This)->lpVtbl -> GetMethodTableName(This,mt,count,mtName,pNeeded) ) + ( (This)->lpVtbl -> GetMethodTableName(This,mt,count,mtName,pNeeded) ) #define ISOSDacInterface_GetMethodTableData(This,mt,data) \ - ( (This)->lpVtbl -> GetMethodTableData(This,mt,data) ) + ( (This)->lpVtbl -> GetMethodTableData(This,mt,data) ) #define ISOSDacInterface_GetMethodTableSlot(This,mt,slot,value) \ - ( (This)->lpVtbl -> GetMethodTableSlot(This,mt,slot,value) ) + ( (This)->lpVtbl -> GetMethodTableSlot(This,mt,slot,value) ) #define ISOSDacInterface_GetMethodTableFieldData(This,mt,data) \ - ( (This)->lpVtbl -> GetMethodTableFieldData(This,mt,data) ) + ( (This)->lpVtbl -> GetMethodTableFieldData(This,mt,data) ) #define ISOSDacInterface_GetMethodTableTransparencyData(This,mt,data) \ - ( (This)->lpVtbl -> GetMethodTableTransparencyData(This,mt,data) ) + ( (This)->lpVtbl -> GetMethodTableTransparencyData(This,mt,data) ) #define ISOSDacInterface_GetMethodTableForEEClass(This,eeClass,value) \ - ( (This)->lpVtbl -> GetMethodTableForEEClass(This,eeClass,value) ) + ( (This)->lpVtbl -> GetMethodTableForEEClass(This,eeClass,value) ) #define ISOSDacInterface_GetFieldDescData(This,fieldDesc,data) \ - ( (This)->lpVtbl -> GetFieldDescData(This,fieldDesc,data) ) + ( (This)->lpVtbl -> GetFieldDescData(This,fieldDesc,data) ) #define ISOSDacInterface_GetFrameName(This,vtable,count,frameName,pNeeded) \ - ( (This)->lpVtbl -> GetFrameName(This,vtable,count,frameName,pNeeded) ) + ( (This)->lpVtbl -> GetFrameName(This,vtable,count,frameName,pNeeded) ) #define ISOSDacInterface_GetPEFileBase(This,addr,base) \ - ( (This)->lpVtbl -> GetPEFileBase(This,addr,base) ) + ( (This)->lpVtbl -> GetPEFileBase(This,addr,base) ) #define ISOSDacInterface_GetPEFileName(This,addr,count,fileName,pNeeded) \ - ( (This)->lpVtbl -> GetPEFileName(This,addr,count,fileName,pNeeded) ) + ( (This)->lpVtbl -> GetPEFileName(This,addr,count,fileName,pNeeded) ) #define ISOSDacInterface_GetGCHeapData(This,data) \ - ( (This)->lpVtbl -> GetGCHeapData(This,data) ) + ( (This)->lpVtbl -> GetGCHeapData(This,data) ) #define ISOSDacInterface_GetGCHeapList(This,count,heaps,pNeeded) \ - ( (This)->lpVtbl -> GetGCHeapList(This,count,heaps,pNeeded) ) + ( (This)->lpVtbl -> GetGCHeapList(This,count,heaps,pNeeded) ) #define ISOSDacInterface_GetGCHeapDetails(This,heap,details) \ - ( (This)->lpVtbl -> GetGCHeapDetails(This,heap,details) ) + ( (This)->lpVtbl -> GetGCHeapDetails(This,heap,details) ) #define ISOSDacInterface_GetGCHeapStaticData(This,data) \ - ( (This)->lpVtbl -> GetGCHeapStaticData(This,data) ) + ( (This)->lpVtbl -> GetGCHeapStaticData(This,data) ) #define ISOSDacInterface_GetHeapSegmentData(This,seg,data) \ - ( (This)->lpVtbl -> GetHeapSegmentData(This,seg,data) ) + ( (This)->lpVtbl -> GetHeapSegmentData(This,seg,data) ) #define ISOSDacInterface_GetOOMData(This,oomAddr,data) \ - ( (This)->lpVtbl -> GetOOMData(This,oomAddr,data) ) + ( (This)->lpVtbl -> GetOOMData(This,oomAddr,data) ) #define ISOSDacInterface_GetOOMStaticData(This,data) \ - ( (This)->lpVtbl -> GetOOMStaticData(This,data) ) + ( (This)->lpVtbl -> GetOOMStaticData(This,data) ) #define ISOSDacInterface_GetHeapAnalyzeData(This,addr,data) \ - ( (This)->lpVtbl -> GetHeapAnalyzeData(This,addr,data) ) + ( (This)->lpVtbl -> GetHeapAnalyzeData(This,addr,data) ) #define ISOSDacInterface_GetHeapAnalyzeStaticData(This,data) \ - ( (This)->lpVtbl -> GetHeapAnalyzeStaticData(This,data) ) + ( (This)->lpVtbl -> GetHeapAnalyzeStaticData(This,data) ) #define ISOSDacInterface_GetDomainLocalModuleData(This,addr,data) \ - ( (This)->lpVtbl -> GetDomainLocalModuleData(This,addr,data) ) + ( (This)->lpVtbl -> GetDomainLocalModuleData(This,addr,data) ) #define ISOSDacInterface_GetDomainLocalModuleDataFromAppDomain(This,appDomainAddr,moduleID,data) \ - ( (This)->lpVtbl -> GetDomainLocalModuleDataFromAppDomain(This,appDomainAddr,moduleID,data) ) + ( (This)->lpVtbl -> GetDomainLocalModuleDataFromAppDomain(This,appDomainAddr,moduleID,data) ) #define ISOSDacInterface_GetDomainLocalModuleDataFromModule(This,moduleAddr,data) \ - ( (This)->lpVtbl -> GetDomainLocalModuleDataFromModule(This,moduleAddr,data) ) + ( (This)->lpVtbl -> GetDomainLocalModuleDataFromModule(This,moduleAddr,data) ) #define ISOSDacInterface_GetThreadLocalModuleData(This,thread,index,data) \ - ( (This)->lpVtbl -> GetThreadLocalModuleData(This,thread,index,data) ) + ( (This)->lpVtbl -> GetThreadLocalModuleData(This,thread,index,data) ) #define ISOSDacInterface_GetSyncBlockData(This,number,data) \ - ( (This)->lpVtbl -> GetSyncBlockData(This,number,data) ) + ( (This)->lpVtbl -> GetSyncBlockData(This,number,data) ) #define ISOSDacInterface_GetSyncBlockCleanupData(This,addr,data) \ - ( (This)->lpVtbl -> GetSyncBlockCleanupData(This,addr,data) ) + ( (This)->lpVtbl -> GetSyncBlockCleanupData(This,addr,data) ) #define ISOSDacInterface_GetHandleEnum(This,ppHandleEnum) \ - ( (This)->lpVtbl -> GetHandleEnum(This,ppHandleEnum) ) + ( (This)->lpVtbl -> GetHandleEnum(This,ppHandleEnum) ) #define ISOSDacInterface_GetHandleEnumForTypes(This,types,count,ppHandleEnum) \ - ( (This)->lpVtbl -> GetHandleEnumForTypes(This,types,count,ppHandleEnum) ) + ( (This)->lpVtbl -> GetHandleEnumForTypes(This,types,count,ppHandleEnum) ) #define ISOSDacInterface_GetHandleEnumForGC(This,gen,ppHandleEnum) \ - ( (This)->lpVtbl -> GetHandleEnumForGC(This,gen,ppHandleEnum) ) + ( (This)->lpVtbl -> GetHandleEnumForGC(This,gen,ppHandleEnum) ) #define ISOSDacInterface_TraverseEHInfo(This,ip,pCallback,token) \ - ( (This)->lpVtbl -> TraverseEHInfo(This,ip,pCallback,token) ) + ( (This)->lpVtbl -> TraverseEHInfo(This,ip,pCallback,token) ) #define ISOSDacInterface_GetNestedExceptionData(This,exception,exceptionObject,nextNestedException) \ - ( (This)->lpVtbl -> GetNestedExceptionData(This,exception,exceptionObject,nextNestedException) ) + ( (This)->lpVtbl -> GetNestedExceptionData(This,exception,exceptionObject,nextNestedException) ) #define ISOSDacInterface_GetStressLogAddress(This,stressLog) \ - ( (This)->lpVtbl -> GetStressLogAddress(This,stressLog) ) + ( (This)->lpVtbl -> GetStressLogAddress(This,stressLog) ) #define ISOSDacInterface_TraverseLoaderHeap(This,loaderHeapAddr,pCallback) \ - ( (This)->lpVtbl -> TraverseLoaderHeap(This,loaderHeapAddr,pCallback) ) + ( (This)->lpVtbl -> TraverseLoaderHeap(This,loaderHeapAddr,pCallback) ) #define ISOSDacInterface_GetCodeHeapList(This,jitManager,count,codeHeaps,pNeeded) \ - ( (This)->lpVtbl -> GetCodeHeapList(This,jitManager,count,codeHeaps,pNeeded) ) + ( (This)->lpVtbl -> GetCodeHeapList(This,jitManager,count,codeHeaps,pNeeded) ) #define ISOSDacInterface_TraverseVirtCallStubHeap(This,pAppDomain,heaptype,pCallback) \ - ( (This)->lpVtbl -> TraverseVirtCallStubHeap(This,pAppDomain,heaptype,pCallback) ) + ( (This)->lpVtbl -> TraverseVirtCallStubHeap(This,pAppDomain,heaptype,pCallback) ) #define ISOSDacInterface_GetUsefulGlobals(This,data) \ - ( (This)->lpVtbl -> GetUsefulGlobals(This,data) ) + ( (This)->lpVtbl -> GetUsefulGlobals(This,data) ) #define ISOSDacInterface_GetClrWatsonBuckets(This,thread,pGenericModeBlock) \ - ( (This)->lpVtbl -> GetClrWatsonBuckets(This,thread,pGenericModeBlock) ) + ( (This)->lpVtbl -> GetClrWatsonBuckets(This,thread,pGenericModeBlock) ) #define ISOSDacInterface_GetTLSIndex(This,pIndex) \ - ( (This)->lpVtbl -> GetTLSIndex(This,pIndex) ) + ( (This)->lpVtbl -> GetTLSIndex(This,pIndex) ) #define ISOSDacInterface_GetDacModuleHandle(This,phModule) \ - ( (This)->lpVtbl -> GetDacModuleHandle(This,phModule) ) + ( (This)->lpVtbl -> GetDacModuleHandle(This,phModule) ) #define ISOSDacInterface_GetRCWData(This,addr,data) \ - ( (This)->lpVtbl -> GetRCWData(This,addr,data) ) + ( (This)->lpVtbl -> GetRCWData(This,addr,data) ) #define ISOSDacInterface_GetRCWInterfaces(This,rcw,count,interfaces,pNeeded) \ - ( (This)->lpVtbl -> GetRCWInterfaces(This,rcw,count,interfaces,pNeeded) ) + ( (This)->lpVtbl -> GetRCWInterfaces(This,rcw,count,interfaces,pNeeded) ) #define ISOSDacInterface_GetCCWData(This,ccw,data) \ - ( (This)->lpVtbl -> GetCCWData(This,ccw,data) ) + ( (This)->lpVtbl -> GetCCWData(This,ccw,data) ) #define ISOSDacInterface_GetCCWInterfaces(This,ccw,count,interfaces,pNeeded) \ - ( (This)->lpVtbl -> GetCCWInterfaces(This,ccw,count,interfaces,pNeeded) ) + ( (This)->lpVtbl -> GetCCWInterfaces(This,ccw,count,interfaces,pNeeded) ) #define ISOSDacInterface_TraverseRCWCleanupList(This,cleanupListPtr,pCallback,token) \ - ( (This)->lpVtbl -> TraverseRCWCleanupList(This,cleanupListPtr,pCallback,token) ) + ( (This)->lpVtbl -> TraverseRCWCleanupList(This,cleanupListPtr,pCallback,token) ) #define ISOSDacInterface_GetStackReferences(This,osThreadID,ppEnum) \ - ( (This)->lpVtbl -> GetStackReferences(This,osThreadID,ppEnum) ) + ( (This)->lpVtbl -> GetStackReferences(This,osThreadID,ppEnum) ) #define ISOSDacInterface_GetRegisterName(This,regName,count,buffer,pNeeded) \ - ( (This)->lpVtbl -> GetRegisterName(This,regName,count,buffer,pNeeded) ) + ( (This)->lpVtbl -> GetRegisterName(This,regName,count,buffer,pNeeded) ) #define ISOSDacInterface_GetThreadAllocData(This,thread,data) \ - ( (This)->lpVtbl -> GetThreadAllocData(This,thread,data) ) + ( (This)->lpVtbl -> GetThreadAllocData(This,thread,data) ) #define ISOSDacInterface_GetHeapAllocData(This,count,data,pNeeded) \ - ( (This)->lpVtbl -> GetHeapAllocData(This,count,data,pNeeded) ) + ( (This)->lpVtbl -> GetHeapAllocData(This,count,data,pNeeded) ) #define ISOSDacInterface_GetFailedAssemblyList(This,appDomain,count,values,pNeeded) \ - ( (This)->lpVtbl -> GetFailedAssemblyList(This,appDomain,count,values,pNeeded) ) + ( (This)->lpVtbl -> GetFailedAssemblyList(This,appDomain,count,values,pNeeded) ) #define ISOSDacInterface_GetPrivateBinPaths(This,appDomain,count,paths,pNeeded) \ - ( (This)->lpVtbl -> GetPrivateBinPaths(This,appDomain,count,paths,pNeeded) ) + ( (This)->lpVtbl -> GetPrivateBinPaths(This,appDomain,count,paths,pNeeded) ) #define ISOSDacInterface_GetAssemblyLocation(This,assembly,count,location,pNeeded) \ - ( (This)->lpVtbl -> GetAssemblyLocation(This,assembly,count,location,pNeeded) ) + ( (This)->lpVtbl -> GetAssemblyLocation(This,assembly,count,location,pNeeded) ) #define ISOSDacInterface_GetAppDomainConfigFile(This,appDomain,count,configFile,pNeeded) \ - ( (This)->lpVtbl -> GetAppDomainConfigFile(This,appDomain,count,configFile,pNeeded) ) + ( (This)->lpVtbl -> GetAppDomainConfigFile(This,appDomain,count,configFile,pNeeded) ) #define ISOSDacInterface_GetApplicationBase(This,appDomain,count,base,pNeeded) \ - ( (This)->lpVtbl -> GetApplicationBase(This,appDomain,count,base,pNeeded) ) + ( (This)->lpVtbl -> GetApplicationBase(This,appDomain,count,base,pNeeded) ) #define ISOSDacInterface_GetFailedAssemblyData(This,assembly,pContext,pResult) \ - ( (This)->lpVtbl -> GetFailedAssemblyData(This,assembly,pContext,pResult) ) + ( (This)->lpVtbl -> GetFailedAssemblyData(This,assembly,pContext,pResult) ) #define ISOSDacInterface_GetFailedAssemblyLocation(This,assesmbly,count,location,pNeeded) \ - ( (This)->lpVtbl -> GetFailedAssemblyLocation(This,assesmbly,count,location,pNeeded) ) + ( (This)->lpVtbl -> GetFailedAssemblyLocation(This,assesmbly,count,location,pNeeded) ) #define ISOSDacInterface_GetFailedAssemblyDisplayName(This,assembly,count,name,pNeeded) \ - ( (This)->lpVtbl -> GetFailedAssemblyDisplayName(This,assembly,count,name,pNeeded) ) + ( (This)->lpVtbl -> GetFailedAssemblyDisplayName(This,assembly,count,name,pNeeded) ) #endif /* COBJMACROS */ @@ -1938,56 +1950,56 @@ EXTERN_C const IID IID_ISOSDacInterface; #define __ISOSDacInterface2_INTERFACE_DEFINED__ /* interface ISOSDacInterface2 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface2; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("A16026EC-96F4-40BA-87FB-5575986FB7AF") ISOSDacInterface2 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetObjectExceptionData( + virtual HRESULT STDMETHODCALLTYPE GetObjectExceptionData( CLRDATA_ADDRESS objAddr, struct DacpExceptionObjectData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE IsRCWDCOMProxy( + + virtual HRESULT STDMETHODCALLTYPE IsRCWDCOMProxy( CLRDATA_ADDRESS rcwAddr, BOOL *isDCOMProxy) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface2Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface2 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface2 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface2 * This); - - HRESULT ( STDMETHODCALLTYPE *GetObjectExceptionData )( + + HRESULT ( STDMETHODCALLTYPE *GetObjectExceptionData )( ISOSDacInterface2 * This, CLRDATA_ADDRESS objAddr, struct DacpExceptionObjectData *data); - - HRESULT ( STDMETHODCALLTYPE *IsRCWDCOMProxy )( + + HRESULT ( STDMETHODCALLTYPE *IsRCWDCOMProxy )( ISOSDacInterface2 * This, CLRDATA_ADDRESS rcwAddr, BOOL *isDCOMProxy); - + END_INTERFACE } ISOSDacInterface2Vtbl; @@ -1996,26 +2008,26 @@ EXTERN_C const IID IID_ISOSDacInterface2; CONST_VTBL struct ISOSDacInterface2Vtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface2_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface2_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface2_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface2_GetObjectExceptionData(This,objAddr,data) \ - ( (This)->lpVtbl -> GetObjectExceptionData(This,objAddr,data) ) + ( (This)->lpVtbl -> GetObjectExceptionData(This,objAddr,data) ) #define ISOSDacInterface2_IsRCWDCOMProxy(This,rcwAddr,isDCOMProxy) \ - ( (This)->lpVtbl -> IsRCWDCOMProxy(This,rcwAddr,isDCOMProxy) ) + ( (This)->lpVtbl -> IsRCWDCOMProxy(This,rcwAddr,isDCOMProxy) ) #endif /* COBJMACROS */ @@ -2032,61 +2044,61 @@ EXTERN_C const IID IID_ISOSDacInterface2; #define __ISOSDacInterface3_INTERFACE_DEFINED__ /* interface ISOSDacInterface3 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface3; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("B08C5CDC-FD8A-49C5-AB38-5FEEF35235B4") ISOSDacInterface3 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetGCInterestingInfoData( + virtual HRESULT STDMETHODCALLTYPE GetGCInterestingInfoData( CLRDATA_ADDRESS interestingInfoAddr, struct DacpGCInterestingInfoData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGCInterestingInfoStaticData( + + virtual HRESULT STDMETHODCALLTYPE GetGCInterestingInfoStaticData( struct DacpGCInterestingInfoData *data) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGCGlobalMechanisms( + + virtual HRESULT STDMETHODCALLTYPE GetGCGlobalMechanisms( size_t *globalMechanisms) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface3Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface3 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface3 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface3 * This); - - HRESULT ( STDMETHODCALLTYPE *GetGCInterestingInfoData )( + + HRESULT ( STDMETHODCALLTYPE *GetGCInterestingInfoData )( ISOSDacInterface3 * This, CLRDATA_ADDRESS interestingInfoAddr, struct DacpGCInterestingInfoData *data); - - HRESULT ( STDMETHODCALLTYPE *GetGCInterestingInfoStaticData )( + + HRESULT ( STDMETHODCALLTYPE *GetGCInterestingInfoStaticData )( ISOSDacInterface3 * This, struct DacpGCInterestingInfoData *data); - - HRESULT ( STDMETHODCALLTYPE *GetGCGlobalMechanisms )( + + HRESULT ( STDMETHODCALLTYPE *GetGCGlobalMechanisms )( ISOSDacInterface3 * This, size_t *globalMechanisms); - + END_INTERFACE } ISOSDacInterface3Vtbl; @@ -2095,29 +2107,29 @@ EXTERN_C const IID IID_ISOSDacInterface3; CONST_VTBL struct ISOSDacInterface3Vtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface3_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface3_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface3_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface3_GetGCInterestingInfoData(This,interestingInfoAddr,data) \ - ( (This)->lpVtbl -> GetGCInterestingInfoData(This,interestingInfoAddr,data) ) + ( (This)->lpVtbl -> GetGCInterestingInfoData(This,interestingInfoAddr,data) ) #define ISOSDacInterface3_GetGCInterestingInfoStaticData(This,data) \ - ( (This)->lpVtbl -> GetGCInterestingInfoStaticData(This,data) ) + ( (This)->lpVtbl -> GetGCInterestingInfoStaticData(This,data) ) #define ISOSDacInterface3_GetGCGlobalMechanisms(This,globalMechanisms) \ - ( (This)->lpVtbl -> GetGCGlobalMechanisms(This,globalMechanisms) ) + ( (This)->lpVtbl -> GetGCGlobalMechanisms(This,globalMechanisms) ) #endif /* COBJMACROS */ @@ -2134,49 +2146,49 @@ EXTERN_C const IID IID_ISOSDacInterface3; #define __ISOSDacInterface4_INTERFACE_DEFINED__ /* interface ISOSDacInterface4 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface4; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("74B9D34C-A612-4B07-93DD-5462178FCE11") ISOSDacInterface4 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetClrNotification( + virtual HRESULT STDMETHODCALLTYPE GetClrNotification( CLRDATA_ADDRESS arguments[ ], int count, int *pNeeded) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface4Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface4 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface4 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface4 * This); - - HRESULT ( STDMETHODCALLTYPE *GetClrNotification )( + + HRESULT ( STDMETHODCALLTYPE *GetClrNotification )( ISOSDacInterface4 * This, CLRDATA_ADDRESS arguments[ ], int count, int *pNeeded); - + END_INTERFACE } ISOSDacInterface4Vtbl; @@ -2185,23 +2197,23 @@ EXTERN_C const IID IID_ISOSDacInterface4; CONST_VTBL struct ISOSDacInterface4Vtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface4_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface4_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface4_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface4_GetClrNotification(This,arguments,count,pNeeded) \ - ( (This)->lpVtbl -> GetClrNotification(This,arguments,count,pNeeded) ) + ( (This)->lpVtbl -> GetClrNotification(This,arguments,count,pNeeded) ) #endif /* COBJMACROS */ @@ -2218,53 +2230,53 @@ EXTERN_C const IID IID_ISOSDacInterface4; #define __ISOSDacInterface5_INTERFACE_DEFINED__ /* interface ISOSDacInterface5 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface5; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("127d6abe-6c86-4e48-8e7b-220781c58101") ISOSDacInterface5 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetTieredVersions( + virtual HRESULT STDMETHODCALLTYPE GetTieredVersions( CLRDATA_ADDRESS methodDesc, int rejitId, struct DacpTieredVersionData *nativeCodeAddrs, int cNativeCodeAddrs, int *pcNativeCodeAddrs) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface5Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface5 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface5 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface5 * This); - - HRESULT ( STDMETHODCALLTYPE *GetTieredVersions )( + + HRESULT ( STDMETHODCALLTYPE *GetTieredVersions )( ISOSDacInterface5 * This, CLRDATA_ADDRESS methodDesc, int rejitId, struct DacpTieredVersionData *nativeCodeAddrs, int cNativeCodeAddrs, int *pcNativeCodeAddrs); - + END_INTERFACE } ISOSDacInterface5Vtbl; @@ -2273,23 +2285,23 @@ EXTERN_C const IID IID_ISOSDacInterface5; CONST_VTBL struct ISOSDacInterface5Vtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface5_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface5_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface5_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface5_GetTieredVersions(This,methodDesc,rejitId,nativeCodeAddrs,cNativeCodeAddrs,pcNativeCodeAddrs) \ - ( (This)->lpVtbl -> GetTieredVersions(This,methodDesc,rejitId,nativeCodeAddrs,cNativeCodeAddrs,pcNativeCodeAddrs) ) + ( (This)->lpVtbl -> GetTieredVersions(This,methodDesc,rejitId,nativeCodeAddrs,cNativeCodeAddrs,pcNativeCodeAddrs) ) #endif /* COBJMACROS */ @@ -2306,47 +2318,47 @@ EXTERN_C const IID IID_ISOSDacInterface5; #define __ISOSDacInterface6_INTERFACE_DEFINED__ /* interface ISOSDacInterface6 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface6; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("11206399-4B66-4EDB-98EA-85654E59AD45") ISOSDacInterface6 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetMethodTableCollectibleData( + virtual HRESULT STDMETHODCALLTYPE GetMethodTableCollectibleData( CLRDATA_ADDRESS mt, struct DacpMethodTableCollectibleData *data) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface6Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface6 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface6 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface6 * This); - - HRESULT ( STDMETHODCALLTYPE *GetMethodTableCollectibleData )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodTableCollectibleData )( ISOSDacInterface6 * This, CLRDATA_ADDRESS mt, struct DacpMethodTableCollectibleData *data); - + END_INTERFACE } ISOSDacInterface6Vtbl; @@ -2355,23 +2367,23 @@ EXTERN_C const IID IID_ISOSDacInterface6; CONST_VTBL struct ISOSDacInterface6Vtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface6_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface6_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface6_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface6_GetMethodTableCollectibleData(This,mt,data) \ - ( (This)->lpVtbl -> GetMethodTableCollectibleData(This,mt,data) ) + ( (This)->lpVtbl -> GetMethodTableCollectibleData(This,mt,data) ) #endif /* COBJMACROS */ @@ -2388,80 +2400,80 @@ EXTERN_C const IID IID_ISOSDacInterface6; #define __ISOSDacInterface7_INTERFACE_DEFINED__ /* interface ISOSDacInterface7 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface7; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("c1020dde-fe98-4536-a53b-f35a74c327eb") ISOSDacInterface7 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetPendingReJITID( + virtual HRESULT STDMETHODCALLTYPE GetPendingReJITID( CLRDATA_ADDRESS methodDesc, int *pRejitId) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetReJITInformation( + + virtual HRESULT STDMETHODCALLTYPE GetReJITInformation( CLRDATA_ADDRESS methodDesc, int rejitId, struct DacpReJitData2 *pRejitData) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetProfilerModifiedILInformation( + + virtual HRESULT STDMETHODCALLTYPE GetProfilerModifiedILInformation( CLRDATA_ADDRESS methodDesc, struct DacpProfilerILData *pILData) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetMethodsWithProfilerModifiedIL( + + virtual HRESULT STDMETHODCALLTYPE GetMethodsWithProfilerModifiedIL( CLRDATA_ADDRESS mod, CLRDATA_ADDRESS *methodDescs, int cMethodDescs, int *pcMethodDescs) = 0; - + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface7Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface7 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface7 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface7 * This); - - HRESULT ( STDMETHODCALLTYPE *GetPendingReJITID )( + + HRESULT ( STDMETHODCALLTYPE *GetPendingReJITID )( ISOSDacInterface7 * This, CLRDATA_ADDRESS methodDesc, int *pRejitId); - - HRESULT ( STDMETHODCALLTYPE *GetReJITInformation )( + + HRESULT ( STDMETHODCALLTYPE *GetReJITInformation )( ISOSDacInterface7 * This, CLRDATA_ADDRESS methodDesc, int rejitId, struct DacpReJitData2 *pRejitData); - - HRESULT ( STDMETHODCALLTYPE *GetProfilerModifiedILInformation )( + + HRESULT ( STDMETHODCALLTYPE *GetProfilerModifiedILInformation )( ISOSDacInterface7 * This, CLRDATA_ADDRESS methodDesc, struct DacpProfilerILData *pILData); - - HRESULT ( STDMETHODCALLTYPE *GetMethodsWithProfilerModifiedIL )( + + HRESULT ( STDMETHODCALLTYPE *GetMethodsWithProfilerModifiedIL )( ISOSDacInterface7 * This, CLRDATA_ADDRESS mod, CLRDATA_ADDRESS *methodDescs, int cMethodDescs, int *pcMethodDescs); - + END_INTERFACE } ISOSDacInterface7Vtbl; @@ -2470,32 +2482,32 @@ EXTERN_C const IID IID_ISOSDacInterface7; CONST_VTBL struct ISOSDacInterface7Vtbl *lpVtbl; }; - + #ifdef COBJMACROS #define ISOSDacInterface7_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface7_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface7_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface7_GetPendingReJITID(This,methodDesc,pRejitId) \ - ( (This)->lpVtbl -> GetPendingReJITID(This,methodDesc,pRejitId) ) + ( (This)->lpVtbl -> GetPendingReJITID(This,methodDesc,pRejitId) ) #define ISOSDacInterface7_GetReJITInformation(This,methodDesc,rejitId,pRejitData) \ - ( (This)->lpVtbl -> GetReJITInformation(This,methodDesc,rejitId,pRejitData) ) + ( (This)->lpVtbl -> GetReJITInformation(This,methodDesc,rejitId,pRejitData) ) #define ISOSDacInterface7_GetProfilerModifiedILInformation(This,methodDesc,pILData) \ - ( (This)->lpVtbl -> GetProfilerModifiedILInformation(This,methodDesc,pILData) ) + ( (This)->lpVtbl -> GetProfilerModifiedILInformation(This,methodDesc,pILData) ) #define ISOSDacInterface7_GetMethodsWithProfilerModifiedIL(This,mod,methodDescs,cMethodDescs,pcMethodDescs) \ - ( (This)->lpVtbl -> GetMethodsWithProfilerModifiedIL(This,mod,methodDescs,cMethodDescs,pcMethodDescs) ) + ( (This)->lpVtbl -> GetMethodsWithProfilerModifiedIL(This,mod,methodDescs,cMethodDescs,pcMethodDescs) ) #endif /* COBJMACROS */ @@ -2512,101 +2524,102 @@ EXTERN_C const IID IID_ISOSDacInterface7; #define __ISOSDacInterface8_INTERFACE_DEFINED__ /* interface ISOSDacInterface8 */ -/* [uuid][local][object] */ +/* [uuid][local][object] */ EXTERN_C const IID IID_ISOSDacInterface8; #if defined(__cplusplus) && !defined(CINTERFACE) - + MIDL_INTERFACE("c12f35a9-e55c-4520-a894-b3dc5165dfce") ISOSDacInterface8 : public IUnknown { public: - virtual HRESULT STDMETHODCALLTYPE GetNumberGenerations( + virtual HRESULT STDMETHODCALLTYPE GetNumberGenerations( unsigned int *pGenerations) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGenerationTable( + + virtual HRESULT STDMETHODCALLTYPE GetGenerationTable( unsigned int cGenerations, struct DacpGenerationData *pGenerationData, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFinalizationFillPointers( + + virtual HRESULT STDMETHODCALLTYPE GetFinalizationFillPointers( unsigned int cFillPointers, CLRDATA_ADDRESS *pFinalizationFillPointers, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetGenerationTableSvr( + + virtual HRESULT STDMETHODCALLTYPE GetGenerationTableSvr( CLRDATA_ADDRESS heapAddr, unsigned int cGenerations, struct DacpGenerationData *pGenerationData, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetFinalizationFillPointersSvr( + + virtual HRESULT STDMETHODCALLTYPE GetFinalizationFillPointersSvr( CLRDATA_ADDRESS heapAddr, unsigned int cFillPointers, CLRDATA_ADDRESS *pFinalizationFillPointers, unsigned int *pNeeded) = 0; - - virtual HRESULT STDMETHODCALLTYPE GetAssemblyLoadContext( + + virtual HRESULT STDMETHODCALLTYPE GetAssemblyLoadContext( CLRDATA_ADDRESS methodTable, - CLRDATA_ADDRESS* assemblyLoadContext) = 0; + CLRDATA_ADDRESS *assemblyLoadContext) = 0; + }; - - + + #else /* C style interface */ typedef struct ISOSDacInterface8Vtbl { BEGIN_INTERFACE - - HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ISOSDacInterface8 * This, /* [in] */ REFIID riid, - /* [annotation][iid_is][out] */ + /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); - - ULONG ( STDMETHODCALLTYPE *AddRef )( + + ULONG ( STDMETHODCALLTYPE *AddRef )( ISOSDacInterface8 * This); - - ULONG ( STDMETHODCALLTYPE *Release )( + + ULONG ( STDMETHODCALLTYPE *Release )( ISOSDacInterface8 * This); - - HRESULT ( STDMETHODCALLTYPE *GetNumberGenerations )( + + HRESULT ( STDMETHODCALLTYPE *GetNumberGenerations )( ISOSDacInterface8 * This, unsigned int *pGenerations); - - HRESULT ( STDMETHODCALLTYPE *GetGenerationTable )( + + HRESULT ( STDMETHODCALLTYPE *GetGenerationTable )( ISOSDacInterface8 * This, unsigned int cGenerations, struct DacpGenerationData *pGenerationData, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetFinalizationFillPointers )( + + HRESULT ( STDMETHODCALLTYPE *GetFinalizationFillPointers )( ISOSDacInterface8 * This, unsigned int cFillPointers, CLRDATA_ADDRESS *pFinalizationFillPointers, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetGenerationTableSvr )( + + HRESULT ( STDMETHODCALLTYPE *GetGenerationTableSvr )( ISOSDacInterface8 * This, CLRDATA_ADDRESS heapAddr, unsigned int cGenerations, struct DacpGenerationData *pGenerationData, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetFinalizationFillPointersSvr )( + + HRESULT ( STDMETHODCALLTYPE *GetFinalizationFillPointersSvr )( ISOSDacInterface8 * This, CLRDATA_ADDRESS heapAddr, unsigned int cFillPointers, CLRDATA_ADDRESS *pFinalizationFillPointers, unsigned int *pNeeded); - - HRESULT ( STDMETHODCALLTYPE *GetAssemblyLoadContext )( + + HRESULT ( STDMETHODCALLTYPE *GetAssemblyLoadContext )( ISOSDacInterface8 * This, CLRDATA_ADDRESS methodTable, CLRDATA_ADDRESS *assemblyLoadContext); - + END_INTERFACE } ISOSDacInterface8Vtbl; @@ -2615,37 +2628,38 @@ EXTERN_C const IID IID_ISOSDacInterface8; CONST_VTBL struct ISOSDacInterface8Vtbl *lpVtbl; }; + #ifdef COBJMACROS #define ISOSDacInterface8_QueryInterface(This,riid,ppvObject) \ - ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define ISOSDacInterface8_AddRef(This) \ - ( (This)->lpVtbl -> AddRef(This) ) + ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface8_Release(This) \ - ( (This)->lpVtbl -> Release(This) ) + ( (This)->lpVtbl -> Release(This) ) #define ISOSDacInterface8_GetNumberGenerations(This,pGenerations) \ - ( (This)->lpVtbl -> GetNumberGenerations(This,pGenerations) ) + ( (This)->lpVtbl -> GetNumberGenerations(This,pGenerations) ) #define ISOSDacInterface8_GetGenerationTable(This,cGenerations,pGenerationData,pNeeded) \ - ( (This)->lpVtbl -> GetGenerationTable(This,cGenerations,pGenerationData,pNeeded) ) + ( (This)->lpVtbl -> GetGenerationTable(This,cGenerations,pGenerationData,pNeeded) ) #define ISOSDacInterface8_GetFinalizationFillPointers(This,cFillPointers,pFinalizationFillPointers,pNeeded) \ - ( (This)->lpVtbl -> GetFinalizationFillPointers(This,cFillPointers,pFinalizationFillPointers,pNeeded) ) + ( (This)->lpVtbl -> GetFinalizationFillPointers(This,cFillPointers,pFinalizationFillPointers,pNeeded) ) #define ISOSDacInterface8_GetGenerationTableSvr(This,heapAddr,cGenerations,pGenerationData,pNeeded) \ - ( (This)->lpVtbl -> GetGenerationTableSvr(This,heapAddr,cGenerations,pGenerationData,pNeeded) ) + ( (This)->lpVtbl -> GetGenerationTableSvr(This,heapAddr,cGenerations,pGenerationData,pNeeded) ) #define ISOSDacInterface8_GetFinalizationFillPointersSvr(This,heapAddr,cFillPointers,pFinalizationFillPointers,pNeeded) \ - ( (This)->lpVtbl -> GetFinalizationFillPointersSvr(This,heapAddr,cFillPointers,pFinalizationFillPointers,pNeeded) ) + ( (This)->lpVtbl -> GetFinalizationFillPointersSvr(This,heapAddr,cFillPointers,pFinalizationFillPointers,pNeeded) ) -#define ISOSDacInterface8_GetAssemblyLoadContext(This,methodTable,assemblyLoadContext) \ - ( (This)->lpVtbl -> GetAssemblyLoadContext(This,methodTable,assemblyLoadContext) ) +#define ISOSDacInterface8_GetAssemblyLoadContext(This,methodTable,assemblyLoadContext) \ + ( (This)->lpVtbl -> GetAssemblyLoadContext(This,methodTable,assemblyLoadContext) ) #endif /* COBJMACROS */ @@ -2688,7 +2702,7 @@ EXTERN_C const IID IID_ISOSDacInterface9; }; -#else /* C style interface */ +#else /* C style interface */ typedef struct ISOSDacInterface9Vtbl { @@ -2723,17 +2737,17 @@ EXTERN_C const IID IID_ISOSDacInterface9; #ifdef COBJMACROS -#define ISOSDacInterface9_QueryInterface(This,riid,ppvObject) \ +#define ISOSDacInterface9_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) -#define ISOSDacInterface9_AddRef(This) \ +#define ISOSDacInterface9_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define ISOSDacInterface9_Release(This) \ ( (This)->lpVtbl -> Release(This) ) -#define ISOSDacInterface9_GetBreakingChangeVersion(This,pVersion) \ +#define ISOSDacInterface9_GetBreakingChangeVersion(This,pVersion) \ ( (This)->lpVtbl -> GetBreakingChangeVersion(This,pVersion) ) #endif /* COBJMACROS */ @@ -2742,9 +2756,149 @@ EXTERN_C const IID IID_ISOSDacInterface9; #endif /* C style interface */ + + #endif /* __ISOSDacInterface9_INTERFACE_DEFINED__ */ +#ifndef __ISOSDacInterface10_INTERFACE_DEFINED__ +#define __ISOSDacInterface10_INTERFACE_DEFINED__ + +/* interface ISOSDacInterface10 */ +/* [uuid][local][object] */ + + +EXTERN_C const IID IID_ISOSDacInterface10; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("90B8FCC3-7251-4B0A-AE3D-5C13A67EC9AA") + ISOSDacInterface10 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetObjectComWrappersData( + CLRDATA_ADDRESS objAddr, + CLRDATA_ADDRESS *rcw, + unsigned int count, + CLRDATA_ADDRESS *mowList, + unsigned int *pNeeded) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsComWrappersCCW( + CLRDATA_ADDRESS ccw, + BOOL *isComWrappersCCW) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetComWrappersCCWData( + CLRDATA_ADDRESS ccw, + CLRDATA_ADDRESS *managedObject, + int *refCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsComWrappersRCW( + CLRDATA_ADDRESS rcw, + BOOL *isComWrappersRCW) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetComWrappersRCWData( + CLRDATA_ADDRESS rcw, + CLRDATA_ADDRESS *identity) = 0; + + }; + + +#else /* C style interface */ + + typedef struct ISOSDacInterface10Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + ISOSDacInterface10 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + ISOSDacInterface10 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + ISOSDacInterface10 * This); + + HRESULT ( STDMETHODCALLTYPE *GetObjectComWrappersData )( + ISOSDacInterface10 * This, + CLRDATA_ADDRESS objAddr, + CLRDATA_ADDRESS *rcw, + unsigned int count, + CLRDATA_ADDRESS *mowList, + unsigned int *pNeeded); + + HRESULT ( STDMETHODCALLTYPE *IsComWrappersCCW )( + ISOSDacInterface10 * This, + CLRDATA_ADDRESS ccw, + BOOL *isComWrappersCCW); + + HRESULT ( STDMETHODCALLTYPE *GetComWrappersCCWData )( + ISOSDacInterface10 * This, + CLRDATA_ADDRESS ccw, + CLRDATA_ADDRESS *managedObject, + int *refCount); + + HRESULT ( STDMETHODCALLTYPE *IsComWrappersRCW )( + ISOSDacInterface10 * This, + CLRDATA_ADDRESS rcw, + BOOL *isComWrappersRCW); + + HRESULT ( STDMETHODCALLTYPE *GetComWrappersRCWData )( + ISOSDacInterface10 * This, + CLRDATA_ADDRESS rcw, + CLRDATA_ADDRESS *identity); + + END_INTERFACE + } ISOSDacInterface10Vtbl; + + interface ISOSDacInterface10 + { + CONST_VTBL struct ISOSDacInterface10Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISOSDacInterface10_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISOSDacInterface10_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISOSDacInterface10_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISOSDacInterface10_GetObjectComWrappersData(This,objAddr,rcw,count,mowList,pNeeded) \ + ( (This)->lpVtbl -> GetObjectComWrappersData(This,objAddr,rcw,count,mowList,pNeeded) ) + +#define ISOSDacInterface10_IsComWrappersCCW(This,ccw,isComWrappersCCW) \ + ( (This)->lpVtbl -> IsComWrappersCCW(This,ccw,isComWrappersCCW) ) + +#define ISOSDacInterface10_GetComWrappersCCWData(This,ccw,managedObject,refCount) \ + ( (This)->lpVtbl -> GetComWrappersCCWData(This,ccw,managedObject,refCount) ) + +#define ISOSDacInterface10_IsComWrappersRCW(This,rcw,isComWrappersRCW) \ + ( (This)->lpVtbl -> IsComWrappersRCW(This,rcw,isComWrappersRCW) ) + +#define ISOSDacInterface10_GetComWrappersRCWData(This,rcw,identity) \ + ( (This)->lpVtbl -> GetComWrappersRCWData(This,rcw,identity) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISOSDacInterface10_INTERFACE_DEFINED__ */ + + /* Additional Prototypes for ALL interfaces */ /* end of Additional Prototypes */ @@ -2755,3 +2909,4 @@ EXTERN_C const IID IID_ISOSDacInterface9; #endif + diff --git a/src/coreclr/src/vm/interoplibinterface.cpp b/src/coreclr/src/vm/interoplibinterface.cpp index 7c8ab4d1b6aa24..b94aa6b10ef48c 100644 --- a/src/coreclr/src/vm/interoplibinterface.cpp +++ b/src/coreclr/src/vm/interoplibinterface.cpp @@ -12,6 +12,7 @@ #include "interoplibinterface.h" + using CreateObjectFlags = InteropLib::Com::CreateObjectFlags; using CreateComInterfaceFlags = InteropLib::Com::CreateComInterfaceFlags; @@ -22,6 +23,7 @@ namespace { static const DWORD InvalidSyncBlockIndex; + INT_PTR Sentinel; void* Identity; void* ThreadContext; DWORD SyncBlockIndex; @@ -55,6 +57,7 @@ namespace } CONTRACTL_END; + cxt->Sentinel = ExternalObjectContextSentinelValue; cxt->Identity = (void*)identity; cxt->ThreadContext = threadContext; cxt->SyncBlockIndex = syncBlockIndex; @@ -129,6 +132,12 @@ namespace } }; + // These Sentinel and Identity are used by the DAC, any changes to the layout must be updated on the DAC side (request.cpp) + static constexpr size_t DACSentinelOffset = 0; + static constexpr size_t DACIdentityOffset = sizeof(INT_PTR); + static_assert(offsetof(ExternalObjectContext, Sentinel) == DACSentinelOffset, "Keep in sync with DAC interfaces"); + static_assert(offsetof(ExternalObjectContext, Identity) == DACIdentityOffset, "Keep in sync with DAC interfaces"); + const DWORD ExternalObjectContext::InvalidSyncBlockIndex = 0; // See syncblk.h static_assert((sizeof(ExternalObjectContext) % sizeof(void*)) == 0, "Keep context pointer size aligned"); @@ -1359,7 +1368,7 @@ void QCALLTYPE ComWrappersNative::GetIUnknownImpl( END_QCALL; } -void ComWrappersNative::DestroyManagedObjectComWrapper(_In_ void* wrapper) +void ComWrappersNative::DestroyManagedObjectComWrapper(_In_ void* wrapper, void *unused) { CONTRACTL { @@ -1369,6 +1378,8 @@ void ComWrappersNative::DestroyManagedObjectComWrapper(_In_ void* wrapper) } CONTRACTL_END; + _ASSERTE(unused == NULL && "Someone is passing data to this function but it is ignoring it."); + STRESS_LOG1(LF_INTEROP, LL_INFO100, "Destroying MOW: 0x%p\n", wrapper); InteropLib::Com::DestroyWrapperForObject(wrapper); } diff --git a/src/coreclr/src/vm/interoplibinterface.h b/src/coreclr/src/vm/interoplibinterface.h index a1f34e6557531d..d6e5fce9104fc4 100644 --- a/src/coreclr/src/vm/interoplibinterface.h +++ b/src/coreclr/src/vm/interoplibinterface.h @@ -35,7 +35,7 @@ class ComWrappersNative _Inout_ QCall::ObjectHandleOnStack retValue); public: // Lifetime management for COM Wrappers - static void DestroyManagedObjectComWrapper(_In_ void* wrapper); + static void DestroyManagedObjectComWrapper(_In_ void* wrapper, _Out_opt_ void *unused); static void DestroyExternalComObjectContext(_In_ void* context); static void MarkExternalComObjectContextCollected(_In_ void* context); @@ -99,3 +99,5 @@ class Interop // Notify when GC finished static void OnGCFinished(_In_ int nCondemnedGeneration); }; + +constexpr INT_PTR ExternalObjectContextSentinelValue = (INT_PTR)0xE0E0E0E0E0E0E0E0; diff --git a/src/coreclr/src/vm/syncblk.h b/src/coreclr/src/vm/syncblk.h index 6467a414186539..409e726ac4d5fc 100644 --- a/src/coreclr/src/vm/syncblk.h +++ b/src/coreclr/src/vm/syncblk.h @@ -605,9 +605,15 @@ typedef DPTR(class ComCallWrapper) PTR_ComCallWrapper; #include "shash.h" #endif // FEATURE_COMINTEROP +using ManagedObjectComWrapperByIdMap = MapSHash; +typedef DPTR(ManagedObjectComWrapperByIdMap) PTR_ManagedObjectComWrapperByIdMap; + class InteropSyncBlockInfo { friend class RCWHolder; +#ifdef DACCESS_COMPILE + friend class ClrDataAccess; +#endif public: #ifndef TARGET_UNIX @@ -792,6 +798,7 @@ class InteropSyncBlockInfo #endif public: + bool TryGetManagedObjectComWrapper(_In_ INT64 wrapperId, _Out_ void** mocw) { LIMITED_METHOD_DAC_CONTRACT; @@ -804,6 +811,15 @@ class InteropSyncBlockInfo return m_managedObjectComWrapperMap->Lookup(wrapperId, mocw); } + using EnumWrappersCallback = void(void* mocw, void *additionalData); + void IterateComWrappers(EnumWrappersCallback* callback, void *additionalData = NULL) + { + LIMITED_METHOD_DAC_CONTRACT; + + CrstHolder lock(&m_managedObjectComWrapperLock); + IterateComWrappersDontTakeLock(callback, additionalData); + } + #ifndef DACCESS_COMPILE bool TrySetManagedObjectComWrapper(_In_ INT64 wrapperId, _In_ void* mocw, _In_ void* curr = NULL) { @@ -830,7 +846,6 @@ class InteropSyncBlockInfo return true; } - using EnumWrappersCallback = void(void* mocw); void ClearManagedObjectComWrappers(EnumWrappersCallback* callback) { LIMITED_METHOD_CONTRACT; @@ -839,20 +854,9 @@ class InteropSyncBlockInfo return; CrstHolder lock(&m_managedObjectComWrapperLock); - - if (callback != NULL) - { - ManagedObjectComWrapperByIdMap::Iterator iter = m_managedObjectComWrapperMap->Begin(); - while (iter != m_managedObjectComWrapperMap->End()) - { - callback(iter->Value()); - ++iter; - } - } - + IterateComWrappersDontTakeLock(callback); m_managedObjectComWrapperMap->RemoveAll(); } -#endif // !DACCESS_COMPILE bool TryGetExternalComObjectContext(_Out_ void** eoc) { @@ -861,7 +865,6 @@ class InteropSyncBlockInfo return (*eoc != NULL); } -#ifndef DACCESS_COMPILE bool TrySetExternalComObjectContext(_In_ void* eoc, _In_ void* curr = NULL) { LIMITED_METHOD_CONTRACT; @@ -875,11 +878,26 @@ class InteropSyncBlockInfo private: // See InteropLib API for usage. - void* m_externalComObjectContext; + PTR_VOID m_externalComObjectContext; - using ManagedObjectComWrapperByIdMap = MapSHash; CrstExplicitInit m_managedObjectComWrapperLock; - NewHolder m_managedObjectComWrapperMap; + PTR_ManagedObjectComWrapperByIdMap m_managedObjectComWrapperMap; + + void IterateComWrappersDontTakeLock(EnumWrappersCallback* callback, void *additionalData = NULL) + { + LIMITED_METHOD_DAC_CONTRACT; + + if (m_managedObjectComWrapperMap != NULL && callback != NULL) + { + ManagedObjectComWrapperByIdMap::Iterator iter = m_managedObjectComWrapperMap->Begin(); + while (iter != m_managedObjectComWrapperMap->End()) + { + callback(iter->Value(), additionalData); + ++iter; + } + } + } + #endif // FEATURE_COMINTEROP }; @@ -889,6 +907,7 @@ typedef DPTR(InteropSyncBlockInfo) PTR_InteropSyncBlockInfo; // this is a lazily created additional block for an object which contains // synchronzation information and other "kitchen sink" data typedef DPTR(SyncBlock) PTR_SyncBlock; + // See code:#SyncBlockOverview for more class SyncBlock {