|
#pragma once
struct CLRClass
{
ClassID classId;
mdTypeDef metaDataToken;
std::wstring fullTypeName;
bool hasFinalizer;
};
typedef void (*ClassLoaded) (const CLRClass &, void *);
class TypeTracker
{
public:
TypeTracker(void);
~TypeTracker(void);
void Initialize(CComPtr<ICorProfilerInfo2> pCorProfilerInfo);
void RegisterForClassLoad(ClassLoaded classLoaded, void *pClientData);
HRESULT GetCLRClassFor(ClassID classId, CLRClass *pCLRClass);
HRESULT ClassLoadFinished(ClassID classId, HRESULT hrStatus);
private:
void *m_pClientData;
ClassLoaded m_pClassLoadedCallback;
CComPtr<ICorProfilerInfo2> m_pCorProfilerInfo;
typedef std::map<ClassID, CLRClass>::iterator TYPES_TO_WATCH_ITERATOR;
std::map<ClassID, CLRClass> m_TypesCache;
HRESULT CreateAndAddToCache(ClassID classId, CLRClass *pCLRClass);
HRESULT DoesTypeHaveFinalizer(CComPtr<IMetaDataImport2> pMetaDataGetter, ClassID classId, mdToken typeDefToken, bool *result);
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I'm a 27 yrs old developer working with Atmel R&D India Pvt. Ltd., Chennai. I'm currently working in C# and C++, but I've done some Java programming as well. I was a Microsoft MVP in Visual C# from 2007 to 2009.
You can read
My Blog here. I've also done some open source software - please visit my
website to know more.