home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / dotNETSDK / SETUP.EXE / netfxsd1.cab / FL_mdinfo_h________.3643236F_FC70_11D3_A536_0090278A1BB8 < prev    next >
Encoding:
Text File  |  2002-05-16  |  7.0 KB  |  199 lines

  1. //*****************************************************************************
  2. // File: mdinfo.h
  3. //
  4. // Copyright (c) Microsoft Corporation.  All Rights Reserved.
  5. //*****************************************************************************
  6. #ifndef _mdinfo_h
  7. #define _mdinfo_h
  8.  
  9. #include "cor.h"
  10. #include "corhlpr.h"
  11.  
  12. #define STRING_BUFFER_LEN 1024
  13.  
  14. typedef void (*strPassBackFn)(char *str);
  15.  
  16. class MDInfo {
  17. public:
  18.     enum DUMP_FILTER
  19.     {
  20.         dumpDefault        = 0x00000000,                // Dump everything but debugger data.
  21.         dumpSchema        = 0x00000002,                // Dump the metadata schema.
  22.         dumpRaw            = 0x00000004,                // Dump the metadata in raw table format.
  23.         dumpHeader        = 0x00000008,                // Dump just the metadata header info.
  24.         dumpCSV            = 0x00000010,                // Dump the metadata header info in CSV format.
  25.         dumpUnsat        = 0x00000020,                // Dump unresolved methods or memberref
  26.         dumpAssem        = 0x00000040,
  27.         dumpStats        = 0x00000080,                // Dump more statistics about tables.
  28.         dumpMoreHex        = 0x00000100,                // Dump more things in hex.
  29.         dumpValidate    = 0x00000200,               // Validate MetaData.
  30.         dumpRawHeaps    = 0x00000400,               // Also dump the heaps in the raw dump.
  31.         dumpNoLogo        = 0x00000800,                // Don't display the logo or MVID
  32.     };
  33.  
  34.  
  35. public:
  36.     MDInfo(IMetaDataImport* pImport, IMetaDataAssemblyImport* pAssemblyImport, LPCWSTR szScope, strPassBackFn inPBFn, ULONG DumpFilter);
  37.     MDInfo(IMetaDataDispenserEx *inDisp, LPCWSTR  szScope, strPassBackFn inPBFn, ULONG DumpFilter=dumpDefault);
  38.     MDInfo(IMetaDataDispenserEx *inDisp, PBYTE pManifest, DWORD dwSize, strPassBackFn inPBFn, ULONG DumpFilter=dumpDefault);
  39.     ~MDInfo();
  40.  
  41.     void DisplayMD(void);
  42.  
  43.     LPWSTR VariantAsString(VARIANT *pVariant);
  44.  
  45.     void DisplayVersionInfo(void);
  46.  
  47.     void DisplayScopeInfo(void);
  48.  
  49.     void DisplayGlobalFunctions(void);
  50.     void DisplayGlobalFields(void);
  51.     void DisplayFieldRVA(mdFieldDef field);
  52.     void DisplayGlobalMemberRefs(void);
  53.  
  54.     void DisplayTypeDefs(void);
  55.     void DisplayTypeDefInfo(mdTypeDef inTypeDef);
  56.     void DisplayTypeDefProps(mdTypeDef inTypeDef);
  57.     
  58.     void DisplayModuleRefs(void);
  59.     void DisplayModuleRefInfo(mdModuleRef inModuleRef);
  60.  
  61.     void DisplaySignatures(void);
  62.     void DisplaySignatureInfo(mdSignature inSignature);
  63.  
  64.     LPCWSTR TokenName(mdToken inToken, LPWSTR buffer, ULONG bufLen);
  65.  
  66.     LPCWSTR TypeDeforRefName(mdToken inToken, LPWSTR buffer, ULONG bufLen);
  67.     LPCWSTR TypeDefName(mdTypeDef inTypeDef, LPWSTR buffer, ULONG bufLen);
  68.     LPCWSTR TypeRefName(mdTypeRef tr, LPWSTR buffer, ULONG bufLen);
  69.  
  70.     LPCWSTR MemberDeforRefName(mdToken inToken, LPWSTR buffer, ULONG bufLen);
  71.     LPCWSTR MemberRefName(mdToken inMemRef, LPWSTR buffer, ULONG bufLen);
  72.     LPCWSTR MemberName(mdToken inMember, LPWSTR buffer, ULONG bufLen);
  73.  
  74.     LPCWSTR MethodName(mdMethodDef inToken, LPWSTR buffer, ULONG bufLen);
  75.     LPCWSTR FieldName(mdFieldDef inToken, LPWSTR buffer, ULONG bufLen);
  76.  
  77.     char *ClassFlags(DWORD flags, char *sFlags);
  78.  
  79.     void DisplayTypeRefs(void);
  80.     void DisplayTypeRefInfo(mdTypeRef tr);
  81.     void DisplayTypeSpecs(void);
  82.     void DisplayTypeSpecInfo(mdTypeSpec ts, const char *preFix);
  83.     
  84.     void DisplayCorNativeLink(COR_NATIVE_LINK *pCorNLnk, const char *preFix);
  85.     void DisplayCustomAttributeInfo(mdCustomAttribute inValue, const char *preFix);
  86.     void DisplayCustomAttributes(mdToken inToken, const char *preFix);
  87.  
  88.     void DisplayInterfaceImpls(mdTypeDef inTypeDef);
  89.     void DisplayInterfaceImplInfo(mdInterfaceImpl inImpl);
  90.  
  91.     LPWSTR GUIDAsString(GUID inGuid, LPWSTR guidString, ULONG bufLen);
  92.  
  93.     char *VariantTypeName(ULONG valueType, char *szAttr);
  94.     char *TokenTypeName(mdToken inToken);
  95.  
  96.     // Com99 function prototypes
  97.  
  98.     void DisplayMemberInfo(mdToken inMember);
  99.     void DisplayMethodInfo(mdMethodDef method, DWORD *pflags = 0);
  100.     void DisplayFieldInfo(mdFieldDef field, DWORD *pflags = 0);
  101.     
  102.     void DisplayMethods(mdTypeDef inTypeDef);
  103.     void DisplayFields(mdTypeDef inTypeDef, COR_FIELD_OFFSET *rFieldOffset, ULONG cFieldOffset);
  104.  
  105.     void DisplaySignature(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, const char *preFix);
  106.     HRESULT GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, ULONG *pcb);
  107.  
  108.     void DisplayMemberRefs(mdToken tkParent, const char *preFix);
  109.     void DisplayMemberRefInfo(mdMemberRef inMemRef, const char *preFix);
  110.  
  111.     void DisplayMethodImpls(mdTypeDef inTypeDef);
  112.  
  113.     void DisplayParams(mdMethodDef inMthDef);
  114.     void DisplayParamInfo(mdParamDef inParam);
  115.  
  116.     void DisplayPropertyInfo(mdProperty inProp);
  117.     void DisplayProperties(mdTypeDef inTypeDef);
  118.  
  119.     void DisplayEventInfo(mdEvent inEvent);
  120.     void DisplayEvents(mdTypeDef inTypeDef);
  121.  
  122.     void DisplayPermissions(mdToken tk, const char *preFix);
  123.     void DisplayPermissionInfo(mdPermission inPermission, const char *preFix);
  124.  
  125.     void DisplayFieldMarshal(mdToken inToken);
  126.  
  127.     void DisplayPinvokeInfo(mdToken inToken);
  128.  
  129.     void DisplayAssembly();
  130.  
  131.     void DisplayAssemblyInfo();
  132.  
  133.     void DisplayAssemblyRefs();
  134.     void DisplayAssemblyRefInfo(mdAssemblyRef inAssemblyRef);
  135.  
  136.     void DisplayFiles();
  137.     void DisplayFileInfo(mdFile inFile);
  138.  
  139.     void DisplayExportedTypes();
  140.     void DisplayExportedTypeInfo(mdExportedType inExportedType);
  141.  
  142.     void DisplayManifestResources();
  143.     void DisplayManifestResourceInfo(mdManifestResource inManifestResource);
  144.  
  145.     void DisplayASSEMBLYMETADATA(ASSEMBLYMETADATA *pMetaData);
  146.  
  147.     void DisplayUserStrings();
  148.  
  149.     void DisplayUnsatInfo();
  150.  
  151.     void DisplayRaw();
  152.     void DumpRawHeaps();
  153.     void DumpRaw(int iDump=1, bool bStats=false);
  154.     void DumpRawCSV();
  155.     void DumpRawCol(ULONG ixTbl, ULONG ixCol, ULONG rid, bool bStats);
  156.     ULONG DumpRawColStats(ULONG ixTbl, ULONG ixCol, ULONG cRows);
  157.     const char *DumpRawNameOfType(ULONG ulType);
  158.     void SetVEHandlerReporter(__int64 VEHandlerReporterPtr) { m_VEHandlerReporterPtr = VEHandlerReporterPtr; };
  159.  
  160.     static void Error(const char *szError, HRESULT hr = S_OK);
  161. private:
  162.     void Init(strPassBackFn inPBFn, DUMP_FILTER DumpFilter); // Common initialization code.
  163.  
  164.     int DumpHex(const char *szPrefix, const void *pvData, ULONG cbData, int bText=true, ULONG nLine=16);
  165.  
  166.     int Write(char *str);
  167.     int WriteLine(char *str);
  168.  
  169.     int VWrite(char *str, ...);
  170.     int VWriteLine(char *str, ...);
  171.     int    VWrite(char *str, va_list marker);
  172.     
  173.     void InitSigBuffer();
  174.     HRESULT AddToSigBuffer(char *string);
  175.  
  176.     IMetaDataDispenserEx *m_pDisp;
  177.     IMetaDataImport *m_pRegImport;
  178.     IMetaDataImport *m_pImport;
  179.     IMetaDataAssemblyImport *m_pAssemblyImport;
  180.     strPassBackFn m_pbFn;
  181.     __int64 m_VEHandlerReporterPtr;
  182.     IMetaDataTables *m_pTables;
  183.  
  184.     CQuickBytes m_output;
  185.     DUMP_FILTER m_DumpFilter;
  186.  
  187.     // temporary buffer for TypeDef or TypeRef name. Consume immediately
  188.     // because other functions may overwrite it.
  189.     WCHAR            m_szTempBuf[STRING_BUFFER_LEN];
  190.  
  191.     // temporary buffer for formatted string. Consume immediately before any function calls.
  192.     char            m_tempFormatBuffer[STRING_BUFFER_LEN];
  193.  
  194.     // Signature buffer.
  195.     CQuickBytes        m_sigBuf;
  196. };
  197.  
  198. #endif
  199.