From e349defad90ce8b2eef164e31937ce7a4edd9e9f Mon Sep 17 00:00:00 2001 From: mikedn Date: Thu, 19 Jan 2017 01:49:36 +0200 Subject: [PATCH] Remove ILDASM GUI cruft (dotnet/coreclr#8954) Commit migrated from https://github.com/dotnet/coreclr/commit/69e9c8a6b5bbacaa85b4b7953796364cca02a6a5 --- src/coreclr/src/ildasm/Litening.ico | Bin 766 -> 0 bytes src/coreclr/src/ildasm/class.bmp | Bin 3126 -> 0 bytes src/coreclr/src/ildasm/classa.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classag.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classe.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classeg.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classi.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classig.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classv.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/classvg.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/dasm.cpp | 227 +- src/coreclr/src/ildasm/dasm.rc | 245 -- src/coreclr/src/ildasm/dasm_pr.cpp | 275 -- src/coreclr/src/ildasm/dasmgui.h | 15 - src/coreclr/src/ildasm/dasmhlp.hhc | 32 - src/coreclr/src/ildasm/dis.cpp | 35 +- src/coreclr/src/ildasm/dman.cpp | 22 +- src/coreclr/src/ildasm/dres.cpp | 1 - src/coreclr/src/ildasm/event.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/exe/CMakeLists.txt | 4 +- src/coreclr/src/ildasm/field.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/gui.cpp | 4013 -------------------- src/coreclr/src/ildasm/gui.h | 155 - src/coreclr/src/ildasm/html/clicking.htm | 35 - src/coreclr/src/ildasm/html/keyboard.htm | 166 - src/coreclr/src/ildasm/html/menu_options.htm | 324 -- src/coreclr/src/ildasm/html/tree_view_icons.htm | 102 - .../ildasm/html/tree_view_icons_files/class.gif | Bin 960 -> 0 bytes .../src/ildasm/html/tree_view_icons_files/enum.gif | Bin 987 -> 0 bytes .../ildasm/html/tree_view_icons_files/event.gif | Bin 963 -> 0 bytes .../ildasm/html/tree_view_icons_files/field.gif | Bin 965 -> 0 bytes .../html/tree_view_icons_files/interface.gif | Bin 981 -> 0 bytes .../tree_view_icons_files/manifest_classinfo.GIF | Bin 843 -> 0 bytes .../tree_view_icons_files/manifest_classinfo.jpg | Bin 723 -> 0 bytes .../tree_view_icons_files/manifest_classinfo.png | Bin 926 -> 0 bytes .../ildasm/html/tree_view_icons_files/method.gif | Bin 963 -> 0 bytes .../html/tree_view_icons_files/namespace.gif | Bin 969 -> 0 bytes .../ildasm/html/tree_view_icons_files/property.gif | Bin 961 -> 0 bytes .../html/tree_view_icons_files/static_field.gif | Bin 978 -> 0 bytes .../html/tree_view_icons_files/static_method.gif | Bin 977 -> 0 bytes .../html/tree_view_icons_files/value_class.gif | Bin 960 -> 0 bytes src/coreclr/src/ildasm/ildasm.chm | Bin 18371 -> 0 bytes src/coreclr/src/ildasm/ildasm.hhp | 36 - src/coreclr/src/ildasm/map.h | 8 - src/coreclr/src/ildasm/method.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/methodg.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/namespace.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/prop.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/rcdll/CMakeLists.txt | 2 +- src/coreclr/src/ildasm/redarrow.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/resource.h | 57 - src/coreclr/src/ildasm/staticfield.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/staticmethod.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/staticmethodg.bmp | Bin 1318 -> 0 bytes src/coreclr/src/ildasm/windasm.cpp | 133 +- 55 files changed, 25 insertions(+), 5862 deletions(-) delete mode 100644 src/coreclr/src/ildasm/Litening.ico delete mode 100644 src/coreclr/src/ildasm/class.bmp delete mode 100644 src/coreclr/src/ildasm/classa.bmp delete mode 100644 src/coreclr/src/ildasm/classag.bmp delete mode 100644 src/coreclr/src/ildasm/classe.bmp delete mode 100644 src/coreclr/src/ildasm/classeg.bmp delete mode 100644 src/coreclr/src/ildasm/classi.bmp delete mode 100644 src/coreclr/src/ildasm/classig.bmp delete mode 100644 src/coreclr/src/ildasm/classv.bmp delete mode 100644 src/coreclr/src/ildasm/classvg.bmp delete mode 100644 src/coreclr/src/ildasm/dasm_pr.cpp delete mode 100644 src/coreclr/src/ildasm/dasmgui.h delete mode 100644 src/coreclr/src/ildasm/dasmhlp.hhc delete mode 100644 src/coreclr/src/ildasm/event.bmp delete mode 100644 src/coreclr/src/ildasm/field.bmp delete mode 100644 src/coreclr/src/ildasm/gui.cpp delete mode 100644 src/coreclr/src/ildasm/gui.h delete mode 100644 src/coreclr/src/ildasm/html/clicking.htm delete mode 100644 src/coreclr/src/ildasm/html/keyboard.htm delete mode 100644 src/coreclr/src/ildasm/html/menu_options.htm delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons.htm delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/class.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/enum.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/event.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/field.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/interface.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/manifest_classinfo.GIF delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/manifest_classinfo.jpg delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/manifest_classinfo.png delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/method.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/namespace.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/property.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/static_field.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/static_method.gif delete mode 100644 src/coreclr/src/ildasm/html/tree_view_icons_files/value_class.gif delete mode 100644 src/coreclr/src/ildasm/ildasm.chm delete mode 100644 src/coreclr/src/ildasm/ildasm.hhp delete mode 100644 src/coreclr/src/ildasm/map.h delete mode 100644 src/coreclr/src/ildasm/method.bmp delete mode 100644 src/coreclr/src/ildasm/methodg.bmp delete mode 100644 src/coreclr/src/ildasm/namespace.bmp delete mode 100644 src/coreclr/src/ildasm/prop.bmp delete mode 100644 src/coreclr/src/ildasm/redarrow.bmp delete mode 100644 src/coreclr/src/ildasm/staticfield.bmp delete mode 100644 src/coreclr/src/ildasm/staticmethod.bmp delete mode 100644 src/coreclr/src/ildasm/staticmethodg.bmp diff --git a/src/coreclr/src/ildasm/Litening.ico b/src/coreclr/src/ildasm/Litening.ico deleted file mode 100644 index 7bdaa4f1e9eac8b03acc6c3b7c182c90eb586b76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmaiyF;2uV5Je{}65X&B?WW`w;V4_}HP%OSN68fyAt5R&Wr}ErH$iB}BP8s6JKyuZ z6H68u=;OE-Z(nyJPt4C~L@#KNdq$B$?eA77QYqzUV&oMSskKtD?GZD7Lv&yA;lHLC zIHrZqqN-$MA3h$e~iUc6cZ~$T~JSxfw8=QnM zU58U*1C~n?zKlowILalfoP=OqFU~4dc5=eU932^t>+gfq6co zi32jWH~(PHKky~hk=4o{9JNFNgY(6akE2u{nJ{txAhd)p8q;R?Pe{dm+Xogc;m7A2 zR{+Z$X#Zi&f^+usg%Dp5VHXwo0X0YjIpRfZPkjJ#ph&o1lTV2;+(M--VBysHGSMtt P`3Mz_oXfc?a9Ra^LF7S0 diff --git a/src/coreclr/src/ildasm/classa.bmp b/src/coreclr/src/ildasm/classa.bmp deleted file mode 100644 index d0467c45e38111093ed8d5acbd9d818129ab55e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF^<(h494*fiIwQMf-A%cs4aT#;G_5`E)eIiw%jvN_z15DDf}n1TCGMT`Q;lY zqn9^{zyJ91qff!$%P+|s0d82KF_H@g z1|CQh8Y6{Za8N{|(3scf8tDim3XPE%stk@mqR<%rq+oCa5{1S{92$cokSH`pF8-zr zYY!v}joC{xBOQT6p)q^eZloiSC^Tljk}%Q{NE8~gUsoFG2qX%P*{`yUbOaKG#_ZSJ zMmhqCLSybv;A5mCkSH`p$@)`Xe05{1UxEtF%VBakRGM$P(L21g)KSo`eOG9w*< zM4>Ue?c7L5AW>+{Zpkpx5l9pov)eU|bOaKG#_U!uBOQT6p)tG7+ek+sQF{Ej^pknX z?@8Bv=(^Sj?Ca91pWimhOMl8x diff --git a/src/coreclr/src/ildasm/classag.bmp b/src/coreclr/src/ildasm/classag.bmp deleted file mode 100644 index 72793ce02f95f6f8e4824ad040b3c769c3101960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF|O4>429u?1QHc&!4+Z!)D}H^@KU@K7f-CidZJ(h*1$8lz_ZErTPFD6DPv z(lR3*fkdG(d)c{>jzFT&n7t&!NJk)1Xv|)&X`~~NC^Tj-Dl!xw*_PXnJT(_eS;Q9KszK*}v Q*YVeSkH5VCI{DP}4^6ZkA^-pY diff --git a/src/coreclr/src/ildasm/classe.bmp b/src/coreclr/src/ildasm/classe.bmp deleted file mode 100644 index a5f641c915988f952ce03fc998bad8ecda7b00d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFv5nj?5QX7qzy_STg^3JTaPh#odzjz~nNlV&+{O(yyc!%#37b1u{}i={#o3fT zJyN15QR4R>Uq9(6Pamak)V`cP=<{*@dK~|ENQqsUJ2+BRcdLK5uCKo&a|F0xg~muO z7^rw4QD}@5g26!}5{1T`&o$B!NE8|)QB@fnfkdG(yrf`o1QLbDNbDMeBakRGMlN1c zhP4F}g~sfunURh_qR^NpNE8~gKS>zr2qX%P*`F(obOaKG#_Ug7MmhqCLSy!4 zZX+FmM4>UqFYqza5l9poqh$Um!TzDVLFsK%&r?z0BK4M<7wU{<-NV z{gUyd+p+6*TQ#t)Q>*>_R%qVz@>ZUA`*N0-qaW8Vm(}I+Z~MG|U0+?!`{_?v?NyHZ i-?!iQKgWL<@8NmJaBGD7c&qm+_vh`_y}br`DEbQ>dg`wL diff --git a/src/coreclr/src/ildasm/classeg.bmp b/src/coreclr/src/ildasm/classeg.bmp deleted file mode 100644 index 3aeded1ed2e090801176bb159c8929f53d3428c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZY7F^<(h490OIfkXvYaD_MlwMEYzTnVJnM;yGf?;lucrwA8E2zqndCQL zCYek!$$b6x>7DHI<*mqPjy|5=$oqZ%LH+Z?*e9+kMA#)_f|^6ADyiQkk6%AT)ZpNP zCJHTL0tE-=2qX$E;sS+%h6fUbKA)?k!4XIlT7*MMg~1U>6q=V5C=8B3qR=Aj(h7qk zkSMg6@S37nn1qR{h8 zT}gu@kSO&0ZXOb0a0C*Co~4jV8XSQ{p=X(tk_Ja0QRuydqLnl_0*OLPG5->U!4XKT zt!HVek_Ja0QRrEArli3UNECXOq$_D~1QLawS`+Z%w|KFbe`#N22=l!%P mtG&v;|8<+u{^@^?|6;rs&)dUMUE{58l;`KYdjGk2)$$iYS@%-_ diff --git a/src/coreclr/src/ildasm/classi.bmp b/src/coreclr/src/ildasm/classi.bmp deleted file mode 100644 index 74d64feb0957f6130a2d54bc44d80e1859a2005d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmb`_J&qJX42Izk2_!PE;0Wyrh%IvN;G_5`4pv-atqnN?fsZgbD-CbAXGe%7q`IH} zs`_W9s@q?`eg2@ceR(fE(ED`rP9M+nm-G0qLrUz*+~7!8-L3xFy8QSqnIpgjD>O!O z!9d3Yi9%zf5DX3mktj6g_P<6t0*OLnB)TetBakRGhDizrM<7vXjKr=nI0A`6W8`9* zG8|hVQE1FA&5U#e5{1U>vfW5WAW>+{zLGG~5l9pov#%?SbOaKG#_X#sBOQT6p)vcK z+ek+sQE1Hh34Dxn1QLbDC|Q5XaI8FVY=y=sO)xkDi9%!cv$>IuK%&r?{iI=}BakRG zWTTCT*l6kSH|fETJ4D9f3rlF>2P|GB^T>!m-VkmKo^? zBnpk$vU4LHfkdG(Tasav}zUU^`A7SMp+g{H5&g-1ut~cZR^SA4NkB($NSX=Dr!KJtqFA#NDSFEUkg-f`5u5@@azB(Wf5}A4O zC6oEfOg?^k_exj!@KSnD>+Q1_dVL*#r2hJ5T?g(}O6SfO_jkBNE8~wO9}=@AW>+H#I7+o0*OLn z@+4Pqa??t$z-j@pIN0|5yLq;P>%A Y`~Q3WU(Y`m-k*Pso@(Fc8v9l0Cm{tK#Q*>R diff --git a/src/coreclr/src/ildasm/classv.bmp b/src/coreclr/src/ildasm/classv.bmp deleted file mode 100644 index ecf345ac05f99fb61f0d286093964d2374c2231b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF^<(h494*f2_!nM;0o;ts4aT#;9?KrqqsnO4P0{u3LoM16yZOa)oL{&$uHkH z8NIwo{Qbw*PrA2nAEhToUtWFC=llBOKL78O5{EK(aAv6PR{v=|e!ocO2ynv+jgee1 zFz`U4&=@HMgM%Uxg~q%-*GNYoQD}_BP-Sog5{1U_Ck2BekSH`p;?NizfkdG(a`881 zSbHE*Xv|)k8R-Zl3XR#zb|W2uM4>VJm4uOwK%&r?{kqafM<7vX%zl++q$7|hG-ki% zHqsGD6dH4X0v{tCfkdG(O4gq;td$4WUTBQc1cM`xC^Tk&HaF4{NE8~gKWP~02qX%P z*`J$-WI6(gLSuF-l#z}=qR^P#CT*l6kSH|fZlN3_9f3rlF>2P|GB^T>!rEuImKo^? zBnpk$ZRbWh0*OLnc1wnljzFT&nBA^vq$7|hG-kJQ8R-Zl3XR!q-bOkCiPGcmrJu}8 zeowmYL)W!NU|*M3{rt93Ui$U6J)iZO`2PM`pYzZ9oPXBm{IfpipY=KauGi_^rhnOa B>MH;M diff --git a/src/coreclr/src/ildasm/classvg.bmp b/src/coreclr/src/ildasm/classvg.bmp deleted file mode 100644 index a77f99b35927b6d714c65a404cf58fa6bd65e4d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF|O4>429u?1QHc&!4+Z!)D}H^aPb!6rMP%v8`lLDYoPEFZch>Z$vjTK2nGj5Bnpjrd#;g=K%&qXiLT1v2qX%P;UxuwBakRGMq<|(9Dzik zF>>*mGOR6-C^TkI&5U#e5{1U>X}gh*K%&r?{Yk<|M<7vX%>GTzDU^|pK%&r?y-eCjM<7vX%(;YejC2GNg~q6vf6L$qBnoSr zy|m0oM<7vX%wBeGq$7|hG-fZ!Fwzl76dJRaYZ~bYBnpk$OSz161QLbD>}B3YIs%E( z{qLby#wGWYj&s*>tRC3bsa3x`8s(weqrL2U9ap=Z<8(WV|JLiu^Yv@JZt#5lT3^Rs R>+ASyy~khPf1P}4`Uj{o0p0)r diff --git a/src/coreclr/src/ildasm/dasm.cpp b/src/coreclr/src/ildasm/dasm.cpp index 86ff5a8..7b6bca9 100644 --- a/src/coreclr/src/ildasm/dasm.cpp +++ b/src/coreclr/src/ildasm/dasm.cpp @@ -17,7 +17,6 @@ #include "dasmenum.hpp" #include "dis.h" -#include "dasmgui.h" #include "resource.h" #include "dasm_sz.h" @@ -35,13 +34,6 @@ #include #endif -#ifndef FEATURE_CORECLR -// Define also LegacyActivationShim::CoInitializeEE wrapper around CoInitializeEE -#define LEGACY_ACTIVATION_SHIM_DEFINE_CoInitializeEE -#include "LegacyActivationShim.h" -#include "clrinternal.h" -#endif - #ifdef FEATURE_PAL #include "coreclrloader.h" #include "resourcestring.h" @@ -119,7 +111,6 @@ BOOL g_fHidePrivScope = TRUE; BOOL g_fProject = FALSE; // if .winmd file, transform to .NET view extern BOOL g_fQuoteAllNames; // declared in formatType.cpp, init to FALSE -BOOL g_fShowProgressBar = TRUE; BOOL g_fForwardDecl=FALSE; char g_szAsmCodeIndent[MAX_MEMBER_LENGTH]; @@ -170,8 +161,6 @@ void DisplayFile(__in __nullterminated wchar_t* szFile, __in_opt __nullterminated wchar_t* szObjFile, strPassBackFn pDisplayString); extern mdMethodDef g_tkEntryPoint; // integration with MetaInfo -// Abort disassembly flag: -BOOL g_fAbortDisassembly = FALSE; DWORD DumpResourceToFile(__in __nullterminated WCHAR* wzFileName); // see DRES.CPP @@ -319,12 +308,6 @@ extern CQuickBytes * g_szBuf_JUMPPT; extern CQuickBytes * g_szBuf_UnquotedProperName; extern CQuickBytes * g_szBuf_ProperName; -#ifndef FEATURE_CORECLR -// CLR internal hosting API -ICLRRuntimeHostInternal *g_pCLRRuntimeHostInternal = NULL; -#endif - -#ifdef FEATURE_CORECLR #ifdef FEATURE_PAL CoreCLRLoader *g_loader; #endif @@ -332,11 +315,9 @@ MetaDataGetDispenserFunc metaDataGetDispenser; GetMetaDataInternalInterfaceFunc getMetaDataInternalInterface; GetMetaDataInternalInterfaceFromPublicFunc getMetaDataInternalInterfaceFromPublic; GetMetaDataPublicInterfaceFromInternalFunc getMetaDataPublicInterfaceFromInternal; -#endif BOOL Init() { -#ifdef FEATURE_CORECLR #ifdef FEATURE_PAL g_loader = CoreCLRLoader::Create(g_pszExeFile); if (g_loader == NULL) @@ -353,37 +334,7 @@ BOOL Init() getMetaDataInternalInterfaceFromPublic = (GetMetaDataInternalInterfaceFromPublicFunc)GetMetaDataInternalInterfaceFromPublic; getMetaDataPublicInterfaceFromInternal = (GetMetaDataPublicInterfaceFromInternalFunc)GetMetaDataPublicInterfaceFromInternal; #endif // FEATURE_PAL -#else // FEATURE_CORECLR - if (FAILED(CoInitialize(NULL))) - { - return FALSE; - } - - if (FAILED(LegacyActivationShim::CoInitializeCor(COINITCOR_DEFAULT))) - { - return FALSE; - } - - if (FAILED(LegacyActivationShim::CoInitializeEE(COINITEE_DEFAULT))) - { - return FALSE; - } - - ICLRRuntimeInfo *pCLRRuntimeInfo = NULL; - if (FAILED(LegacyActivationShim::Util::GetCLRRuntimeInfo(&pCLRRuntimeInfo))) - { - return FALSE; - } - - if (FAILED(pCLRRuntimeInfo->GetInterface( - CLSID_CLRRuntimeHostInternal, - IID_ICLRRuntimeHostInternal, - (LPVOID *)&g_pCLRRuntimeHostInternal))) - { - return FALSE; - } -#endif // FEATURE_CORECLR - + g_szBuf_KEYWORD = new CQuickBytes(); g_szBuf_COMMENT = new CQuickBytes(); g_szBuf_ERRORMSG = new CQuickBytes(); @@ -482,10 +433,6 @@ void Cleanup() void Uninit() { -#ifndef FEATURE_CORECLR - GUIAddOpcode(NULL,NULL); -#endif - if (g_pPtrTags != NULL) { SDELETE(g_pPtrTags); @@ -541,24 +488,12 @@ void Uninit() SDELETE(g_szBuf_ProperName); } -#ifdef FEATURE_CORECLR #ifdef FEATURE_PAL if (g_loader != NULL) { g_loader->Finish(); } #endif -#else - if (g_pCLRRuntimeHostInternal != NULL) - { - g_pCLRRuntimeHostInternal->Release(); - g_pCLRRuntimeHostInternal = NULL; - } - - LegacyActivationShim::CoUninitializeEE(COUNINITEE_DEFAULT); - LegacyActivationShim::CoUninitializeCor(); - CoUninitialize(); -#endif } // Uninit HRESULT IsClassRefInScope(mdTypeRef classref) @@ -1695,17 +1630,10 @@ mdToken TypeRefToTypeDef(mdToken tk, IMDInternalImport *pIMDI, IMDInternalImport IUnknown *pUnk; if(FAILED(pIAMDI[0]->QueryInterface(IID_IUnknown, (void**)&pUnk))) goto AssignAndReturn; -#ifdef FEATURE_CORECLR if (FAILED(getMetaDataInternalInterfaceFromPublic( pUnk, IID_IMDInternalImport, (LPVOID *)ppIMDInew))) -#else - if (FAILED(g_pCLRRuntimeHostInternal->GetMetaDataInternalInterfaceFromPublic( - pUnk, - IID_IMDInternalImport, - (LPVOID *)ppIMDInew))) -#endif { goto AssignAndReturn; } @@ -4650,7 +4578,7 @@ BOOL DumpClass(mdTypeDef cl, DWORD dwEntryPointToken, void* GUICookie, ULONG Wha #if (0) - if((!IsTdNested(dwClassAttrs))&&(!(g_Mode & MODE_GUI))) // don't dump namespaces in GUI mode! + if((!IsTdNested(dwClassAttrs))) { // take care of namespace, if any if(strcmp(pszNamespace,g_szNamespace)) @@ -4905,11 +4833,6 @@ BOOL DumpClass(mdTypeDef cl, DWORD dwEntryPointToken, void* GUICookie, ULONG Wha if(g_cl_enclosing[i] == cl) { DumpClass(g_cl_list[i],dwEntryPointToken,GUICookie,WhatToDumpOrig); - if(g_fAbortDisassembly) - { - g_Mode = dwMode; - return FALSE; - } fRegetClassLayout = TRUE; } } @@ -4920,9 +4843,6 @@ BOOL DumpClass(mdTypeDef cl, DWORD dwEntryPointToken, void* GUICookie, ULONG Wha if(WhatToDump & 4) { DumpMembers(cl, pszNamespace, pszClassName, dwClassAttrs, dwEntryPointToken,GUICookie); -#ifndef FEATURE_CORECLR - if(!ProgressStep()) g_fAbortDisassembly = TRUE; -#endif } if(g_szAsmCodeIndent[0]) g_szAsmCodeIndent[strlen(g_szAsmCodeIndent)-2] = 0; @@ -4931,10 +4851,7 @@ BOOL DumpClass(mdTypeDef cl, DWORD dwEntryPointToken, void* GUICookie, ULONG Wha if(*pszNamespace != 0) szptr+=sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"%s.",ProperName(pszNamespace)); sprintf_s(szptr,SZSTRING_REMAINING_SIZE(szptr),"%s%s", ProperName(pszClassName),COMMENT((char*)-1)); printLine(GUICookie,szString); - if(!(g_Mode & MODE_GUI)) - { - printLine(GUICookie,""); - } + printLine(GUICookie,""); g_tkVarOwner = tkVarOwner; return TRUE; } @@ -4953,7 +4870,7 @@ void DumpGlobalMethods(DWORD dwEntryPointToken) for (i = 0; g_pImport->EnumNext(&hEnumMethod, &FuncToken); i++) { - if ((i == 0)&&(!(g_Mode & MODE_GUI))) + if (i == 0) { printLine(g_pFile,""); printLine(g_pFile,COMMENT("// ================== GLOBAL METHODS =========================")); @@ -4961,14 +4878,6 @@ void DumpGlobalMethods(DWORD dwEntryPointToken) } if(DumpMethod(FuncToken, NULL, dwEntryPointToken, g_pFile, TRUE)&& (g_Mode == MODE_DUMP_CLASS_METHOD || g_Mode == MODE_DUMP_CLASS_METHOD_SIG)) break; - -#ifndef FEATURE_CORECLR - if(!ProgressStep()) - { - g_fAbortDisassembly = TRUE; - break; - } -#endif } g_pImport->EnumClose(&hEnumMethod); if(i) @@ -4991,7 +4900,7 @@ void DumpGlobalFields() for (i = 0; g_pImport->EnumNext(&hEnum, &FieldToken); i++) { - if ((i == 0)&&(!(g_Mode & MODE_GUI))) + if (i == 0) { printLine(g_pFile,""); printLine(g_pFile,COMMENT("// ================== GLOBAL FIELDS ==========================")); @@ -5019,8 +4928,6 @@ void DumpVTables(IMAGE_COR20_HEADER *CORHeader, void* GUICookie) if (VAL32(CORHeader->VTableFixups.VirtualAddress) == 0) return; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode - sprintf_s(szString,SZSTRING_SIZE,"// VTableFixup Directory:"); printLine(GUICookie,szStr); @@ -5087,7 +4994,6 @@ void DumpEATTable(IMAGE_COR20_HEADER *CORHeader, void* GUICookie) DWORD BufferRVA; DWORD i; char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode sprintf_s(szString,SZSTRING_SIZE,"// Export Address Table Jumps:"); printLine(GUICookie,szStr); @@ -5143,7 +5049,6 @@ exit: void DumpCodeManager(IMAGE_COR20_HEADER *CORHeader, void* GUICookie) { char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode sprintf_s(szString,SZSTRING_SIZE,"// Code Manager Table:"); printLine(GUICookie,szStr); if (!VAL32(CORHeader->CodeManagerTable.Size)) @@ -5180,7 +5085,6 @@ void DumpSectionHeaders(IMAGE_SECTION_HEADER* pSH, USHORT nSH, void* GUICookie) { char* szStr = &szString[0]; char name[16]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode printLine(GUICookie,""); strcpy_s(szString,SZSTRING_SIZE,"// Image sections:"); printLine(GUICookie,szStr); @@ -5280,7 +5184,6 @@ void DumpSectionHeaders(IMAGE_SECTION_HEADER* pSH, USHORT nSH, void* GUICookie) void DumpBaseReloc(const char *szName, IMAGE_DATA_DIRECTORY *pDir, void* GUICookie) { char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode sprintf_s(szString,SZSTRING_SIZE,"// %s", szName); printLine(GUICookie,szStr); if (!VAL32(pDir->Size)) @@ -5322,7 +5225,7 @@ void DumpBaseReloc(const char *szName, IMAGE_DATA_DIRECTORY *pDir, void* GUICook void DumpIAT(const char *szName, IMAGE_DATA_DIRECTORY *pDir, void* GUICookie) { char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode + sprintf_s(szString,SZSTRING_SIZE,"// %s", szName); printLine(GUICookie,szStr); if (!VAL32(pDir->Size)) @@ -5398,7 +5301,7 @@ struct MDStreamHeader void DumpMetadataHeader(const char *szName, IMAGE_DATA_DIRECTORY *pDir, void* GUICookie) { char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode + printLine(GUICookie,""); sprintf_s(szString,SZSTRING_SIZE,"// %s", szName); printLine(GUICookie,szStr); @@ -5501,7 +5404,7 @@ void DumpEntryPoint(DWORD dwAddrOfEntryPoint,DWORD dwEntryPointSize,void* GUICoo char* szStr = &szString[0]; char* szptr = szStr+2; DWORD i; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode + printLine(GUICookie,""); strcpy_s(szString,SZSTRING_SIZE,"// Entry point code:"); printLine(GUICookie,szStr); @@ -5531,7 +5434,7 @@ void DumpEntryPoint(DWORD dwAddrOfEntryPoint,DWORD dwEntryPointSize,void* GUICoo void DumpHeader(IMAGE_COR20_HEADER *CORHeader, void* GUICookie) { char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode + DWORD dwAddrOfEntryPoint=0, dwEntryPointSize=0; PIMAGE_DOS_HEADER pDOSHeader = g_pPELoader->dosHeader(); @@ -5905,8 +5808,6 @@ void DumpTable(unsigned long Table, const char *TableName, void* GUICookie) int size; ULONG sizeRec, count; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode - // Record that this table has been seen. TableSeen(Table); @@ -5942,7 +5843,6 @@ void DumpStatistics(IMAGE_COR20_HEADER *CORHeader, void* GUICookie) ULONG sizeRec, count; char buf[MAX_MEMBER_LENGTH]; char* szStr = &szString[0]; - if(g_Mode & MODE_GUI) szStr += 2; // no need for "//" in GUI mode TableSeenReset(); metaSize = 0; @@ -6965,7 +6865,7 @@ void DumpMI(__in __nullterminated const char *str) strcpy_s(szString,5,"// "); fInit = FALSE; GUICookie = (void*)str; - if(g_Mode & MODE_GUI) szStr = &szString[3]; // don't need "//" in GUI mode + return; } // Normal work @@ -7011,18 +6911,8 @@ void DumpMetaInfo(__in __nullterminated const WCHAR* pwzFileName, __in_opt __nul if(pch && (!_wcsicmp(pch+1,W("lib")) || !_wcsicmp(pch+1,W("obj")))) { // This works only when all the rest does not // Init and run. -#ifdef FEATURE_CORECLR if (metaDataGetDispenser(CLSID_CorMetaDataDispenser, IID_IMetaDataDispenserEx, (void **)&g_pDisp)) -#else - if(SUCCEEDED(CoInitialize(0))) - { - if(SUCCEEDED(LegacyActivationShim::CoInitializeCor(0))) - { - if (SUCCEEDED(LegacyActivationShim::ClrCoCreateInstance( - CLSID_CorMetaDataDispenser, NULL, CLSCTX_INPROC_SERVER, - IID_IMetaDataDispenserEx, (void **) &g_pDisp))) -#endif { WCHAR *pwzObjFileName=NULL; if (pszObjFileName) @@ -7037,39 +6927,25 @@ void DumpMetaInfo(__in __nullterminated const WCHAR* pwzFileName, __in_opt __nul g_pDisp = NULL; if (pwzObjFileName) VDELETE(pwzObjFileName); } -#ifndef FEATURE_CORECLR - LegacyActivationShim::CoUninitializeCor(); - } - CoUninitialize(); - } -#endif } else { HRESULT hr = S_OK; if(g_pDisp == NULL) { -#ifdef FEATURE_CORECLR hr = metaDataGetDispenser(CLSID_CorMetaDataDispenser, IID_IMetaDataDispenserEx, (void **)&g_pDisp); -#else - hr = LegacyActivationShim::ClrCoCreateInstance( - CLSID_CorMetaDataDispenser, NULL, CLSCTX_INPROC_SERVER, - IID_IMetaDataDispenserEx, (void **) &g_pDisp); -#endif } if(SUCCEEDED(hr)) { g_ValModuleType = ValidatorModuleTypePE; if(g_pAssemblyImport==NULL) g_pAssemblyImport = GetAssemblyImport(NULL); - if(!(g_Mode & MODE_GUI)) - printLine(GUICookie,RstrUTF(IDS_E_MISTART)); + printLine(GUICookie,RstrUTF(IDS_E_MISTART)); //MDInfo metaDataInfo(g_pPubImport, g_pAssemblyImport, (LPCWSTR)pwzFileName, DumpMI, g_ulMetaInfoFilter); MDInfo metaDataInfo(g_pDisp,(LPCWSTR)pwzFileName, DumpMI, g_ulMetaInfoFilter); metaDataInfo.SetVEHandlerReporter((__int64) (size_t) VEHandlerReporter); metaDataInfo.DisplayMD(); - if(!(g_Mode & MODE_GUI)) - printLine(GUICookie,RstrUTF(IDS_E_MIEND)); + printLine(GUICookie,RstrUTF(IDS_E_MIEND)); } } DumpMI((char*)-1); // reset the print function for DumpMetaInfo @@ -7442,7 +7318,6 @@ BOOL DumpFile() const char *pszFilename = g_szInputFile; const DWORD openFlags = ofRead | (g_fProject ? 0 : ofNoTransform); - if(!(g_Mode & MODE_GUI)) { if(g_fDumpHTML) { @@ -7465,8 +7340,7 @@ BOOL DumpFile() char* pch = strrchr(g_szInputFile,'.'); if(pch && (!_stricmp(pch+1,"lib") || !_stricmp(pch+1,"obj"))) { - if(!(g_Mode & MODE_GUI)) - DumpMetaInfo(g_wszFullInputFile,g_pszObjFileName,g_pFile); + DumpMetaInfo(g_wszFullInputFile,g_pszObjFileName,g_pFile); return FALSE; } } @@ -7542,21 +7416,12 @@ BOOL DumpFile() g_cbMetaData = VAL32(g_CORHeader->MetaData.Size); } -#ifdef FEATURE_CORECLR if (FAILED(getMetaDataInternalInterface( (BYTE *)g_pMetaData, g_cbMetaData, openFlags, IID_IMDInternalImport, (LPVOID *)&g_pImport))) -#else - if (FAILED(g_pCLRRuntimeHostInternal->GetMetaDataInternalInterface( - (BYTE *)g_pMetaData, - g_cbMetaData, - openFlags, - IID_IMDInternalImport, - (LPVOID *)&g_pImport))) -#endif { if (g_fDumpHeader) DumpHeader(g_CORHeader, g_pFile); @@ -7565,11 +7430,7 @@ BOOL DumpFile() } TokenSigInit(g_pImport); -#ifdef FEATURE_CORECLR if (FAILED(metaDataGetDispenser(CLSID_CorMetaDataDispenser, IID_IMetaDataDispenser, (LPVOID*)&pMetaDataDispenser))) -#else - if (FAILED(CoCreateInstance(CLSID_CorMetaDataDispenser, 0, CLSCTX_INPROC_SERVER, IID_IMetaDataDispenser, (LPVOID*)&pMetaDataDispenser))) -#endif { if (g_fDumpHeader) DumpHeader(g_CORHeader, g_pFile); @@ -7584,31 +7445,6 @@ BOOL DumpFile() goto exit; } -#ifndef FEATURE_CORECLR - // Get a symbol binder. - ISymUnmanagedBinder *binder; - HRESULT hr; - - hr = CoCreateInstance(CLSID_CorSymBinder_SxS, NULL, - CLSCTX_INPROC_SERVER, - IID_ISymUnmanagedBinder, - (void**)&binder); - - if (SUCCEEDED(hr)) - { - hr = binder->GetReaderForFile(g_pPubImport, - wzInputFileName, - NULL, - &g_pSymReader); - - // Release the binder - binder->Release(); - } - - if (FAILED(hr)) - g_fShowSource = FALSE; -#endif - if((g_uNCA = g_pImport->GetCountWithTokenKind(mdtCustomAttribute))) { g_rchCA = new char[g_uNCA+1]; @@ -7636,13 +7472,6 @@ DoneInitialization: } #endif -#ifndef FEATURE_CORECLR - if (g_Mode & MODE_GUI) - { - GUIAddItemsToList(); - } - else -#endif { // Dump the CLR header info if requested. printLine(g_pFile,COMMENT((char*)0)); // start multiline comment @@ -7682,16 +7511,8 @@ DoneInitialization: ulNumGlobalFunc = g_pImport->EnumGetCount(&hEnumMethod); g_pImport->EnumClose(&hEnumMethod); } -#ifndef FEATURE_CORECLR - if(g_fShowProgressBar) - CreateProgressBar((LONG) (g_NumClasses + ulNumGlobalFunc)); -#endif } -#ifndef FEATURE_CORECLR - ProgressStep(); -#endif - g_fAbortDisassembly = FALSE; //DumpVtable(g_pFile); DumpMscorlib(g_pFile); if(g_fDumpTypeList) DumpTypelist(g_pFile); @@ -7734,13 +7555,6 @@ DoneInitialization: if(g_cl_enclosing[i] == mdTypeDefNil) // nested classes are dumped within enclosing ones { DumpClass(g_cl_list[i], VAL32(IMAGE_COR20_HEADER_FIELD(*g_CORHeader, EntryPointToken)),g_pFile,7); //7=everything - if(g_fAbortDisassembly) - { - printError(g_pFile,""); - printError(g_pFile,RstrUTF(IDS_E_DASMABORT)); - fSuccess = FALSE; - goto CloseFileAndExit; - } } } CloseNamespace(szString); @@ -7756,16 +7570,6 @@ DoneInitialization: if(g_rchCA[i] == 0) DumpCustomAttribute(TokenFromRid(i,mdtCustomAttribute),g_pFile,true); } } - if(g_fAbortDisassembly) - { - printError(g_pFile,""); - printError(g_pFile,RstrUTF(IDS_E_DASMABORT)); - fSuccess = FALSE; - goto CloseFileAndExit; - } -#ifndef FEATURE_CORECLR - ProgressStep(); -#endif #if (0) /* Third, dump GC/EH info about the native methods, using the IPMap */ @@ -7947,15 +7751,14 @@ ReportAndExit: DumpRTFPostfix(g_pFile); } +#ifndef _DEBUG CloseFileAndExit: +#endif if(g_pFile) { fclose(g_pFile); g_pFile = NULL; } -#ifndef FEATURE_CORECLR - DestroyProgressBar(); -#endif } exit: diff --git a/src/coreclr/src/ildasm/dasm.rc b/src/coreclr/src/ildasm/dasm.rc index b16d53a..ea56596 100644 --- a/src/coreclr/src/ildasm/dasm.rc +++ b/src/coreclr/src/ildasm/dasm.rc @@ -10,9 +10,6 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#ifndef FEATURE_CORECLR -#include "afxres.h" -#endif #include ///////////////////////////////////////////////////////////////////////////// @@ -57,250 +54,16 @@ END #endif // APSTUDIO_INVOKED - -#if !defined(FEATURE_PAL) && !defined(FEATURE_CORECLR) - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON2 ICON DISCARDABLE "Litening.ico" - -#if FX_VFT == VFT_DLL - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_FIELD BITMAP MOVEABLE PURE "field.bmp" -IDB_METHOD BITMAP MOVEABLE PURE "method.bmp" -IDB_STATICFIELD BITMAP MOVEABLE PURE "staticfield.bmp" -IDB_STATICMETHOD BITMAP MOVEABLE PURE "staticmethod.bmp" -IDB_REDARROW BITMAP MOVEABLE PURE "redarrow.bmp" -IDB_EVENT BITMAP DISCARDABLE "event.bmp" -IDB_PROP BITMAP DISCARDABLE "prop.bmp" -IDB_NAMESPACE BITMAP DISCARDABLE "namespace.bmp" -IDB_CLASS BITMAP DISCARDABLE "classa.bmp" -IDB_CLASSENUM BITMAP DISCARDABLE "classe.bmp" -IDB_CLASSINT BITMAP DISCARDABLE "classi.bmp" -IDB_CLASSVAL BITMAP DISCARDABLE "classv.bmp" - -IDB_METHOD_GEN BITMAP MOVEABLE PURE "methodg.bmp" -IDB_STATICMETHOD_GEN BITMAP MOVEABLE PURE "staticmethodg.bmp" -IDB_CLASS_GEN BITMAP DISCARDABLE "classag.bmp" -IDB_CLASSENUM_GEN BITMAP DISCARDABLE "classeg.bmp" -IDB_CLASSINT_GEN BITMAP DISCARDABLE "classig.bmp" -IDB_CLASSVAL_GEN BITMAP DISCARDABLE "classvg.bmp" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 157, 306 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION -CAPTION "Dump options" -FONT 8, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON L"OK",IDOK,13,285,50,14 - PUSHBUTTON L"Cancel",IDCANCEL,81,285,50,14 - GROUPBOX L"Encoding",IDC_STATIC,13,3,129,28 - CONTROL L"ANSI",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,19,16,34,9 - CONTROL L"UTF-8",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,55,16,34, - 9 - CONTROL L"Unicode",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,91,16, - 40,9 - CONTROL L"Dump Class List",IDC_CHECK19,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,36,106,10 - CONTROL L"Dump Statistics",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,48,106,10 - CONTROL L"Show Progress Bar",IDC_CHECK18,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,60,124,11 - CONTROL L"Dump Header",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,73,106,10 - CONTROL L"Dump IL Code",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,86,106,10 - CONTROL L"Token Values",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,99,106,10 - CONTROL L"Actual Bytes",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,110,106,10 - CONTROL L"Line Numbers",IDC_CHECK20,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,120,106,10 - CONTROL L"Source Lines",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,131,106,10 - CONTROL L"Expand try/catch",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,142,106,10 - CONTROL L"Dump Metainfo",IDC_CHECK8,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,158,106,10 - CONTROL L"More HEX",IDC_CHECK11,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,174,106,10 - CONTROL L"Raw: Counts,Sizes",IDC_CHECK12,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,185,106,10 - CONTROL L"Raw: Header",IDC_CHECK10,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,198,106,10 - CONTROL L"Raw: Header,Schema",IDC_CHECK14,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, - 37,209,106,10 - CONTROL L"Raw: Header,Schema,Rows",IDC_CHECK15,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,37,222,106,10 - CONTROL L"Raw: Heaps",IDC_CHECK17,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,233,106,10 - CONTROL L"Unresolved Externals",IDC_CHECK13,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, - 37,246,106,10 - CONTROL L"Validate",IDC_CHECK16,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,37,257,106,10 - CONTROL L"Debug",IDC_CHECK9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, - 37,270,106,10 -END - -IDD_ABOUT DIALOGEX 0, 0, 289, 112 -STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION -EXSTYLE WS_EX_CLIENTEDGE -CAPTION L"About IL DASM" -FONT 8, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON L"OK",ID_ABOUT_OK,122,83,50,14 - ICON IDI_ICON2,IDC_STATIC,18,22,21,20,0 - LTEXT L"Static",IDC_ABOUT_LINE1,47,22,279,11 - LTEXT L"Static",IDC_ABOUT_LINE2,47,38,279,11 - LTEXT L"Static",IDC_ABOUT_LINE3,47,56,279,11 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -FileAccel ACCELERATORS MOVEABLE PURE -BEGIN - "O", 1, VIRTKEY, CONTROL - "D", 2, VIRTKEY, CONTROL - "T", 3, VIRTKEY, CONTROL - "X", 4, VIRTKEY, CONTROL - "M", 21, VIRTKEY, CONTROL - VK_F1, 31, VIRTKEY - VK_ESCAPE, 4, VIRTKEY -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - IDD_DIALOG1, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 150 - TOPMARGIN, 3 - BOTTOMMARGIN, 299 - END - - IDD_ABOUT, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 232 - TOPMARGIN, 7 - BOTTOMMARGIN, 105 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_FILE L"&File" - IDS_VIEW L"&View" - IDS_HELP L"&Help" - IDS_OPEN L"&Open\tCtrl+O" - IDS_DUMP L"&Dump\tCtrl+D" - IDS_DUMPTREE L"Dump &TreeView\tCtrl+T" - IDS_EXIT L"E&xit\tCtrl+X" - IDS_FONTS L"Set &Fonts" - IDS_FONT_TREE L"&Tree view" - IDS_FONT_DASM L"&Disassembly" - IDS_SORT_BY_NAME L"Sort by &name" - IDS_SHOW_PUB L"Hide &Public" - IDS_SHOW_PRIV L"Hide P&rivate" - IDS_SHOW_FAM L"Hide Famil&y" - IDS_SHOW_ASM L"Hide &Assembly" -END - -STRINGTABLE DISCARDABLE -BEGIN - IDS_FIND L"&Find" - IDS_FINDNEXT L"Find &Next" -END - -STRINGTABLE DISCARDABLE -BEGIN - IDS_MI_DEBUG L"&Debug" - IDS_MI_SCHEMA L"Raw:Header,Sch&ema" - IDS_MI_RAW L"Raw:Header,Schema,&Rows" - IDS_MI_HEAPS L"Raw:Hea&ps" - IDS_MI_VALIDATE L"&Validate" - IDS_SHOW_METAINFO L"&Show!\tCtrl+M" - IDS_ABOUT L"&About IL DASM" -END - -STRINGTABLE DISCARDABLE -BEGIN - IDS_SHOW_FAA L"Hide FamAN&DAssem" - IDS_SHOW_FOA L"Hide Fam&ORAssem" - IDS_SHOW_PSCOPE L"Hide Private&Scope" - IDS_FULL_INFO L"Show member &types" - IDS_BYTES L"Show &bytes" - IDS_TOKENS L"Show token &values" - IDS_SOURCELINES L"Show source &lines" - IDS_QUOTEALLNAMES L"&Quote all names" - IDS_EXPANDTRY L"E&xpand try/catch" - IDS_SHOW_HEADER L"&Headers" - IDS_SHOW_STAT L"Stat&istics" - IDS_METAINFO L"&MetaInfo" - IDS_MI_HEADER L"Raw:&Header" - IDS_MI_HEX L"&More HEX" - IDS_MI_CSV L"Raw:&Counts,Sizes" - IDS_MI_UNREX L"&Unresolved ext." - IDS_TREEVIEWFCN L"Full &Class Names" - IDS_CAVERBAL L"V&erbal CA blobs" - IDS_DUMPRTF L"&Use RTF" -END - -#endif // FX_VFT == VFT_DLL -#endif // !defined(FEATURE_PAL) && !defined(FEATURE_CORECLR) - #if FX_VFT == VFT_DLL STRINGTABLE DISCARDABLE BEGIN IDS_USAGE_TITLE L"ILDASM command line syntax" IDS_USAGE_01 L"Usage: ildasm [options] [options]\n\n" IDS_USAGE_02 L"Options for output redirection:\n" -#ifndef FEATURE_PAL - IDS_USAGE_03 L" /OUT= Direct output to file rather than to GUI.\n" - IDS_USAGE_04 L" /TEXT Direct output to console window rather than to GUI.\n\n" - IDS_USAGE_04A L" /HTML Output in HTML format (valid with /OUT option only).\n" - IDS_USAGE_04B L" /RTF Output in rich text format (invalid with /TEXT option).\n" - IDS_USAGE_05 L"Options for GUI or file/console output (EXE and DLL files only):\n" -#else IDS_USAGE_03 L" /OUT= Direct output to file rather than to console.\n" - IDS_USAGE_04 L"" IDS_USAGE_04A L" /HTML Output in HTML format (valid with /OUT option only).\n" IDS_USAGE_04B L" /RTF Output in rich text format (valid with /OUT option only).\n" IDS_USAGE_05 L"Options for file/console output:\n" -#endif // !FEATURE_PAL #ifdef OWNER_OPTION_ENABLED IDS_USAGE_06 L" /OWNER= Set owner name to disassemble a protected PE file.\n" #endif @@ -322,15 +85,8 @@ BEGIN IDS_USAGE_15 L" /QUOTEALLNAMES Include all names into single quotes.\n" IDS_USAGE_15A L" /NOCA Suppress output of custom attributes.\n" IDS_USAGE_15B L" /CAVERBAL Output CA blobs in verbal form (default - in binary form).\n" -#ifndef FEATURE_PAL - IDS_USAGE_16 L" /NOBAR Suppress disassembly progress bar window pop-up.\n\n" IDS_USAGE_17 L"The following options are valid for file/console output only:\n" IDS_USAGE_18 L"Options for EXE and DLL files:\n" -#else - IDS_USAGE_16 L"" - IDS_USAGE_17 L"" - IDS_USAGE_18 L"" -#endif // !FEATURE_PAL IDS_USAGE_19 L" /UTF8 Use UTF-8 encoding for output (default - ANSI).\n" IDS_USAGE_20 L" /UNICODE Use UNICODE encoding for output.\n" IDS_USAGE_21 L" /NOIL Suppress IL assembler code output.\n" @@ -390,7 +146,6 @@ BEGIN IDS_E_BADCORHDR L"error : Bad CLR header, or the version of the file format is not supported" IDS_E_OPENMD L"error : Failed to open meta data" IDS_E_COPYRIGHT L"error : Copyrighted material - can not disassemble!" - IDS_E_DASMABORT L"********* DISASSEMBLY ABORTED BY THE OPERATOR **************" IDS_E_DASMOK L"*********** DISASSEMBLY COMPLETE ***********************" IDS_E_PARTDASM L"warning : THIS IS A PARTIAL DISASSEMBLY, NOT SUITABLE FOR RE-ASSEMBLING" IDS_E_INSTRDT L"error : Failed to create instruction decoding table" diff --git a/src/coreclr/src/ildasm/dasm_pr.cpp b/src/coreclr/src/ildasm/dasm_pr.cpp deleted file mode 100644 index 9d478bf..0000000 --- a/src/coreclr/src/ildasm/dasm_pr.cpp +++ /dev/null @@ -1,275 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#include "ildasmpch.h" - -#ifndef FEATURE_CORECLR -#include "resource.h" -#include "formattype.h" - -WCHAR* RstrW(unsigned id); - -extern HINSTANCE g_hInstance; -extern HINSTANCE g_hResources; -extern DWORD g_NumClasses; -extern char g_szInputFile[]; // in UTF-8 -extern char g_szOutputFile[]; // in UTF-8 - -#define IDC_CANCEL 101 - -HWND g_hwndProgress = NULL; -HWND g_hwndProgBox = NULL; -HWND g_hwndFromFile = NULL; -HWND g_hwndToFile = NULL; -HWND g_hwndTally = NULL; -HWND g_hwndCancel = NULL; -HANDLE g_hThreadReady = NULL; // event - -BOOL g_fInitCommonControls = TRUE; -BOOL g_fRegisterClass = TRUE; -ULONG g_ulCount, g_ulRange; -RECT rcClient; // client area of parent window - -WCHAR* UtfToUnicode(__in __nullterminated const char* sz); // defined in dis.cpp - -LRESULT CALLBACK ProgBoxWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) -{ - switch (uMsg) - { - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_CANCEL: - g_hwndProgress = NULL; - g_hwndProgBox = NULL; - g_hwndFromFile = NULL; - g_hwndToFile = NULL; - g_hwndTally = NULL; - g_hwndCancel = NULL; - DestroyWindow (hwnd); - break; - } - break; - - - case WM_CLOSE: - g_hwndProgress = NULL; - g_hwndProgBox = NULL; - g_hwndFromFile = NULL; - g_hwndToFile = NULL; - g_hwndTally = NULL; - g_hwndCancel = NULL; - //break; - default: - return WszDefWindowProc(hwnd, uMsg, wParam, lParam); - } - return 0; -} -DWORD WINAPI ProgressMainLoop(LPVOID pv) -{ - MSG msg; - DWORD cyVScroll; - HFONT hFont = (HFONT) GetStockObject(DEFAULT_GUI_FONT); //(ANSI_FIXED_FONT); - WCHAR wzStr[1024]; - - if(g_fInitCommonControls) - { - InitCommonControls(); - g_fInitCommonControls = FALSE; - } - g_ulCount = 0; - if(g_fRegisterClass) - { - _ASSERTE(g_hResources != NULL); - WNDCLASSW wndClass; - - wndClass.style = CS_HREDRAW|CS_VREDRAW|CS_NOCLOSE; - wndClass.lpfnWndProc = ProgBoxWndProc; - wndClass.cbClsExtra = 0; - wndClass.cbWndExtra = 0; - wndClass.hInstance = g_hInstance; - wndClass.hIcon = WszLoadIcon(g_hResources,MAKEINTRESOURCE(IDI_ICON2)); - wndClass.hCursor = NULL; - wndClass.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH); - wndClass.lpszMenuName = NULL; - wndClass.lpszClassName = L"ProgressBox"; - - if (WszRegisterClass(&wndClass) == 0) return 0; - - g_fRegisterClass = FALSE; - } - cyVScroll = GetSystemMetrics(SM_CYVSCROLL); - if(g_hwndProgBox = WszCreateWindowEx (0, - RstrW(IDS_PROGRESSBOX), //"ProgressBox", - RstrW(IDS_DISASSEMBLING), //"Disassembling", - WS_VISIBLE | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPCHILDREN, - 400, 200, 400, 8*cyVScroll, - HWND_DESKTOP, - (HMENU)0, - g_hInstance, - NULL)) - { - GetClientRect(g_hwndProgBox, &rcClient); - - if(g_hwndFromFile = WszCreateWindowEx (0, - L"STATIC", - L"", - WS_CHILD|WS_VISIBLE|SS_CENTER, - rcClient.left, rcClient.bottom-6*cyVScroll,rcClient.right, cyVScroll, - g_hwndProgBox, - (HMENU)0, - g_hInstance, - NULL)) - { - SendMessageA(g_hwndFromFile,WM_SETFONT,(LPARAM)hFont,FALSE); - WCHAR* wzFileName = UtfToUnicode(g_szInputFile); - if(wcslen(wzFileName) <= 60) swprintf_s(wzStr,1024,RstrW(IDS_PB_FILE) /*"File %s"*/,wzFileName); - else - { - WCHAR * p=wzFileName; - while(p = wcschr(p,L'\\')) - { - if(wcslen(p) <= 60) break; - p++; - } - if(p == NULL) p = &wzFileName[wcslen(wzFileName)-50]; - swprintf_s(wzStr,1024,RstrW(IDS_PB_FILE1) /*"File ...%s"*/,p); - } - WszSendMessage(g_hwndFromFile, WM_SETTEXT,0,(LPARAM)wzStr); - } - if(g_hwndToFile = WszCreateWindowEx (0, - L"STATIC", - L"", - WS_CHILD|WS_VISIBLE|SS_CENTER, - rcClient.left, rcClient.bottom-5*cyVScroll,rcClient.right, cyVScroll, - g_hwndProgBox, - (HMENU)0, - g_hInstance, - NULL)) - { - SendMessageA(g_hwndToFile,WM_SETFONT,(LPARAM)hFont,FALSE); - WCHAR* wzFileName = UtfToUnicode(g_szOutputFile); - if(wcslen(wzFileName) <= 60) swprintf_s(wzStr,1024,RstrW(IDS_PB_TOFILE) /*"To file %s"*/,wzFileName); - else - { - WCHAR * p=wzFileName; - while(p = wcschr(p,L'\\')) - { - if(wcslen(p) <= 60) break; - p++; - } - if(p == NULL) p = &wzFileName[wcslen(wzFileName)-50]; - swprintf_s(wzStr,1024,RstrW(IDS_PB_TOFILE1) /*"To file ...%s"*/,p); - } - WszSendMessage(g_hwndToFile, WM_SETTEXT,0,(LPARAM)wzStr); - } - if(g_hwndTally = WszCreateWindowEx (0, - L"STATIC", - L"", - WS_CHILD|WS_VISIBLE|SS_CENTER, - rcClient.left, rcClient.bottom-4*cyVScroll,rcClient.right, cyVScroll, - g_hwndProgBox, - (HMENU)0, - g_hInstance, - NULL)) - { - SendMessageA(g_hwndTally,WM_SETFONT,(LPARAM)hFont,FALSE); - if(g_ulCount <= g_NumClasses) swprintf_s(wzStr,1024,RstrW(IDS_PB_CLASSESDONE) /*"%d classes, %d done"*/,g_NumClasses,g_ulCount); - else swprintf_s(wzStr,1024,RstrW(IDS_PB_GLOBALSDONE) /*"%d global methods, %d done"*/,g_ulRange-g_NumClasses,g_ulCount-g_NumClasses); - WszSendMessage(g_hwndTally, WM_SETTEXT,0,(LPARAM)wzStr); - } - if(g_hwndProgress = WszCreateWindowEx (0, - PROGRESS_CLASS, - L"", - WS_CHILD|WS_VISIBLE|SS_CENTER, // SS_CENTER gives smooth progress and solid bar - rcClient.left, rcClient.bottom-3*cyVScroll,rcClient.right, cyVScroll, - g_hwndProgBox, - (HMENU)0, - g_hInstance, - NULL)) - { - // Set the range for the progress bar. - SendMessageA (g_hwndProgress, PBM_SETRANGE, 0L, MAKELPARAM(0, g_ulRange)); - // Set the step. - SendMessageA (g_hwndProgress, PBM_SETSTEP, (WPARAM)1, 0L); - } - if(g_hwndCancel = WszCreateWindowEx (0, - L"BUTTON", - RstrW(IDS_PB_CANCEL), //"Cancel", - WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON|BS_TEXT, - rcClient.left+150, rcClient.bottom-3*cyVScroll/2,rcClient.right-300, 4*cyVScroll/3, - g_hwndProgBox, - (HMENU)IDC_CANCEL, - g_hInstance, - NULL)) - { - SendMessageA(g_hwndCancel,WM_SETFONT,(LPARAM)hFont,FALSE); - } - } - SetEvent(g_hThreadReady); - while (WszGetMessage(&msg, NULL, 0, 0)) - { - TranslateMessage(&msg); - WszDispatchMessage(&msg); - } - return 0; -} - -void CreateProgressBar(LONG lRange) -{ - DWORD dwThreadID; - g_ulCount = 0; - if((g_ulRange = (ULONG)lRange)==0) return; - - g_hThreadReady = WszCreateEvent(NULL,FALSE,FALSE,NULL); - if (g_hThreadReady != NULL) - { - // Thread is never aborted, it always exits by itself - HANDLE hThread = CreateThread(NULL,0,ProgressMainLoop,NULL,0,&dwThreadID); - if (hThread != NULL) - { - CloseHandle(hThread); - WaitForSingleObject(g_hThreadReady,INFINITE); - } - CloseHandle(g_hThreadReady); - } -} - -BOOL ProgressStep() -{ - if(g_hwndProgBox) - { - WCHAR wzStr[1024]; - if(g_hwndTally) - { - if(g_ulCount <= g_NumClasses) - swprintf_s(wzStr,1024,RstrW(IDS_PB_CLASSESDONE) /*"%d classes, %d done"*/,g_NumClasses,g_ulCount); - else if(g_ulCount <= g_ulRange) - swprintf_s(wzStr,1024,RstrW(IDS_PB_GLOBALSDONE) /*"%d global methods, %d done"*/,g_ulRange-g_NumClasses,g_ulCount-g_NumClasses); - else - wcscpy_s(wzStr,1024,RstrW(IDS_PB_WRITINGDATA)); //"Writing global data"); - wzStr[1023]=0; - WszSendMessage(g_hwndTally, WM_SETTEXT,0,(LPARAM)wzStr); - } - - if(g_hwndProgress && g_ulCount && (g_ulCount <= g_ulRange)) - WszSendMessage (g_hwndProgress, PBM_STEPIT, 0L, 0L); - g_ulCount++; - } - else if(g_ulCount) return FALSE; // disassembly started and was aborted - return TRUE; -} - -void DestroyProgressBar() -{ - if(g_hwndProgBox) WszSendMessage (g_hwndProgBox,WM_COMMAND,IDC_CANCEL,0); - g_hwndProgress = NULL; - g_hwndProgBox = NULL; - g_hwndFromFile = NULL; - g_hwndToFile = NULL; - g_hwndTally = NULL; - g_hwndCancel = NULL; - g_ulCount = 0; -} -#endif diff --git a/src/coreclr/src/ildasm/dasmgui.h b/src/coreclr/src/ildasm/dasmgui.h deleted file mode 100644 index aa1747e..0000000 --- a/src/coreclr/src/ildasm/dasmgui.h +++ /dev/null @@ -1,15 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -BOOL CreateGUI(); -void GUISetModule(__in __nullterminated const char *pszModule); -void GUIMainLoop(); -void GUIAddOpcode(__inout_opt __nullterminated const char *szString, __in_opt void *GUICookie); -BOOL GUIAddItemsToList(); -void GUIAddOpcode(__inout __nullterminated const char *szString); -void DestroyGUI(); -UINT GetDasmMBRTLStyle(); - -BOOL DisassembleMemberByName(__in __nullterminated const char *pszClassName, __in __nullterminated const char *pszMemberName, __in __nullterminated const char *pszSig); -BOOL IsGuiILOnly(); diff --git a/src/coreclr/src/ildasm/dasmhlp.hhc b/src/coreclr/src/ildasm/dasmhlp.hhc deleted file mode 100644 index dcedac2..0000000 --- a/src/coreclr/src/ildasm/dasmhlp.hhc +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - -
    -
  • - - - - -
  • - - - - -
  • - - - - -
  • - - - - -
- diff --git a/src/coreclr/src/ildasm/dis.cpp b/src/coreclr/src/ildasm/dis.cpp index 371466f..2b3229e 100644 --- a/src/coreclr/src/ildasm/dis.cpp +++ b/src/coreclr/src/ildasm/dis.cpp @@ -10,7 +10,6 @@ #include "debugmacros.h" #include "corpriv.h" #include "dasmenum.hpp" -#include "dasmgui.h" #include "formattype.h" #include "dis.h" #include "resource.h" @@ -133,11 +132,6 @@ char* AnsiToUtf(__in __nullterminated const char* sz) { return UnicodeToUtf(Ansi static void UnicodeToConsoleOrMsgBox(__in __nullterminated const WCHAR* wz) { -#ifndef FEATURE_CORECLR - if (g_Mode & MODE_GUI) - WszMessageBox(NULL,wz,RstrW(IDS_ERRORCAPTION),MB_OK|MB_ICONERROR|GetDasmMBRTLStyle()); - else -#endif { //DWORD dw; //char* sz = UnicodeToAnsi(wz); @@ -155,11 +149,6 @@ static void UnicodeToFile(__in __nullterminated const WCHAR* wz, FILE* pF) } static void ToGUIOrFile(__in __nullterminated const char* sz, void* GUICookie) { -#ifndef FEATURE_CORECLR - if (g_Mode & MODE_GUI) - GUIAddOpcode(sz, GUICookie); - else -#endif { if(g_fDumpRTF) fprintf((FILE*)GUICookie,"%s\\line\n",sz); else fprintf((FILE*)GUICookie,"%s\n",sz); @@ -168,8 +157,6 @@ static void ToGUIOrFile(__in __nullterminated const char* sz, void* GUICookie) //------------------------------------------------------------------ void printError(void* GUICookie, __in __nullterminated const char* string) { - if(g_Mode & MODE_GUI) printLine(GUICookie, ERRORMSG(string)); - else { //DWORD dw; const char* sz = ERRORMSG(string); @@ -198,7 +185,7 @@ void printLine(void* GUICookie, __in __nullterminated const char* string) { sz = UnicodeToAnsi(wz); } - else if(GUICookie && (!(g_Mode & MODE_GUI))) + else if(GUICookie) { UnicodeToFile(wz,(FILE*)GUICookie); return; @@ -219,11 +206,8 @@ void printLineW(void* GUICookie, __in __nullterminated const WCHAR* string) } if(g_uCodePage == 0xFFFFFFFF) { - if(!(g_Mode & MODE_GUI)) - { - UnicodeToFile(string,(FILE*)GUICookie); - return; - } + UnicodeToFile(string,(FILE*)GUICookie); + return; } else if(g_uCodePage == CP_UTF8) sz = UnicodeToUtf(string); @@ -1083,15 +1067,7 @@ BOOL Disassemble(IMDInternalImport *pImport, BYTE *ILHeader, void *GUICookie, md PC = 0; fTryInCode = enumEHInfo(method.EH, pImport, method.GetCodeSize()); DasmExceptionInfoClause* ehInfoToPutNext = NULL; - if(g_Mode & MODE_GUI) - { // in GUI, reset everything for each method - ulWasFileToken = 0xFFFFFFFF; - memset(&guidWasLang,0,sizeof(GUID)); - memset(&guidWasLangVendor,0,sizeof(GUID)); - memset(&guidWasDoc,0,sizeof(GUID)); - memset(wzWasFileName,0,sizeof(wzWasFileName)); - ulWasLine = 0; - } + while (PC < method.GetCodeSize()) { DWORD Len; @@ -1117,8 +1093,7 @@ BOOL Disassemble(IMDInternalImport *pImport, BYTE *ILHeader, void *GUICookie, md if (fNeedNewLine) { fNeedNewLine = FALSE; - if (!(g_Mode & MODE_GUI)) - printLine(GUICookie,""); + printLine(GUICookie,""); } if(fShowSource || fInsertSourceLines) diff --git a/src/coreclr/src/ildasm/dman.cpp b/src/coreclr/src/ildasm/dman.cpp index d0b5255..30724fc 100644 --- a/src/coreclr/src/ildasm/dman.cpp +++ b/src/coreclr/src/ildasm/dman.cpp @@ -10,7 +10,6 @@ #include "debugmacros.h" #include "corpriv.h" #include "dasmenum.hpp" -#include "dasmgui.h" #include "formattype.h" #include "dis.h" @@ -727,7 +726,7 @@ static void DumpResourceFile(void *GUICookie, BYTE *pRes, DWORD dwOffset, LPCWST memcpy(&L,pParam->pRes+pParam->dwOffset,sizeof(DWORD)); sprintf_s(szString,SZSTRING_SIZE,COMMENT("%s// Offset: 0x%8.8X Length: 0x%8.8X"), g_szAsmCodeIndent,pParam->dwOffset,L); printLine(pParam->GUICookie,szString); - if ((!(g_Mode & MODE_GUI)) && (g_pFile != NULL)) // embedded resource -- dump as .resources file + if (g_pFile != NULL) // embedded resource -- dump as .resources file { FILE *pF = NULL; _wfopen_s(&pF, pParam->wzFileName, W("wb")); @@ -942,11 +941,6 @@ void DumpManifestResources(void* GUICookie) else nManRes=0; } -#ifndef FEATURE_CORECLR -// CLR internal hosting API -extern ICLRRuntimeHostInternal *g_pCLRRuntimeHostInternal; -#endif - IMetaDataAssemblyImport* GetAssemblyImport(void* GUICookie) { struct Param @@ -996,7 +990,6 @@ IMetaDataAssemblyImport* GetAssemblyImport(void* GUICookie) if(pdwSize && *pdwSize) { pbManifest += sizeof(DWORD); -#ifdef FEATURE_CORECLR if (SUCCEEDED(hr = getMetaDataInternalInterface( pbManifest, VAL32(*pdwSize), @@ -1008,19 +1001,6 @@ IMetaDataAssemblyImport* GetAssemblyImport(void* GUICookie) pParam->pImport, IID_IMetaDataAssemblyImport, (LPVOID *)&pParam->pAssemblyImport))) -#else - if (SUCCEEDED(hr = g_pCLRRuntimeHostInternal->GetMetaDataInternalInterface( - pbManifest, - VAL32(*pdwSize), - ofRead, - IID_IMDInternalImport, - (LPVOID *)&pParam->pImport))) - { - if (FAILED(hr = g_pCLRRuntimeHostInternal->GetMetaDataPublicInterfaceFromInternal( - pParam->pImport, - IID_IMetaDataAssemblyImport, - (LPVOID *)&pParam->pAssemblyImport))) -#endif { sprintf_s(szString,SZSTRING_SIZE,RstrUTF(IDS_E_MDAFROMMDI),hr); printLine(pParam->GUICookie,COMMENT(szString)); diff --git a/src/coreclr/src/ildasm/dres.cpp b/src/coreclr/src/ildasm/dres.cpp index 53e1925..93e8e48 100644 --- a/src/coreclr/src/ildasm/dres.cpp +++ b/src/coreclr/src/ildasm/dres.cpp @@ -11,7 +11,6 @@ #include "debugmacros.h" #include "corpriv.h" #include "dasmenum.hpp" -#include "dasmgui.h" #include "formattype.h" #include "dis.h" #include "resource.h" diff --git a/src/coreclr/src/ildasm/event.bmp b/src/coreclr/src/ildasm/event.bmp deleted file mode 100644 index 99c3357d953c7ba0e16f8ee91206b1b867a036e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF>V_{4259^N&t7c0;?b=NKLrU9a!ifJPHdVXHdyHXGp;#s81pPGh7)KZ0&yg zhBE{0&h9+_{_#!r@7Gt6pR~RozR1(=zwYa2mk{BUhzYJVrK+UBkSMeWr?kT02qX$E zCOoDn*5L>w3O!3xB@K>1qR_K!Q_|oFBnmyR#FaES0*OM;>k1_ejzFT&^D0wGgCmeA z^t|R$(%=Xr3cWvpwUP!$AW>)u)*qr+D|f6TQD_MjC=8B3qR{i%Oi6Tz>*(29 zs-(dYNECXuohfN>1QLawE$K=c9DzikXS;@y21g)K=-JAtq`?tL6neIKDQR#7Qm+4R z^1{5}|3q&4l-q5!z_Gek{rJ1rr=$B`pO22CK3&c;;jKQ+gsD%L%jHA8JNEb*J|?`c c*MwEi@Jx89nLvFX-V;8lk0*b4zPCPk1+9kvZ~y=R diff --git a/src/coreclr/src/ildasm/exe/CMakeLists.txt b/src/coreclr/src/ildasm/exe/CMakeLists.txt index 87cdd23..bf09be5 100644 --- a/src/coreclr/src/ildasm/exe/CMakeLists.txt +++ b/src/coreclr/src/ildasm/exe/CMakeLists.txt @@ -27,12 +27,10 @@ set(ILDASM_SOURCES ../dasm.cpp ../dasm_formattype.cpp ../dasm_mi.cpp - ../dasm_pr.cpp ../dasm_sz.cpp ../dis.cpp ../dman.cpp ../dres.cpp - ../gui.cpp ../ildasmpch.cpp ../windasm.cpp ) @@ -73,4 +71,4 @@ else() ) endif(CLR_CMAKE_PLATFORM_UNIX) -install_clr(ildasm) \ No newline at end of file +install_clr(ildasm) diff --git a/src/coreclr/src/ildasm/field.bmp b/src/coreclr/src/ildasm/field.bmp deleted file mode 100644 index aa09fb2f54798e6847b7239b7733973c06ce4825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF|O1=490Pz1&NL;xI&zO+M?$UF7_ZkiVMU!Tyq8rA7Oi>7ydJzebN&o`Q?k9 zD9I%A?fd5svX`&#MZR$K>3Am}cmJ{X|J#KKn?y{o=TNFj>UYWG*G~~OI5?q+LW`I{ z!GSpfi9(CGKw+TpK%&s+xk?%wfkdH2IFwWv9Dzikc}ao7;0PoNEy5En zDT=i^0*OM;&{Ro-BakTc4BM16I0A`6&nIyu4URyf(DS)MNrNMhDD-^FRMOxGBnmyB zxs)_G0*ONJUtq1I!4XIlT7vP1DAvdwYfThdLInzgBakTc{5Dh4;0PoNJ-^hIG&ll@ zLeKB!ArS^gAW`U<3aO;Q5l9qzrb#Jja0C*C-cu-ANrNMhD6|ygFHsmAfy7#Srj{yc za0C*Co@r-F8XSQ{p=V0Ek_Ja0QRtbjp`^hPNECXeaw=(X1QLawXj jIl1@qKCcb#weNo#>y>tWor_=V)mUer=dbIO|Bml3nKc$S diff --git a/src/coreclr/src/ildasm/gui.cpp b/src/coreclr/src/ildasm/gui.cpp deleted file mode 100644 index 83501e6..0000000 --- a/src/coreclr/src/ildasm/gui.cpp +++ /dev/null @@ -1,4013 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#include "ildasmpch.h" - -#ifndef FEATURE_CORECLR -#include "debugmacros.h" -#include "corpriv.h" -#include "ceeload.h" -#include "dasmgui.h" -#include "dasmenum.hpp" -#include "dis.h" -#include "resource.h" -#include "gui.h" -#include "formattype.h" -#include "..\tools\metainfo\mdinfo.h" -#include - -struct MemberInfo { - const char *pszMemberName; - DWORD dwAttrs; - ULONG cComSig; - PCCOR_SIGNATURE pComSig; - mdToken token; -}; - -int __cdecl memberCmp(const void *elem1, const void *elem2 ) { - MemberInfo* mem1 = (MemberInfo*) elem1; - MemberInfo* mem2 = (MemberInfo*) elem2; - return(strcmp(mem1->pszMemberName, mem2->pszMemberName)); -} - -// -// Global buffer, filled by AddOPCode -// -char *GlobalBuffer = new (nothrow) char[65535]; -ULONG GlobalBufferLen = 65535; -ULONG InGlobalBuffer; -// -// Global HINSTANCE -// -extern HINSTANCE g_hInstance; -extern HINSTANCE g_hResources; - -// -// Main window -// -HWND g_hwndMain; - -// -// Treeview for main window -// -HWND g_hwndTreeView; - -// -// Treeview class full name / partial name switch -// -BOOL g_fTreeViewFCN = TRUE; - -// -// Assembly info window (child of main) -// -HWND g_hwndAsmInfo; -extern IMetaDataAssemblyImport* g_pAssemblyImport; -void DumpAssembly(void* GUICookie, BOOL fFullDump); -IMetaDataAssemblyImport* GetAssemblyImport(void* GUICookie); - -// -// Global image list -// -HIMAGELIST g_hImageList; - -// -// Menu for main window -// -HMENU g_hMenu, g_hMetaInfoMenu, g_hFileMenu, g_hViewMenu, g_hFontMenu; - -// -// Flags -// -BOOL g_fFullMemberInfo = FALSE; // Show member type? (method, field, event, prop) -BOOL g_fSortByName = TRUE; // Sort members in tree? -// -// Module name of loaded DLL/EXE -// -const char *g_pszModule; - -// -// Interlocked variable for setting char dimensions once -// -long g_SetCharDimensions = 0; - -unsigned g_uFindReplaceMsg = 0; -HWND g_hFindText = NULL; -// -// Bitmap handles -// -HBITMAP g_hBitmaps[LAST_IMAGE_INDEX]; - -// -// Root item for listview -// -HTREEITEM g_hRoot; - -// Global graphics -HBRUSH g_hWhiteBrush; -HFONT g_hFixedFont; -HFONT g_hSmallFont; -HBITMAP g_hMethodBmp, g_hFieldBmp, g_hClassBmp, g_hStaticMethodBmp, g_hStaticFieldBmp, g_hQuestionBmp; -LOGFONTW g_strLogFontTree, g_strLogFontDasm; -CHOOSEFONTW g_strChFontTree, g_strChFontDasm; - -struct GUI_Info -{ - LOGFONTW* plfTree; - LOGFONTW* plfDasm; - int x; - int y; - int w; - int h; -}; - -GUI_Info guiInfo = {&g_strLogFontTree, &g_strLogFontDasm, CW_USEDEFAULT, CW_USEDEFAULT, 400,600}; - -// Text info -long g_Height; -long g_MaxCharWidth; - -// Currently selected treeview item -HTREEITEM g_CurSelItem; - -extern IMAGE_COR20_HEADER * g_CORHeader; -extern BOOL g_fDumpTokens; -extern BOOL g_fShowBytes; -extern BOOL g_fShowSource; -extern BOOL g_fTryInCode; -extern BOOL g_fQuoteAllNames; -extern BOOL g_fCAVerbal; -extern BOOL g_fShowProgressBar; -extern BOOL g_fDumpHeader; -extern BOOL g_fDumpAsmCode; -extern BOOL g_fDumpTokens; -extern BOOL g_fDumpStats; -extern BOOL g_fDumpMetaInfo; -extern BOOL g_fDumpClassList; -extern BOOL g_fInsertSourceLines; - -extern BOOL g_fLimitedVisibility; -extern BOOL g_fHidePub; -extern BOOL g_fHidePriv; -extern BOOL g_fHideFam; -extern BOOL g_fHideAsm; -extern BOOL g_fHideFAA; -extern BOOL g_fHideFOA; -extern BOOL g_fHidePrivScope; -extern BOOL g_fTDC; - -extern char g_szInputFile[]; // in UTF-8 -extern WCHAR g_wszFullInputFile[]; // in UTF-16 -extern ULONG g_ulMetaInfoFilter; -extern char g_szOutputFile[]; // in UTF-8 -extern DWORD g_Mode; -extern FILE* g_pFile; -extern HINSTANCE g_hInstance; - -extern unsigned g_uCodePage; -extern unsigned g_uConsoleCP; -DWORD DumpResourceToFile(__in __nullterminated WCHAR* wzFileName); // see DRES.CPP -// -// Functions -// -BOOL RegisterWindowClasses(); -HWND CreateTreeView(HWND hwndParent); -HTREEITEM AddOneItem(HTREEITEM hParent, const char *pszText, HTREEITEM hInsAfter, int iImage, HWND hwndTree, BOOL fExpanded); -HWND GUIDisassemble(mdTypeDef cl, mdToken mbMember, __in __nullterminated char *pszWindowTitle); -HTREEITEM AddClassToTreeView(HTREEITEM hParent, mdTypeDef cl); -void AddGlobalFunctions(); -void CreateMenus(); -Namespace_t* FindNamespace(const char *pszNamespace); -void GUICleanupClassItems(); -void SelectClassByName(__in __nullterminated char *pszFQName); -void SelectClassByToken(mdToken tk); -void DumpTreeItem(HTREEITEM hItem, FILE* pFile, __inout __nullterminated WCHAR* szIndent); -HTREEITEM FindCreateNamespaceRoot(const char *pszNamespace); -FILE* OpenOutput(__in __nullterminated const char* szFileName); -FILE* OpenOutput(__in __nullterminated const WCHAR* wzFileName); - -#undef SendMessageW -#undef PostMessageW -#undef CreateWindowExW -#undef DefWindowProcW -#undef RegisterClassExW -#undef RegisterClassW -#undef SetWindowTextW -#undef GetWindowTextW -#undef MessageBoxW - -char* UtfToAnsi(__in __nullterminated const char* sz) { return UnicodeToAnsi(UtfToUnicode(sz));} - -LRESULT CALLBACK DisassemblyWndProc( - HWND hwnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -); - -LRESULT CALLBACK MainWndProc( - HWND hwnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -); - -ClassItem_t *AddClassToGUI(mdTypeDef cl, UINT uImageIndex, - const char *pszNamespace, const char *pszClassName, DWORD cSubItems, HTREEITEM *phRoot); - -void AddMethodToGUI( - mdTypeDef cl, - ClassItem_t * pClassItem, - const char *pszNamespace, - const char *pszClassName, - const char *pszMethodName, - PCCOR_SIGNATURE pComSig, - unsigned cComSig, - mdMethodDef mbMethod, - DWORD dwAttrs -); - -void AddFieldToGUI( - mdTypeDef cl, - ClassItem_t *pClassItem, - const char *pszNamespace, - const char *pszClassName, - const char *pszFieldName, - const char *pszSignature, - mdFieldDef mbField, - DWORD dwAttrs -); - -void AddEventToGUI( - mdTypeDef cl, - ClassItem_t *pClassItem, - const char *pszNamespace, - const char *pszClassName, - DWORD dwClassAttrs, - mdEvent mbEvent -); - -void AddPropToGUI( - mdTypeDef cl, - ClassItem_t *pClassItem, - const char *pszNamespace, - const char *pszClassName, - DWORD dwClassAttrs, - mdProperty mbProp -); - -DynamicArray *g_DisasmBox; -DWORD g_NumDisasmBoxes=0; - -DynamicArray *g_ClassItemList; -DWORD g_NumClassItems=0; - -DynamicArray *g_NamespaceList; -DWORD g_NumNamespaces=0; - - -ClassItem_t *FindClassItem(HTREEITEM hItem); -ClassItem_t *FindClassItem(mdTypeDef cl); -ClassItem_t *FindClassItem(__in_opt __nullterminated char *pszNamespace, __in __nullterminated char *pszName); - -// Find disasm box among opened by class and member tokens -DisasmBox_t* FindDisasmBox(mdToken tkClass, mdToken tkMember) -{ - for (DWORD i = 0; i < g_NumDisasmBoxes; i++) - { - if (((*g_DisasmBox)[i].tkClass == tkClass) - &&((*g_DisasmBox)[i].tkMember == tkMember)) - return &(*g_DisasmBox)[i]; - } - return NULL; -} -// Find disasm box among opened by the container hwnd -DisasmBox_t* FindDisasmBoxByHwnd(HWND hwndContainer) -{ - for (DWORD i = 0; i < g_NumDisasmBoxes; i++) - { - if ((*g_DisasmBox)[i].hwndContainer == hwndContainer) - return &(*g_DisasmBox)[i]; - } - return NULL; -} -// -// Add a new disassembly box to the global list of them -// -// hwndContainer - parent window -// hwndChild - listview -// -void AddDisasmBox(HWND hwndContainer, HWND hwndChild, HMENU hMenu, mdToken tkClass, mdToken tkMember) -{ - (*g_DisasmBox)[g_NumDisasmBoxes].hwndContainer = hwndContainer; - (*g_DisasmBox)[g_NumDisasmBoxes].hwndChild = hwndChild; - (*g_DisasmBox)[g_NumDisasmBoxes].hMenu = hMenu; - (*g_DisasmBox)[g_NumDisasmBoxes].tkClass = tkClass; - (*g_DisasmBox)[g_NumDisasmBoxes].tkMember = tkMember; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.lStructSize = sizeof(FINDREPLACEW); - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.hwndOwner = hwndContainer; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.Flags = FR_DOWN|FR_DIALOGTERM; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.lpstrFindWhat = (LPWSTR)((*g_DisasmBox)[g_NumDisasmBoxes].wzFind); - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.lpstrReplaceWith = NULL; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.wFindWhatLen = 120; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.wReplaceWithLen = 0; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.lCustData = 0; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.lpfnHook = NULL; - (*g_DisasmBox)[g_NumDisasmBoxes].strFR.lpTemplateName = NULL; - g_NumDisasmBoxes++; -} - -void UpdateDisasmBox(DisasmBox_t* pBox, HWND hwndContainer, HWND hwndChild, HMENU hMenu) -{ - pBox->hwndContainer = hwndContainer; - pBox->hwndChild = hwndChild; - pBox->hMenu = hMenu; - pBox->strFR.hwndOwner = hwndContainer; -} -// -// Given a container window, find the associated disassembly window -// -HWND FindAssociatedDisassemblyListBox(HWND hwndContainer) -{ - DWORD i; - - for (i = 0; i < g_NumDisasmBoxes; i++) - { - if ((*g_DisasmBox)[i].hwndContainer == hwndContainer) - return (*g_DisasmBox)[i].hwndChild; - } - - return NULL; -} - -// -// Given a disassembly window, find the associated container window -// -HWND FindAssociatedDisassemblyContainer(HWND hwndChild) -{ - DWORD i; - - for (i = 0; i < g_NumDisasmBoxes; i++) - { - if ((*g_DisasmBox)[i].hwndChild == hwndChild) - return (*g_DisasmBox)[i].hwndContainer; - } - - return NULL; -} - - -void RemoveDisasmBox(HWND hwndContainer) -{ - DWORD i; - - for (i = 0; i < g_NumDisasmBoxes; i++) - { - if ((*g_DisasmBox)[i].hwndContainer == hwndContainer) - { - memcpy(&(*g_DisasmBox)[i], &(*g_DisasmBox)[i+1], (g_NumDisasmBoxes-i-1)*sizeof(DisasmBox_t)); - g_NumDisasmBoxes--; - break; - } - } -} - - -void RemoveItemsFromList() -{ - TreeView_DeleteAllItems(g_hwndTreeView); -} - - -BOOL RefreshList() -{ - GUICleanupClassItems(); - return GUIAddItemsToList(); -} - - -void GUISetModule(__in __nullterminated const char *pszModule) -{ - g_pszModule = pszModule; -} - - -TreeItem_t *FindClassMemberByName(ClassItem_t *pClassItem, - __in __nullterminated char *pszFindName, - __in __nullterminated char *pszFindSig) -{ - HRESULT hr; - DWORD i; - - // do in two passes, fields first - for (i = 0; i < pClassItem->SubItems; i++) - { - TreeItem_t *pItem; - const char *pszMemberName; - const char *pszMemberSig; - DWORD dwAttrs; - - CQuickBytes qbMemberSig; - - PCCOR_SIGNATURE pComSig; - ULONG cComSig; - - - pItem = &pClassItem->pMembers[i]; - if (pItem->Discriminator != TREEITEM_TYPE_MEMBER) - continue; - - if (TypeFromToken(pItem->mbMember) == mdtMethodDef) - { - if (FAILED(g_pImport->GetMethodDefProps(pItem->mbMember, &dwAttrs))) - { - continue; - } - if (FAILED(g_pImport->GetNameOfMethodDef(pItem->mbMember, &pszMemberName))) - { - continue; - } - if (FAILED(g_pImport->GetSigOfMethodDef(pItem->mbMember, &cComSig, &pComSig))) - { - continue; - } - } - else - { - if (FAILED(g_pImport->GetFieldDefProps(pItem->mbMember, &dwAttrs))) - { - continue; - } - if (FAILED(g_pImport->GetNameOfFieldDef(pItem->mbMember, &pszMemberName))) - { - continue; - } - if (FAILED(g_pImport->GetSigOfFieldDef(pItem->mbMember, &cComSig, &pComSig))) - { - continue; - } - } - MAKE_NAME_IF_NONE(pszMemberName,pItem->mbMember); - qbMemberSig.Shrink(0); - pszMemberSig = PrettyPrintSig(pComSig, cComSig, "", &qbMemberSig, g_pImport,NULL); - - // @todo: GUI IL is so that NDView can call into DASM with/GUI; NDView uses Reflection API - // which doesn't let us get a valid signature. - // If GUI IL only, then ignore signature if it's NULL - if (IsGuiILOnly()) { - if (!strcmp(pszMemberName, pszFindName)) { - if ((pszFindSig != NULL) && strcmp(pszMemberSig, pszFindSig)) continue; - return pItem; - } - } else { - if (!strcmp(pszMemberName, pszFindName) && !strcmp(pszMemberSig, pszFindSig)) - return pItem; - } - } - - return NULL; -} - -// Kick of a disassembly window -// Return TRUE if window opened ok, and FALSE if there's an error -BOOL DisassembleMemberByName(__in __nullterminated char *pszClassName, - __in __nullterminated char *pszMemberName, - __in_opt __nullterminated char *pszSig) -{ - char szClassName[MAX_CLASSNAME_LENGTH]; - char szClassNamespace[MAX_CLASSNAME_LENGTH]; - char *pszClassNamespace; - char *p; - - p = ns::FindSep(pszClassName); - if (p == NULL) - { - strcpy_s(szClassName, MAX_CLASSNAME_LENGTH,pszClassName); - pszClassNamespace = NULL; - } - else - { - strncpy_s(szClassNamespace, MAX_CLASSNAME_LENGTH, pszClassName, p - pszClassName); - szClassNamespace[ p - pszClassName ] = '\0'; - pszClassNamespace = szClassNamespace; - - strcpy_s(szClassName, MAX_CLASSNAME_LENGTH, p+1); - } - - ClassItem_t *pClassItem = FindClassItem(pszClassNamespace, szClassName); - - if (pClassItem != NULL) - { - TreeItem_t *pTreeItem; - - pTreeItem = FindClassMemberByName(pClassItem, pszMemberName, pszSig); - - if (pTreeItem != NULL) - { - DWORD dwAttrs; - DWORD dwImplAttrs; - - // What is this member? - - if (TypeFromToken(pTreeItem->mbMember) == mdtMethodDef) - { - char* szText; - HWND fOK=NULL; - if (FAILED(g_pImport->GetMethodDefProps(pTreeItem->mbMember, &dwAttrs))) - { - goto ErrorHere; - } - if (FAILED(g_pImport->GetMethodImplProps(pTreeItem->mbMember, NULL, &dwImplAttrs))) - { - goto ErrorHere; - } - - // Can't be abstract or native - if (IsMdAbstract(dwAttrs) || IsMiInternalCall(dwImplAttrs)) - return FALSE; - - szText = new (nothrow) char[4096]; - if(szText) - { - TVITEMA SelItem; - - // Get the name of this item so that we can title the disassembly window - memset(&SelItem, 0, sizeof(SelItem)); - SelItem.mask = TVIF_TEXT; - SelItem.pszText = szText; - SelItem.hItem = pTreeItem->hItem; - SelItem.cchTextMax = 4095; - - WCHAR* wzText = (WCHAR*)szText; - SendMessageW(g_hwndTreeView, TVM_GETITEMW, 0, (LPARAM) (LPTVITEMW) &SelItem); - unsigned L = ((unsigned)wcslen(wzText)+1)*3; - char* szUTFText = new (nothrow) char[L]; - if(szUTFText) - { - memset(szUTFText,0,L); - WszWideCharToMultiByte(CP_UTF8,0,wzText,-1,szUTFText,L,NULL,NULL); - delete[] wzText; - szText = szUTFText; - } - - fOK = GUIDisassemble(pClassItem->cl, pTreeItem->mbMember, szText); - delete[] szText; - } - if (fOK == NULL) { - goto ErrorHere; - } - } - } // endif (pTreeItem != NULL) - else { - goto ErrorHere; - } - - } else { - goto ErrorHere; - } - - return TRUE; - -ErrorHere: - char pzText[300]; - sprintf_s(pzText, 300,RstrUTF(IDS_CANTVIEW_TX) /*"Can't view %s::%s(%s)"*/, pszClassName, pszMemberName, pszSig); - - WszMessageBox(g_hwndMain, UtfToUnicode(pzText), RstrW(IDS_CANTVIEW_HD) /*"Can't View IL"*/, MB_OK | MB_ICONERROR | GetDasmMBRTLStyle() ); - - - return FALSE; -} - -//HTREEITEM AddInfoItemToClass(HTREEITEM hParent, ClassItem_t *pClassItem, const char *pszText, const char *pszStoredInfoText) -HTREEITEM AddInfoItemToClass(HTREEITEM hParent, ClassItem_t *pClassItem, const char *pszText, mdToken tk) -{ - _ASSERTE(pClassItem->CurMember < pClassItem->SubItems); - pClassItem->pMembers[pClassItem->CurMember].hItem = AddOneItem( - pClassItem->hItem, pszText, hParent, RED_ARROW_IMAGE_INDEX, g_hwndTreeView, FALSE - ); - pClassItem->pMembers[pClassItem->CurMember].Discriminator = TREEITEM_TYPE_INFO; - //pClassItem->pMembers[pClassItem->CurMember].pszText = (char *) pszStoredInfoText; - pClassItem->pMembers[pClassItem->CurMember].mbMember = tk; - pClassItem->CurMember++; - - return pClassItem->pMembers[pClassItem->CurMember-1].hItem; -} - -struct ClassDescr -{ - mdToken tk; - const char* szName; -}; -static int __cdecl classDescrCmp(const void *op1, const void *op2) -{ - return strcmp(((ClassDescr*)op1)->szName,((ClassDescr*)op2)->szName); -} - -unsigned AddClassesWithEncloser(mdToken tkEncloser, HTREEITEM hParent) -{ - unsigned i, N=0; - for (i = 0; i < g_NumClasses; i++) - { - if(g_cl_enclosing[i] == tkEncloser) N++; - } - - if(N) - { - ClassDescr* rClassDescr = new (nothrow) ClassDescr[N]; - const char *pszClassName,*pszNamespace; - for (i = 0, N = 0; i < g_NumClasses; i++) - { - if(g_cl_enclosing[i] == tkEncloser) - { - rClassDescr[N].tk = g_cl_list[i]; - if (FAILED(g_pImport->GetNameOfTypeDef(g_cl_list[i], &pszClassName, &pszNamespace))) - { - pszClassName = pszNamespace = "Invalid TypeDef record"; - } - // doesn't throw here, so rClassDescr doesn't leak - MAKE_NAME_IF_NONE(pszClassName,g_cl_list[i]); - rClassDescr[N].szName = pszClassName; - N++; - } - } - if(g_fSortByName) qsort(&rClassDescr[0],N,sizeof(ClassDescr),classDescrCmp); - for(i = 0; i < N; i++) AddClassToTreeView(hParent,rClassDescr[i].tk); - delete[] rClassDescr; - } - return N; -} - -static int __cdecl stringCmp(const void *op1, const void *op2) -{ - return strcmp(*((char**)op1), *((char**)op2)); - //return(strlen(*((char**)op1)) - strlen(*((char**)op2))); -} - -UINT GetDasmMBRTLStyle() { - UINT RTLMessageBoxStyle = 0; - WCHAR* pwStr = RstrW(IDS_RTL); - if( wcscmp(pwStr, L"RTL_True") == 0) { - RTLMessageBoxStyle = 0x00080000 |0x00100000; // MB_RIGHT || MB_RTLREADING - } - return RTLMessageBoxStyle; -} - -void GUIDumpAssemblyInfo() -{ - memset(GlobalBuffer,0,GlobalBufferLen); - InGlobalBuffer = 0; - if(g_pAssemblyImport==NULL) g_pAssemblyImport = GetAssemblyImport((void*)g_hwndAsmInfo); - if(g_pAssemblyImport) - { - if(g_fDumpRTF) DumpRTFPrefix((void *)g_hwndAsmInfo,FALSE); - DumpAssembly((void *)g_hwndAsmInfo,FALSE); - if(g_fDumpRTF) DumpRTFPostfix((void *)g_hwndAsmInfo); - } - - if(g_uCodePage == 0xFFFFFFFF) - SendMessageW((HWND)g_hwndAsmInfo,WM_SETTEXT,0, (LPARAM)GlobalBuffer); - else - { - UINT32 L = (UINT32)strlen(GlobalBuffer); - WCHAR* wz = new (nothrow) WCHAR[L+4]; - if(wz) - { - memset(wz,0,sizeof(WCHAR)*(L+2)); - int x = WszMultiByteToWideChar(CP_UTF8,0,GlobalBuffer,-1,wz,L+2); - if(g_fDumpRTF) - { - x = (int)SendMessageA((HWND)g_hwndAsmInfo,WM_SETTEXT,0, (LPARAM)UnicodeToAnsi(wz)); - } - else - { - x = (int)WszSendMessage((HWND)g_hwndAsmInfo,WM_SETTEXT,0, (LPARAM)wz); - } - delete[] wz; - } - } -} - -BOOL GUIAddItemsToList() -{ - DWORD i,NumGlobals=0; - HENUMInternal hEnumMethod; - - RemoveItemsFromList(); - g_NumClassItems = 0; - g_NumNamespaces = 0; - - g_hRoot = AddOneItem( - (HTREEITEM)NULL, - g_pszModule, - (HTREEITEM)TVI_ROOT, - FIELD_IMAGE_INDEX, - g_hwndTreeView, - TRUE - ); - - if (SUCCEEDED(g_pImport->EnumGlobalFunctionsInit(&hEnumMethod))) - { - NumGlobals = g_pImport->EnumGetCount(&hEnumMethod); - g_pImport->EnumClose(&hEnumMethod); - } - if (SUCCEEDED(g_pImport->EnumGlobalFieldsInit(&hEnumMethod))) - { - NumGlobals += g_pImport->EnumGetCount(&hEnumMethod); - g_pImport->EnumClose(&hEnumMethod); - } - (*g_ClassItemList)[0].hItem = g_hRoot; - (*g_ClassItemList)[0].cl = 0; - (*g_ClassItemList)[0].SubItems = NumGlobals+1; - (*g_ClassItemList)[0].CurMember = 0; - (*g_ClassItemList)[0].pMembers = new (nothrow) TreeItem_t[NumGlobals+1]; - g_NumClassItems++; - - //AddInfoItemToClass((HTREEITEM)TVI_ROOT, &(*g_ClassItemList)[0], " M A N I F E S T", "__MANIFEST__"); - AddInfoItemToClass((HTREEITEM)TVI_ROOT, &(*g_ClassItemList)[0], " M A N I F E S T", 0xFFFFFFFF); - - if (g_NumClasses != 0) - { - //create root namespaces - { - char** rszNamespace = new (nothrow) char*[g_NumClasses]; - ULONG ulNamespaces=0; - for (i = 0; i < g_NumClasses; i++) - { - if (g_cl_enclosing[i] == mdTypeDefNil) // nested classes don't have separate namespaces - { - const char *pszClassName, *pszNameSpace; - if (FAILED(g_pImport->GetNameOfTypeDef( - g_cl_list[i], - &pszClassName, - &pszNameSpace))) - { - pszClassName = pszNameSpace = "Invalid TypeDef record"; - } - if ((pszNameSpace != NULL) && (*pszNameSpace != 0)) - { - rszNamespace[ulNamespaces++] = (char*)pszNameSpace; - } - } - } - if (ulNamespaces != 0) - { - qsort(&rszNamespace[0],ulNamespaces,sizeof(char*),stringCmp); - for(i = 0; i < ulNamespaces; i++) FindCreateNamespaceRoot(rszNamespace[i]); - } - delete[] rszNamespace; - } - AddClassesWithEncloser(mdTypeDefNil,NULL); - }// end if (g_NumClasses) - AddGlobalFunctions(); - - WszSendMessage(g_hwndTreeView, TVM_EXPAND, TVE_EXPAND, (LPARAM)g_hRoot); - EnableMenuItem(g_hMenu,(UINT)(UINT_PTR)g_hViewMenu, MF_ENABLED); - EnableMenuItem(g_hFileMenu,IDM_DUMP,MF_ENABLED); - EnableMenuItem(g_hFileMenu,IDM_DUMP_TREE,MF_ENABLED); - DrawMenuBar(g_hwndMain); - - { - WszMultiByteToWideChar(CP_UTF8,0,g_szInputFile,-1,wzUniBuf,2048); - wcscat_s(wzUniBuf,2048,L" - IL DASM"); - for(int cnt=0; cnt<100; cnt++) - { - SendMessageW(g_hwndMain,WM_SETTEXT, 0, (LPARAM)wzUniBuf); - SendMessageW(g_hwndMain,WM_GETTEXT, 2048, (LPARAM)&wzUniBuf[2048]); - wzUniBuf[2047]=0; - if(0 == wcscmp(wzUniBuf,&wzUniBuf[2048])) break; - } - } - - if (IsGuiILOnly()) { - ShowWindow(g_hwndMain, SW_HIDE); - } else { - ShowWindow(g_hwndMain, SW_SHOW); - } - UpdateWindow(g_hwndMain); - //GUIDisassemble(0,0,"MANIFEST"); - g_Mode &= ~MODE_GUI; - DumpManifest(NULL); - g_Mode |= MODE_GUI; - - GUIDumpAssemblyInfo(); - - TreeView_SelectItem(g_hwndTreeView,g_hRoot); - SetFocus(g_hwndTreeView); - return TRUE; -} - - -// -// Find class item by class token -// -ClassItem_t* ClassItemByToken(mdTypeDef cl) -{ - for(ULONG i=0; i < g_NumClassItems; i++) - { - if((*g_ClassItemList)[i].cl == cl) return &(*g_ClassItemList)[i]; - } - return NULL; -} - -// Factored out of AddClassToTreeView for its big stack consumption (AddClassToTreeView is -// called recursively via AddClassesWithEncloser). -static void AddClassToTreeView_PrettyPrintClass(mdTypeRef crType, LPCUTF8 pszFormat, __out_ecount(cBufferSize) char *pszBuffer, size_t cBufferSize) -{ - CQuickBytes out; - sprintf_s(pszBuffer, cBufferSize, pszFormat, PrettyPrintClass(&out, crType, g_pImport)); -} - -// -// Add a class and its members -// -#ifdef _PREFAST_ -#pragma warning(push) -#pragma warning(disable:21000) // Suppress PREFast warning about overly large function -#endif -HTREEITEM AddClassToTreeView(HTREEITEM hParent, mdTypeDef cl) -{ - HRESULT hr; - ClassItem_t *pClassItem; - HTREEITEM hClassRoot; - HTREEITEM hNamespaceRoot = hParent; - HTREEITEM hPrimaryInfo; - HTREEITEM hLast; - mdToken *pMemberList = NULL; - HENUMInternal hEnumMethod; // enumerator for method defs - HENUMInternal hEnumField; // enumerator for fields - HENUMInternal hEnumEvent; // enumerator for events - HENUMInternal hEnumProp; // enumerator for properties - DWORD NumMembers; - const char *pszClassName; // name associated with this CL - const char *pszNamespace; - DWORD dwClassAttrs; - mdTypeRef crExtends; - mdInterfaceImpl ii; - DWORD NumInterfaces; - DWORD i; - char *szPrimaryInfo; // public class foo extends bar -// char *szFullClassName; - DWORD SubItems; - const char *pszSuperName = NULL; - HENUMInternal hEnumII; // enumerator for interface impl - mdCustomAttribute *rCA; - ULONG ulCAs; - UINT uImageIndex = CLASS_IMAGE_INDEX; - BOOL bIsEnum = FALSE; - BOOL bIsValueType = FALSE; - BOOL bExtendsSysObject=FALSE; - - if (FAILED(g_pImport->GetNameOfTypeDef( - cl, - &pszClassName, - &pszNamespace))) - { - return FALSE; - } - MAKE_NAME_IF_NONE(pszClassName,cl); - g_pImport->GetTypeDefProps( - cl, - &dwClassAttrs, - &crExtends - ); - if(g_fLimitedVisibility) - { - if(g_fHidePub && (IsTdPublic(dwClassAttrs)||IsTdNestedPublic(dwClassAttrs))) return NULL; - if(g_fHidePriv && (IsTdNotPublic(dwClassAttrs)||IsTdNestedPrivate(dwClassAttrs))) return NULL; - if(g_fHideFam && IsTdNestedFamily(dwClassAttrs)) return NULL; - if(g_fHideAsm && IsTdNestedAssembly(dwClassAttrs)) return NULL; - if(g_fHideFOA && IsTdNestedFamORAssem(dwClassAttrs)) return NULL; - if(g_fHideFAA && IsTdNestedFamANDAssem(dwClassAttrs)) return NULL; - } - hr = g_pImport->EnumInit( - mdtInterfaceImpl, - cl, - &hEnumII); - if (FAILED(hr)) - return FALSE; - - NumInterfaces = g_pImport->EnumGetCount(&hEnumII); - hr = g_pImport->EnumInit(mdtMethodDef, cl, &hEnumMethod); - if (FAILED(hr)) - { - printf("Unable to enum methods\n"); - return FALSE; - } - NumMembers = g_pImport->EnumGetCount(&hEnumMethod); - - hr = g_pImport->EnumInit(mdtFieldDef, cl, &hEnumField); - if (FAILED(hr)) - { - g_pImport->EnumClose(&hEnumMethod); - printf("Unable to enum fields\n"); - return FALSE; - } - NumMembers += g_pImport->EnumGetCount(&hEnumField); - - hr = g_pImport->EnumInit(mdtEvent, cl, &hEnumEvent); - if (FAILED(hr)) - { - g_pImport->EnumClose(&hEnumMethod); - g_pImport->EnumClose(&hEnumField); - printf("Unable to enum events\n"); - return FALSE; - } - NumMembers += g_pImport->EnumGetCount(&hEnumEvent); - - hr = g_pImport->EnumInit(mdtProperty, cl, &hEnumProp); - if (FAILED(hr)) - { - g_pImport->EnumClose(&hEnumMethod); - g_pImport->EnumClose(&hEnumField); - g_pImport->EnumClose(&hEnumEvent); - printf("Unable to enum properties\n"); - return FALSE; - } - NumMembers += g_pImport->EnumGetCount(&hEnumProp); - if (NumMembers > 0) - { - pMemberList = new (nothrow) mdToken[NumMembers]; - if (pMemberList == NULL) - { - // close enum before return - g_pImport->EnumClose(&hEnumMethod); - g_pImport->EnumClose(&hEnumField); - g_pImport->EnumClose(&hEnumEvent); - g_pImport->EnumClose(&hEnumProp); - return FALSE; - } - - for (i = 0; g_pImport->EnumNext(&hEnumField, &pMemberList[i]); i++); - for (; g_pImport->EnumNext(&hEnumMethod, &pMemberList[i]); i++); - for (; g_pImport->EnumNext(&hEnumEvent, &pMemberList[i]); i++); - for (; g_pImport->EnumNext(&hEnumProp, &pMemberList[i]); i++); - _ASSERTE(i == NumMembers); - - } - else - { - pMemberList = NULL; - } - - // Add class root to treeview - SubItems = NumMembers + NumInterfaces + 3; - if (!IsNilToken(crExtends)) - { - LPCSTR szClassName=""; - LPCSTR szNameSpace=""; - SubItems++; - if(TypeFromToken(crExtends)==mdtTypeRef) - { - if (FAILED(g_pImport->GetNameOfTypeRef(crExtends, &szNameSpace, &szClassName))) - { - return FALSE; - } - if(!(strcmp(szNameSpace,"System") || strcmp(szClassName, "Object"))) - { - SubItems--; - bExtendsSysObject = TRUE; - } - } - else if (TypeFromToken(crExtends) == mdtTypeDef) - { - if (FAILED(g_pImport->GetNameOfTypeDef(crExtends, &szClassName, &szNameSpace))) - { - return FALSE; - } - } - - bIsEnum = (!strcmp(szNameSpace,"System"))&&(!strcmp(szClassName,"Enum")); - - bIsValueType = (!strcmp(szNameSpace,"System"))&&(!strcmp(szClassName,"ValueType")) - && (strcmp(pszNamespace,"System") || strcmp(pszClassName,"Enum")); - } - { - HCORENUM hEnum = NULL; - rCA = new (nothrow) mdCustomAttribute[4096]; - g_pPubImport->EnumCustomAttributes(&hEnum, cl, 0, rCA, 4096, &ulCAs); - SubItems += ulCAs; - g_pPubImport->CloseEnum( hEnum); - } - for (i = 0; i < g_NumClasses; i++) - { - if(g_cl_enclosing[i] == cl) SubItems++; - } - - if(IsTdInterface(dwClassAttrs)) uImageIndex = CLASSINT_IMAGE_INDEX; - if(bIsValueType) uImageIndex = CLASSVAL_IMAGE_INDEX; - if(bIsEnum) uImageIndex = CLASSENUM_IMAGE_INDEX; - char *szptr1; - if((*pszNamespace != 0) && g_fTreeViewFCN) - sprintf_s(szString,SZSTRING_SIZE,"%s.",pszNamespace); - else - szString[0] = 0; - strcat_s(szString,SZSTRING_SIZE,pszClassName); - szptr1 = &szString[strlen(szString)]; - // Count the type parameters -- could be too many for GUI - DWORD NumTyPars; - mdGenericParam tkTyPar; - HCORENUM hEnumTyPar = NULL; - unsigned jj; - - for(jj=0; - SUCCEEDED(g_pPubImport->EnumGenericParams(&hEnumTyPar, cl, &tkTyPar, 1, &NumTyPars)) - && (NumTyPars != 0); jj++); - - if (jj > 0) - { - if(jj > 16) - szptr1 += sprintf_s(szptr1,SZSTRING_REMAINING_SIZE(szptr1),"%s%d type parameters%s",LTN(),jj,GTN()); - else - DumpGenericPars(szString,cl); - - uImageIndex = CLASS_GEN_IMAGE_INDEX; - if(IsTdInterface(dwClassAttrs)) uImageIndex = CLASSINT_GEN_IMAGE_INDEX; - if(bIsValueType) uImageIndex = CLASSVAL_GEN_IMAGE_INDEX; - if(bIsEnum) uImageIndex = CLASSENUM_GEN_IMAGE_INDEX; - } - - pClassItem = AddClassToGUI(cl, uImageIndex, pszNamespace, szString, SubItems, &hNamespaceRoot); - if (pClassItem == NULL) - return FALSE; - - hClassRoot = pClassItem->hItem; - - const size_t BUFFER_SIZE = 8192; - szPrimaryInfo = new (nothrow) char[BUFFER_SIZE]; - strcpy_s(szPrimaryInfo, BUFFER_SIZE,".class "); - - if (IsTdInterface(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "interface "); - //else if (IsTdUnmanagedValueType(dwClassAttrs)) strcat(szPrimaryInfo, "not_in_gc_heap value "); - else if (bIsValueType) strcat_s(szPrimaryInfo, BUFFER_SIZE, "value "); - else if (bIsEnum) strcat_s(szPrimaryInfo, BUFFER_SIZE, "enum "); - - if (IsTdPublic(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "public "); - if (IsTdNotPublic(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "private "); - if (IsTdNestedPublic(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "nested public "); - if (IsTdNestedPrivate(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "nested private "); - if (IsTdNestedFamily(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "nested family "); - if (IsTdNestedAssembly(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "nested assembly "); - if (IsTdNestedFamANDAssem(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "nested famandassem "); - if (IsTdNestedFamORAssem(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "nested famorassem "); - if (IsTdAbstract(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "abstract "); - if (IsTdAutoLayout(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "auto "); - if (IsTdSequentialLayout(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "sequential "); - if (IsTdExplicitLayout(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "explicit "); - if (IsTdAnsiClass(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "ansi "); - if (IsTdUnicodeClass(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "unicode "); - if (IsTdAutoClass(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "autochar "); - if (IsTdImport(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "import "); - if (IsTdWindowsRuntime(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "windowsruntime "); - if (IsTdSerializable(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "serializable "); -// if (IsTdEnum(dwClassAttrs)) strcat(szPrimaryInfo, "enum "); - if (IsTdSealed(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "sealed "); - if (IsTdBeforeFieldInit(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "beforefieldinit "); - if (IsTdSpecialName(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "specialname "); - if (IsTdRTSpecialName(dwClassAttrs)) strcat_s(szPrimaryInfo, BUFFER_SIZE, "rtspecialname "); - - if(g_fDumpTokens) sprintf_s(&szPrimaryInfo[strlen(szPrimaryInfo)], BUFFER_SIZE - strlen(szPrimaryInfo)," /*%08X*/",cl); - hPrimaryInfo = AddInfoItemToClass(hClassRoot, pClassItem, szPrimaryInfo, NULL); - hLast = hPrimaryInfo; - // Now add nodes for extends, implements - if (!IsNilToken(crExtends)) - { - if (!bExtendsSysObject) - { - AddClassToTreeView_PrettyPrintClass(crExtends, " extends %s ", szPrimaryInfo, BUFFER_SIZE); - hLast = AddInfoItemToClass(hLast, pClassItem, szPrimaryInfo, crExtends); - } - } - - if (NumInterfaces > 0) - { - for (i=0; g_pImport->EnumNext(&hEnumII, &ii); i++) - { - mdTypeRef crInterface; - - if (FAILED(g_pImport->GetTypeOfInterfaceImpl(ii, &crInterface))) - { - printf("Unable to get information about interface implementation\n"); - return FALSE; - } - { - AddClassToTreeView_PrettyPrintClass(crInterface, " implements %s ", szPrimaryInfo, BUFFER_SIZE); - hLast = AddInfoItemToClass(hLast, pClassItem, szPrimaryInfo, crInterface); - } - } - - // The assertion will fire if the enumerator is bad - _ASSERTE(NumInterfaces == i); - - // close the enumerator - g_pImport->EnumClose(&hEnumII); - } - delete[] szPrimaryInfo; - - BOOL fDumpRTF = g_fDumpRTF; - g_fDumpRTF = FALSE; - // add info entries for custom attributes - for(i = 0; i < ulCAs; i++) - { - char* pc; - memset(GlobalBuffer,0,GlobalBufferLen); - InGlobalBuffer = 0; - DumpCustomAttribute(rCA[i],(void *)g_hwndTreeView,false); - if(pc = strchr(GlobalBuffer,'\r')) strcpy_s(pc,6," ..."); // until the first only - //hLast = AddInfoItemToClass(hLast, pClassItem, GlobalBuffer, "#####"); // this "name" is guaranteed to be unique! - hLast = AddInfoItemToClass(hLast, pClassItem, GlobalBuffer, rCA[i]); - } - delete[] rCA; - - // Re-fetch the current class item ptr, dynamic array may have shifted - pClassItem = ClassItemByToken(cl); - - // Add nested classes - AddClassesWithEncloser(cl,pClassItem->hItem); - pClassItem = ClassItemByToken(cl); - - MemberInfo* members = NULL; - if (NumMembers != 0) - { - members = new (nothrow) MemberInfo[NumMembers]; - if (members == NULL) - { - if (pMemberList != NULL) delete[] pMemberList; - return FALSE; - } - } - // do in four passes, fields first - MemberInfo* curMem = members; - for (i = 0; i < NumMembers; i++) - { - if (TypeFromToken(pMemberList[i]) == mdtFieldDef) - { - curMem->token = pMemberList[i]; - if (FAILED(g_pImport->GetFieldDefProps(pMemberList[i], &curMem->dwAttrs))) - { - printf("Invalid FieldDef %08X record\n", pMemberList[i]); - delete []members; - delete []pMemberList; - return FALSE; - } - if (FAILED(g_pImport->GetNameOfFieldDef(pMemberList[i], &curMem->pszMemberName))) - { - printf("Invalid FieldDef %08X record\n", pMemberList[i]); - delete []members; - delete []pMemberList; - return FALSE; - } - MAKE_NAME_IF_NONE(curMem->pszMemberName,pMemberList[i]); - if (FAILED(g_pImport->GetSigOfFieldDef(pMemberList[i], &curMem->cComSig, &curMem->pComSig))) - { - printf("Invalid FieldDef %08X record\n", pMemberList[i]); - delete []members; - delete []pMemberList; - return FALSE; - } - curMem++; - } - else break; - } - - MemberInfo* endMem = curMem; - if (g_fSortByName) qsort(members, endMem - members, sizeof MemberInfo, memberCmp); - - for (curMem = members; curMem < endMem;curMem++) - { - if (g_fLimitedVisibility) - { - if(g_fHidePub && IsFdPublic(curMem->dwAttrs)) continue; - if(g_fHidePriv && IsFdPrivate(curMem->dwAttrs)) continue; - if(g_fHideFam && IsFdFamily(curMem->dwAttrs)) continue; - if(g_fHideAsm && IsFdAssembly(curMem->dwAttrs)) continue; - if(g_fHideFOA && IsFdFamORAssem(curMem->dwAttrs)) continue; - if(g_fHideFAA && IsFdFamANDAssem(curMem->dwAttrs)) continue; - if(g_fHidePrivScope && IsFdPrivateScope(curMem->dwAttrs)) continue; - } - AddFieldToGUI(cl, pClassItem, pszNamespace, pszClassName, curMem->pszMemberName, NULL, curMem->token, curMem->dwAttrs); - } - - // methods second - curMem = members; - for (; i < NumMembers; i++) - { - if (TypeFromToken(pMemberList[i]) == mdtMethodDef) - { - curMem->token = pMemberList[i]; - if (FAILED(g_pImport->GetMethodDefProps(pMemberList[i], &curMem->dwAttrs))) - { - printf("Invalid MethodDef %08X record\n", pMemberList[i]); - delete []members; - delete []pMemberList; - return FALSE; - } - - if (FAILED(g_pImport->GetNameOfMethodDef(pMemberList[i], &curMem->pszMemberName))) - { - printf("Invalid MethodDef %08X record\n", pMemberList[i]); - delete []members; - delete []pMemberList; - return FALSE; - } - MAKE_NAME_IF_NONE(curMem->pszMemberName,pMemberList[i]); - if (FAILED(g_pImport->GetSigOfMethodDef(pMemberList[i], &curMem->cComSig, &curMem->pComSig))) - { - printf("Invalid MethodDef %08X record\n", pMemberList[i]); - delete []members; - delete []pMemberList; - return FALSE; - } - curMem++; - } - else break; - } - - endMem = curMem; - if (g_fSortByName) qsort(members, endMem - members, sizeof MemberInfo, memberCmp); - - for (curMem = members; curMem < endMem;curMem++) - { - if (g_fLimitedVisibility) - { - if(g_fHidePub && IsMdPublic(curMem->dwAttrs)) continue; - if(g_fHidePriv && IsMdPrivate(curMem->dwAttrs)) continue; - if(g_fHideFam && IsMdFamily(curMem->dwAttrs)) continue; - if(g_fHideAsm && IsMdAssem(curMem->dwAttrs)) continue; - if(g_fHideAsm && g_fHideFam && IsMdFamORAssem(curMem->dwAttrs)) continue; - if(g_fHideFAA && IsMdFamANDAssem(curMem->dwAttrs)) continue; - if(g_fHidePrivScope && IsMdPrivateScope(curMem->dwAttrs)) continue; - } - AddMethodToGUI(cl, pClassItem, pszNamespace, pszClassName, curMem->pszMemberName, curMem->pComSig, curMem->cComSig, curMem->token, curMem->dwAttrs); - } - // events third - curMem = members; - for (; i < NumMembers; i++) - { - if (TypeFromToken(pMemberList[i]) == mdtEvent) - { - curMem->token = pMemberList[i]; - if (FAILED(g_pImport->GetEventProps( - curMem->token, - &curMem->pszMemberName, - &curMem->dwAttrs, - (mdToken *)&curMem->pComSig))) - { - curMem->pszMemberName = "Invalid Event record"; - curMem->dwAttrs = 0; - curMem->pComSig = (PCCOR_SIGNATURE)mdTypeDefNil; - } - MAKE_NAME_IF_NONE(curMem->pszMemberName,pMemberList[i]); - curMem++; - } - else break; - } - - endMem = curMem; - if (g_fSortByName) qsort(members, endMem - members, sizeof MemberInfo, memberCmp); - curMem = members; - while (curMem < endMem) - { - if (g_fLimitedVisibility) - { - HENUMInternal hAssoc; - unsigned nAssoc; - if (FAILED(g_pImport->EnumAssociateInit(curMem->token,&hAssoc))) - { - continue; - } - if (nAssoc = hAssoc.m_ulCount) - { - NewArrayHolder rAssoc = new (nothrow) ASSOCIATE_RECORD[nAssoc]; - if (FAILED(g_pImport->GetAllAssociates(&hAssoc,rAssoc,nAssoc))) - { - continue; - } - - for (unsigned i=0; i < nAssoc;i++) - { - if (TypeFromToken(rAssoc[i].m_memberdef) == mdtMethodDef) - { - DWORD dwAttrs; - if (FAILED(g_pImport->GetMethodDefProps(rAssoc[i].m_memberdef, &dwAttrs))) - { - continue; - } - if(g_fHidePub && IsMdPublic(dwAttrs)) continue; - if(g_fHidePriv && IsMdPrivate(dwAttrs)) continue; - if(g_fHideFam && IsMdFamily(dwAttrs)) continue; - if(g_fHideAsm && IsMdAssem(dwAttrs)) continue; - if(g_fHideFOA && IsMdFamORAssem(dwAttrs)) continue; - if(g_fHideFAA && IsMdFamANDAssem(dwAttrs)) continue; - if(g_fHidePrivScope && IsMdPrivateScope(dwAttrs)) continue; - } - AddEventToGUI(cl, pClassItem, pszNamespace, pszClassName, dwClassAttrs, curMem->token); - break; - } - } - g_pImport->EnumClose(&hAssoc); - } - else AddEventToGUI(cl, pClassItem, pszNamespace, pszClassName, dwClassAttrs, curMem->token); - curMem++; - } - // properties fourth - curMem = members; - for (; i < NumMembers; i++) - { - if (TypeFromToken(pMemberList[i]) == mdtProperty) - { - curMem->token = pMemberList[i]; - if (FAILED(g_pImport->GetPropertyProps( - curMem->token, - &curMem->pszMemberName, - &curMem->dwAttrs, - &curMem->pComSig, - &curMem->cComSig))) - { - curMem->pszMemberName = "Invalid Property record"; - curMem->dwAttrs = 0; - curMem->pComSig = NULL; - curMem->cComSig = 0; - } - MAKE_NAME_IF_NONE(curMem->pszMemberName,pMemberList[i]); - curMem++; - } - } - - endMem = curMem; - if(g_fSortByName) qsort(members, endMem - members, sizeof MemberInfo, memberCmp); - curMem = members; - while(curMem < endMem) - { - if (g_fLimitedVisibility) - { - HENUMInternal hAssoc; - unsigned nAssoc; - if (FAILED(g_pImport->EnumAssociateInit(curMem->token,&hAssoc))) - { - continue; - } - if (nAssoc = hAssoc.m_ulCount) - { - NewArrayHolder rAssoc = new (nothrow) ASSOCIATE_RECORD[nAssoc]; - if (FAILED(g_pImport->GetAllAssociates(&hAssoc,rAssoc,nAssoc))) - { - continue; - } - - for (unsigned i=0; i < nAssoc;i++) - { - if (TypeFromToken(rAssoc[i].m_memberdef) == mdtMethodDef) - { - DWORD dwAttrs; - if (FAILED(g_pImport->GetMethodDefProps(rAssoc[i].m_memberdef, &dwAttrs))) - { - continue; - } - if(g_fHidePub && IsMdPublic(dwAttrs)) continue; - if(g_fHidePriv && IsMdPrivate(dwAttrs)) continue; - if(g_fHideFam && IsMdFamily(dwAttrs)) continue; - if(g_fHideAsm && IsMdAssem(dwAttrs)) continue; - if(g_fHideFOA && IsMdFamORAssem(dwAttrs)) continue; - if(g_fHideFAA && IsMdFamANDAssem(dwAttrs)) continue; - if(g_fHidePrivScope && IsMdPrivateScope(dwAttrs)) continue; - } - AddPropToGUI(cl, pClassItem, pszNamespace, pszClassName, dwClassAttrs, curMem->token); - break; - } - } - g_pImport->EnumClose(&hAssoc); - } - else AddPropToGUI(cl, pClassItem, pszNamespace, pszClassName, dwClassAttrs, curMem->token); - curMem++; - } - g_fDumpRTF = fDumpRTF; - if(pMemberList) delete[] pMemberList; - if(members) delete[] members; -#ifdef _PREFAST_ -#pragma warning(pop) -#endif - return hClassRoot; -} -#ifdef _PREFAST_ -#pragma warning(pop) -#endif - -void CreateMenus() -{ - HMENU hMenuPopup; - - g_hMenu = CreateMenu(); - - hMenuPopup = CreateMenu(); - WszAppendMenu(hMenuPopup, MF_STRING, IDM_OPEN, RstrW(IDS_OPEN)); - WszAppendMenu(hMenuPopup, MF_STRING|MF_GRAYED, IDM_DUMP, RstrW(IDS_DUMP)); - WszAppendMenu(hMenuPopup, MF_STRING|MF_GRAYED, IDM_DUMP_TREE, RstrW(IDS_DUMPTREE)); - WszAppendMenu(hMenuPopup, MF_STRING, IDM_EXIT, RstrW(IDS_EXIT)); - WszAppendMenu(g_hMenu, MF_POPUP, (UINT)(UINT_PTR)hMenuPopup, RstrW(IDS_FILE)); - g_hFileMenu = hMenuPopup; - - hMenuPopup = CreateMenu(); - g_hFontMenu = CreateMenu(); - WszAppendMenu(hMenuPopup,MF_POPUP,(UINT)(UINT_PTR)g_hFontMenu,RstrW(IDS_FONTS)); - WszAppendMenu(g_hFontMenu,MF_STRING,IDM_FONT_TREE,RstrW(IDS_FONT_TREE)); - WszAppendMenu(g_hFontMenu,MF_STRING,IDM_FONT_DASM,RstrW(IDS_FONT_DASM)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fSortByName ? MF_CHECKED : MF_UNCHECKED), IDM_SORT_BY_NAME, RstrW(IDS_SORT_BY_NAME)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fTreeViewFCN ? MF_CHECKED : MF_UNCHECKED), IDM_TREEVIEWFCN, RstrW(IDS_TREEVIEWFCN)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fCAVerbal ? MF_CHECKED : MF_UNCHECKED), IDM_CAVERBAL, RstrW(IDS_CAVERBAL)); - //WszAppendMenu(hMenuPopup, MF_STRING|(g_fDumpRTF ? MF_CHECKED : MF_UNCHECKED), IDM_DUMPRTF, RstrW(IDS_DUMPRTF)); - // MF_SEPARATOR ==> last 2 params ignored - WszAppendMenu(hMenuPopup, MF_SEPARATOR,0,NULL); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHidePub ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_PUB, RstrW(IDS_SHOW_PUB)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHidePriv ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_PRIV, RstrW(IDS_SHOW_PRIV)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHideFam ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_FAM, RstrW(IDS_SHOW_FAM)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHideAsm ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_ASM, RstrW(IDS_SHOW_ASM)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHideFAA ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_FAA, RstrW(IDS_SHOW_FAA)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHideFOA ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_FOA, RstrW(IDS_SHOW_FOA)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fHidePrivScope ? MF_CHECKED : MF_UNCHECKED), IDM_SHOW_PSCOPE, RstrW(IDS_SHOW_PSCOPE)); - WszAppendMenu(hMenuPopup, MF_SEPARATOR,0,NULL); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fFullMemberInfo ? MF_CHECKED : MF_UNCHECKED), IDM_FULL_INFO, RstrW(IDS_FULL_INFO)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fShowBytes ? MF_CHECKED : MF_UNCHECKED), IDM_BYTES, RstrW(IDS_BYTES)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fDumpTokens ? MF_CHECKED : MF_UNCHECKED), IDM_TOKENS, RstrW(IDS_TOKENS)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fShowSource ? MF_CHECKED : MF_UNCHECKED), IDM_SOURCELINES, RstrW(IDS_SOURCELINES)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fQuoteAllNames ? MF_CHECKED : MF_UNCHECKED), IDM_QUOTEALLNAMES, RstrW(IDS_QUOTEALLNAMES)); - WszAppendMenu(hMenuPopup, MF_STRING|(g_fTryInCode ? MF_CHECKED : MF_UNCHECKED), IDM_EXPANDTRY, RstrW(IDS_EXPANDTRY)); - if(g_fTDC) - { - - WszAppendMenu(hMenuPopup, MF_STRING, IDM_SHOW_HEADER, RstrW(IDS_SHOW_HEADER)); - WszAppendMenu(hMenuPopup, MF_STRING, IDM_SHOW_STAT, RstrW(IDS_SHOW_STAT)); - g_hMetaInfoMenu = CreateMenu(); - //MENUINFO mi; - //GetMenuInfo(g_hMetaInfoMenu,&mi); - //mi.dwStyle |= MNS_MODELESS; - //SetMenuInfo(g_hMetaInfoMenu,&mi); - WszAppendMenu(hMenuPopup, MF_POPUP, (UINT)(UINT_PTR)g_hMetaInfoMenu, RstrW(IDS_METAINFO)); - - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpMoreHex ? MF_CHECKED : MF_UNCHECKED),IDM_MI_HEX,RstrW(IDS_MI_HEX)); - WszAppendMenu(g_hMetaInfoMenu,MF_SEPARATOR,0,NULL); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpCSV ? MF_CHECKED : MF_UNCHECKED),IDM_MI_CSV,RstrW(IDS_MI_CSV)); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpHeader ? MF_CHECKED : MF_UNCHECKED),IDM_MI_HEADER,RstrW(IDS_MI_HEADER)); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpSchema ? MF_CHECKED : MF_UNCHECKED),IDM_MI_SCHEMA,RstrW(IDS_MI_SCHEMA)); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpRaw ? MF_CHECKED : MF_UNCHECKED),IDM_MI_RAW,RstrW(IDS_MI_RAW)); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpRawHeaps ? MF_CHECKED : MF_UNCHECKED),IDM_MI_HEAPS,RstrW(IDS_MI_HEAPS)); - WszAppendMenu(g_hMetaInfoMenu,MF_SEPARATOR,0,NULL); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpUnsat ? MF_CHECKED : MF_UNCHECKED),IDM_MI_UNREX,RstrW(IDS_MI_UNREX)); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING|(g_ulMetaInfoFilter & MDInfo::dumpValidate ? MF_CHECKED : MF_UNCHECKED),IDM_MI_VALIDATE,RstrW(IDS_MI_VALIDATE)); - WszAppendMenu(g_hMetaInfoMenu,MF_STRING,IDM_SHOW_METAINFO,RstrW(IDS_SHOW_METAINFO)); - } - WszAppendMenu(g_hMenu, MF_POPUP|MF_GRAYED, (UINT)(UINT_PTR)hMenuPopup, RstrW(IDS_VIEW)); - g_hViewMenu = hMenuPopup; - hMenuPopup = CreateMenu(); - WszAppendMenu(hMenuPopup, MF_STRING, IDM_HELP,RstrW(IDS_HELP)); - WszAppendMenu(hMenuPopup, MF_STRING, IDM_ABOUT,RstrW(IDS_ABOUT)); - WszAppendMenu(g_hMenu, MF_POPUP, (UINT)(UINT_PTR)hMenuPopup, RstrW(IDS_HELP)); -} - -BOOL LoadImages() -{ - int i; - - g_hImageList = ImageList_Create(BITMAP_WIDTH, BITMAP_HEIGHT, ILC_COLOR8, LAST_IMAGE_INDEX, 1); - if (g_hImageList == NULL) - return FALSE; - - _ASSERTE(g_hResources != NULL); - for (i = 0; i < LAST_IMAGE_INDEX; i++) - { - g_hBitmaps[i] = (HBITMAP) WszLoadImage( - g_hResources, - MAKEINTRESOURCE(i + IDB_CLASS), - IMAGE_BITMAP, - 15, - 15, - LR_LOADTRANSPARENT //LR_DEFAULTCOLOR - ); - if (g_hBitmaps[i] == NULL) - return FALSE; - int index = ImageList_Add(g_hImageList, g_hBitmaps[i], NULL); - if (index != i) - return FALSE; - } - - return TRUE; -} -// Local functions for font persistence: -char* FontSaveFileName() -{ - static char szFileName[MAX_PATH]; - static BOOL bInit = TRUE; - if(bInit) - { - (void)GetWindowsDirectoryA(szFileName,MAX_PATH); - if(szFileName[strlen(szFileName)-1]!='\\') strcat_s(szFileName,MAX_PATH,"\\"); - strcat_s(szFileName,MAX_PATH,"ildasmfnt.bin"); - bInit = FALSE; - } - return szFileName; -} -BOOL LoadGUIFonts(GUI_Info* pguiInfo) -{ - FILE* pF = NULL; - BOOL ret = FALSE; - int dummy; - if(fopen_s(&pF,FontSaveFileName(),"rb")==0) - { - ret = (fread(pguiInfo->plfDasm,sizeof(LOGFONTW),1,pF) && fread(pguiInfo->plfTree,sizeof(LOGFONTW),1,pF)); - if(fread(&dummy,sizeof(int),1,pF)) pguiInfo->x = dummy; - if(fread(&dummy,sizeof(int),1,pF)) pguiInfo->y = dummy; - if(fread(&dummy,sizeof(int),1,pF)) pguiInfo->w = dummy; - if(fread(&dummy,sizeof(int),1,pF)) pguiInfo->h = dummy; - if(fread(&dummy,sizeof(int),1,pF)) g_fTreeViewFCN = (dummy != 0); - if(fread(&dummy,sizeof(int),1,pF)) g_fSortByName = (dummy != 0); - if(fread(&dummy,sizeof(int),1,pF)) g_fFullMemberInfo = (dummy != 0); - - fclose(pF); - } - return ret; -} -BOOL SaveGUIFonts(GUI_Info* pguiInfo) -{ - FILE* pF=NULL; - BOOL ret = FALSE; - int dummyFCN = (g_fTreeViewFCN ? 1:0); - int dummySBN = (g_fSortByName ? 1:0); - int dummyFMI = (g_fFullMemberInfo ? 1:0); - if(fopen_s(&pF,FontSaveFileName(),"wb")==0) - { - ret = (fwrite(pguiInfo->plfDasm,sizeof(LOGFONTW),1,pF) - && fwrite(pguiInfo->plfTree,sizeof(LOGFONTW),1,pF) - && fwrite(&(pguiInfo->x),sizeof(int),1,pF) - && fwrite(&(pguiInfo->y),sizeof(int),1,pF) - && fwrite(&(pguiInfo->w),sizeof(int),1,pF) - && fwrite(&(pguiInfo->h),sizeof(int),1,pF) - && fwrite(&dummyFCN,sizeof(int),1,pF) - && fwrite(&dummySBN,sizeof(int),1,pF) - && fwrite(&dummyFMI,sizeof(int),1,pF) - ); - fclose(pF); - } - return ret; -} -// Init various GUI variables, get handles -// if InitGUI returns FALSE, ildasm exits -#define DEFAULT_FONTS -BOOL InitGUI() -{ - INITCOMMONCONTROLSEX InitInfo; -#ifdef DEFAULT_FONTS - LOGFONTW strDefaultLogFontDasm = {-14,0,0,0,FW_REGULAR,0,0,0,ANSI_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,FIXED_PITCH | FF_MODERN,L"Fixedsys"}; - LOGFONTW strDefaultLogFontTree = {-11,0,0,0,FW_REGULAR,0,0,0,ANSI_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,VARIABLE_PITCH | FF_SWISS,L"Tahoma"}; - LOGFONTA strDefaultLogFontDasmA = {-14,0,0,0,FW_REGULAR,0,0,0,ANSI_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,FIXED_PITCH | FF_MODERN,"Fixedsys"}; - LOGFONTA strDefaultLogFontTreeA = {-11,0,0,0,FW_REGULAR,0,0,0,ANSI_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,VARIABLE_PITCH | FF_SWISS,"Tahoma"}; -#endif - g_DisasmBox = new DynamicArray; - g_ClassItemList = new DynamicArray; - g_NamespaceList = new DynamicArray; - WszLoadLibrary(L"riched20.dll"); - - InitInfo.dwSize = sizeof(InitInfo); - InitInfo.dwICC = ICC_LISTVIEW_CLASSES; - - if (InitCommonControlsEx(&InitInfo) == FALSE) - return FALSE; - - g_hInstance = WszGetModuleHandle(NULL); - g_hResources = LoadLocalizedResourceDLLForSDK(L"ildasmrc.dll"); - - //--------- get logical fonts -#ifdef DEFAULT_FONTS - if(!LoadGUIFonts(&guiInfo)) - { - memcpy(&g_strLogFontDasm,&strDefaultLogFontDasm,sizeof(LOGFONTW)); - memcpy(&g_strLogFontTree,&strDefaultLogFontTree,sizeof(LOGFONTW)); - } - if(g_fDumpRTF) { g_strLogFontDasm.lfWeight = FW_REGULAR; g_strLogFontDasm.lfItalic = FALSE; } - // -------- create font for disassembly window - g_hFixedFont = CreateFontIndirectW(&g_strLogFontDasm); - // -------- create font for tree view - g_hSmallFont = CreateFontIndirectW(&g_strLogFontTree); -#else - if(LoadGUIFonts(&guiInfo)) - { - if(g_fDumpRTF) { g_strLogFontDasm.lfWeight = FW_REGULAR; g_strLogFontDasm.lfItalic = FALSE; } - // -------- create font for disassembly window - g_hFixedFont = CreateFontIndirect(&g_strLogFontDasm); - // -------- create font for tree view - g_hSmallFont = CreateFontIndirect(&g_strLogFontTree); - } - else - { - g_hFixedFont = (HFONT)GetStockObject(SYSTEM_FIXED_FONT); - g_hSmallFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); - } -#endif - if (g_hFixedFont == NULL) return FALSE; - if (g_hSmallFont == NULL) return FALSE; - - memset(&g_strChFontDasm,0,sizeof(CHOOSEFONT)); - g_strChFontDasm.lStructSize = sizeof(CHOOSEFONT); - g_strChFontDasm.lpLogFont = &g_strLogFontDasm; - g_strChFontDasm.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS |CF_SHOWHELP; - if(!g_fDumpRTF) g_strChFontDasm.Flags |= CF_EFFECTS; // no color change option for RTF output! - g_strChFontDasm.rgbColors = GetSysColor(COLOR_INFOTEXT); - - memset(&g_strChFontTree,0,sizeof(CHOOSEFONTW)); - g_strChFontTree.lStructSize = sizeof(CHOOSEFONTW); - g_strChFontTree.lpLogFont = &g_strLogFontTree; - g_strChFontTree.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS |CF_SHOWHELP /*| CF_EFFECTS*/; - g_strChFontTree.rgbColors = GetSysColor(COLOR_WINDOWTEXT); - - g_hWhiteBrush = (HBRUSH) GetStockObject(WHITE_BRUSH); - if (g_hWhiteBrush == NULL) - return FALSE; - - if (LoadImages() == FALSE) - return FALSE; - - if (RegisterWindowClasses() == FALSE) - return FALSE; -#undef RegisterWindowMessageW - g_uFindReplaceMsg = RegisterWindowMessageW(FINDMSGSTRING); - - CreateMenus(); - - return TRUE; -} - -void DestroyGUI() -{ - SDELETE(g_DisasmBox); - SDELETE(g_ClassItemList); - SDELETE(g_NamespaceList); -} -// -// Set the font of a particular window to the global fixed size font -// -void SetWindowFontFixed(HWND hwnd) -{ - WszSendMessage( - hwnd, - WM_SETFONT, - (LPARAM) g_hFixedFont, - FALSE - ); -} - - -// -// Set the char dimensions variables -// -void SetCharDimensions(HWND hwnd) -{ - if (InterlockedIncrement(&g_SetCharDimensions) == 1) - { - HDC hdc; - TEXTMETRIC tm; - - hdc = GetDC(hwnd); - - GetTextMetrics(hdc, &tm); - - g_MaxCharWidth = tm.tmAveCharWidth; - g_Height = tm.tmHeight; - - ReleaseDC(hwnd, hdc); - } - else - { - // Already set - InterlockedDecrement(&g_SetCharDimensions); - } -} - - -// -// Given a member handle and a class item, find the TreeItem for that member -// -TreeItem_t *FindMemberInClass(ClassItem_t *pClassItem, HTREEITEM hMember) -{ - DWORD i; - - for (i = 0; i < pClassItem->SubItems; i++) - { - if (pClassItem->pMembers[i].hItem == hMember) - return &pClassItem->pMembers[i]; - } - - return NULL; -} - - -// -// Register the window classes -// -BOOL RegisterWindowClasses() -{ - _ASSERTE(g_hResources != NULL); - WNDCLASSW wndClass; - - wndClass.style = CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW; - wndClass.lpfnWndProc = DisassemblyWndProc; - wndClass.cbClsExtra = 0; - wndClass.cbWndExtra = 0; - wndClass.hInstance = g_hInstance; - wndClass.hIcon = WszLoadIcon(g_hResources,MAKEINTRESOURCE(IDI_ICON2)); - wndClass.hCursor = NULL; - wndClass.hbrBackground = g_hWhiteBrush; - wndClass.lpszMenuName = NULL; - wndClass.lpszClassName = DISASSEMBLY_CLASS_NAMEW; - if (WszRegisterClass((WNDCLASSW*)(&wndClass)) == 0) - return FALSE; - - wndClass.style = CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW; - wndClass.lpfnWndProc = MainWndProc; - wndClass.cbClsExtra = 0; - wndClass.cbWndExtra = 0; - wndClass.hInstance = g_hInstance; - wndClass.hIcon = WszLoadIcon(g_hResources,MAKEINTRESOURCE(IDI_ICON2)); - wndClass.hCursor = NULL; - wndClass.hbrBackground = g_hWhiteBrush; - wndClass.lpszMenuName = NULL; - - wndClass.lpszClassName = MAIN_WINDOW_CLASSW; - if (WszRegisterClass((WNDCLASSW*)(&wndClass)) == 0) - return FALSE; - return TRUE; -} - -// -// Dump one item to global buffer -// -void GUIDumpItemToDisassemblyEditBox(void*pvDLB, mdToken cl, mdToken mbMember) -{ - const char * pszClassName; - const char * pszNamespace; - mdTypeRef crExtends; - DWORD dwClassAttrs; - - if ((cl != mdTokenNil)&&TypeFromToken(mbMember)) - { - if (FAILED(g_pImport->GetNameOfTypeDef(cl, &pszClassName, &pszNamespace))) - { - pszClassName = pszNamespace = "Invalid TypeDef record"; - } - MAKE_NAME_IF_NONE(pszClassName,cl); - } - else - { - pszClassName = (TypeFromToken(mbMember) == mdtMethodDef) ? "Global Functions" : "Global Fields"; - } - memset(GlobalBuffer,0,GlobalBufferLen); - InGlobalBuffer = 0; - - if (TypeFromToken(mbMember) && cl && (cl != mdTypeDefNil)) - { - if (FAILED(g_pImport->GetTypeDefProps(cl, &dwClassAttrs, &crExtends))) - { - dwClassAttrs = 0; - crExtends = mdTypeDefNil; - } - } - g_Mode |= MODE_GUI; - //_ASSERTE(0); - mdToken tkVarOwner = g_tkVarOwner; - g_tkVarOwner = cl; - if(g_fDumpRTF) DumpRTFPrefix(pvDLB,FALSE); - switch (TypeFromToken(mbMember)) - { - case 0: - switch(cl) - { - case 0: - DumpManifest(pvDLB); - DumpTypedefs(pvDLB); - break; - case IDM_SHOW_HEADER: - DumpHeader(g_CORHeader,pvDLB); - DumpHeaderDetails(g_CORHeader,pvDLB); - break; - case IDM_SHOW_METAINFO: - DumpMetaInfo(g_wszFullInputFile,NULL,pvDLB); - break; - case IDM_SHOW_STAT: - DumpStatistics(g_CORHeader,pvDLB); - break; - } - break; - - case mdtTypeDef: - DumpClass(mbMember,VAL32(g_CORHeader->EntryPointToken), pvDLB, 1); //1 = title+size+pack+custom attributes - break; - case mdtFieldDef: - { - ULONG ul1,ul2; - GetClassLayout(cl,&ul1,&ul2); - DumpField(mbMember,pszClassName, pvDLB, TRUE); - } - break; - case mdtMethodDef: - DumpMethod(mbMember,pszClassName,VAL32(g_CORHeader->EntryPointToken), pvDLB, TRUE); - break; - case mdtEvent: - DumpEvent(mbMember,pszClassName, dwClassAttrs, pvDLB, TRUE); - break; - case mdtProperty: - DumpProp(mbMember,pszClassName, dwClassAttrs, pvDLB, TRUE); - break; - } - if(g_fDumpRTF) DumpRTFPostfix(pvDLB); - g_tkVarOwner = tkVarOwner; - if(g_uCodePage==0xFFFFFFFF) - { - SendMessageW((HWND)pvDLB,WM_SETTEXT,0, (LPARAM)GlobalBuffer); - } - else - { - UINT32 L = (UINT32)strlen(GlobalBuffer); - WCHAR* wz = new (nothrow) WCHAR[L+4]; - if(wz) - { - memset(wz,0,sizeof(WCHAR)*(L+2)); - int x = WszMultiByteToWideChar(CP_UTF8,0,GlobalBuffer,-1,wz,L+2); - if(g_fDumpRTF) - { - x = (int)SendMessageA((HWND)pvDLB,WM_SETTEXT,0, (LPARAM)UnicodeToAnsi(wz)); - } - else - { - SETTEXTEX ste; - ste.flags = ST_DEFAULT; - ste.codepage = 1200; - x = (int)WszSendMessage((HWND)pvDLB,EM_SETTEXTEX,(WPARAM)&ste, (LPARAM)wz); - } - delete[] wz; - } - } -} - -// -// Disassemble the given method in a new window -// - -HWND GUIDisassemble(mdTypeDef cl, mdToken mbMember, __in __nullterminated char *pszNiceMemberName) -{ - HWND hwndDisassemblyMain; - HWND hwndDisassemblyListBox; - const char * pszClassName; - const char * pszNamespace; - char* szTemp=NULL; - RECT rcl; - static char szsz[4096]; - bool fUpdate = false; - bool fMetaInfo = (TypeFromToken(mbMember)==0)&&(cl==IDM_SHOW_METAINFO); - BOOL fDumpRTF = g_fDumpRTF; - if(fMetaInfo) g_fDumpRTF = FALSE; - - //before we even try, check if this member's disasm box is already opened - DisasmBox_t* pDisasmBox = FindDisasmBox(cl, mbMember); - if(pDisasmBox) - { - if(fMetaInfo || (0 == strcmp(pszNiceMemberName,"UpdateThisDisassemblyBox"))) - { - fUpdate = true; - } - else - { - PostMessageA(pDisasmBox->hwndContainer,WM_ACTIVATE,WA_CLICKACTIVE,0); - PostMessageA(pDisasmBox->hwndContainer,WM_SETFOCUS,0,0); - return pDisasmBox->hwndContainer; - } - } - if(fUpdate) - { - SendMessageW(pDisasmBox->hwndContainer,WM_GETTEXT, 0, (LPARAM)szsz); - strcpy_s(szsz,4096,UnicodeToUtf((WCHAR*)szsz)); - - szTemp = szsz; - PostMessageA(pDisasmBox->hwndContainer,WM_CLOSE,1,0); - } - else - { - // Prepend class name to nicely formatted member name - if (mbMember != 0) - { - if (cl != mdTokenNil) - { - if (FAILED(g_pImport->GetNameOfTypeDef( - cl, - &pszClassName, - &pszNamespace))) - { - pszClassName = pszNamespace = "Invalid TypeDef record"; - } - MAKE_NAME_IF_NONE(pszClassName,cl); - if(*pszNamespace != 0) - sprintf_s(szsz,4096,"%s.",pszNamespace); - else - szsz[0] = 0; - strcat_s(szsz,4096,pszClassName); - pszClassName = (const char*)&szsz[0]; - } - else - { - pszClassName = (TypeFromToken(mbMember) == mdtMethodDef) ? "Global Functions" : "Global Fields"; - } - szTemp = new (nothrow) char[strlen(pszClassName)+strlen(pszNiceMemberName)+4]; - if(szTemp) sprintf_s(szTemp, strlen(pszClassName)+strlen(pszNiceMemberName)+4,"%s::%s", pszClassName, pszNiceMemberName); - _ASSERTE(TypeFromToken(mbMember) & (mdtMethodDef|mdtEvent|mdtProperty|mdtTypeDef|mdtFieldDef)); - } - if(!szTemp) szTemp = pszNiceMemberName; - } - _ASSERTE(szTemp); - - HMENU hMenu = CreateMenu(); - WszAppendMenu(hMenu, MF_STRING, IDM_FIND, RstrW(IDS_FIND)); - WszAppendMenu(hMenu, MF_STRING, IDM_FINDNEXT, RstrW(IDS_FINDNEXT)); - - hwndDisassemblyMain = WszCreateWindowEx( - WS_EX_CLIENTEDGE, - DISASSEMBLY_CLASS_NAMEW, - UtfToUnicode(szTemp), - WS_OVERLAPPEDWINDOW | WS_SIZEBOX, - CW_USEDEFAULT, - CW_USEDEFAULT, - 640, - 400, - NULL, - hMenu, // menu - g_hInstance, // hinst - NULL - ); - SendMessageW(hwndDisassemblyMain,WM_SETTEXT, 0, (LPARAM)(UtfToUnicode(szTemp))); - - if((!fUpdate) && szTemp &&(szTemp != pszNiceMemberName)) delete[] szTemp; - if (hwndDisassemblyMain == NULL) - { - g_fDumpRTF = fDumpRTF; - return NULL; - } - GetClientRect(hwndDisassemblyMain, &rcl); - - hwndDisassemblyListBox = WszCreateWindowEx( - 0, - (!g_fDumpRTF) ? L"RichEdit20W" : L"RichEdit20A", - RstrW(IDS_TEXTTOOLARGEFORGUI), - WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE - | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_NOHIDESEL, - rcl.left, - rcl.top, - rcl.right - rcl.left, - rcl.bottom - rcl.top, - hwndDisassemblyMain, - (HMENU) ID_LISTBOX, - g_hInstance, // hinst - NULL - ); - - DWORD e = GetLastError(); - _ASSERTE(hwndDisassemblyListBox); - if (hwndDisassemblyListBox == NULL) - { - DestroyWindow(hwndDisassemblyMain); - return NULL; - } - - if(fUpdate) - { - UpdateDisasmBox(pDisasmBox, hwndDisassemblyMain, hwndDisassemblyListBox, hMenu); - } - else - AddDisasmBox(hwndDisassemblyMain, hwndDisassemblyListBox, hMenu, cl, mbMember); - - SendMessage(hwndDisassemblyListBox,EM_SETTEXTMODE,TM_RICHTEXT|TM_MULTICODEPAGE,0); - SendMessage(hwndDisassemblyListBox,EM_SETBKGNDCOLOR,0,GetSysColor(COLOR_INFOBK)); - SetWindowFontFixed(hwndDisassemblyListBox); - SetCharDimensions(hwndDisassemblyListBox); - - GUIDumpItemToDisassemblyEditBox((void *)hwndDisassemblyListBox,cl,mbMember); - - ShowWindow(hwndDisassemblyMain, SW_SHOWNORMAL); - UpdateWindow(hwndDisassemblyMain); - - g_fDumpRTF = fDumpRTF; - return hwndDisassemblyMain; -} - -// -// Callback by the disassembler to add another entry to the disassembly window -// -void GUIAddOpcode(__inout_opt __nullterminated const char *pszString, __in_opt void *GUICookie) -{ - if(pszString) - { - ULONG L = (g_uCodePage == 0xFFFFFFFF) ? (ULONG)(wcslen((WCHAR*)pszString)*sizeof(WCHAR)) : (ULONG)strlen(pszString); - if(InGlobalBuffer+L >= GlobalBufferLen-4) - { - ULONG LL = ((L >> 12)+1)<<12; - char *pch = new (nothrow) char[GlobalBufferLen + LL]; - if(pch) - { - memcpy(pch,GlobalBuffer,InGlobalBuffer+1); - delete[] GlobalBuffer; - GlobalBuffer = pch; - GlobalBufferLen += LL; - } - } - if(g_uCodePage == 0xFFFFFFFF) - { - if(g_fDumpRTF) - { - swprintf_s((WCHAR*)&GlobalBuffer[InGlobalBuffer], (GlobalBufferLen-InGlobalBuffer)/sizeof(WCHAR), L"%s\\line\r\n",(WCHAR*)pszString); - InGlobalBuffer += L+14; - } - else - { - swprintf_s((WCHAR*)&GlobalBuffer[InGlobalBuffer], (GlobalBufferLen-InGlobalBuffer)/sizeof(WCHAR), L"%s\r\n",(WCHAR*)pszString); - InGlobalBuffer += L+4; - } - } - else - { - if(g_fDumpRTF) - { - sprintf_s(&GlobalBuffer[InGlobalBuffer],GlobalBufferLen-InGlobalBuffer,"%s\\line\r\n",pszString); - InGlobalBuffer += L+7; - } - else - { - sprintf_s(&GlobalBuffer[InGlobalBuffer],GlobalBufferLen-InGlobalBuffer,"%s\r\n",pszString); - InGlobalBuffer += L+2; - } - } - } - else - { - delete[] GlobalBuffer; - GlobalBufferLen = 0; - InGlobalBuffer = 0; - } -} - -// -// Someone has double clicked on an item -// -// It could be a method (diassemble it), or a field (ignore it), or an "extends" or "implements" -// component, in which case we select that component if available. -// -HWND DoubleClickSelectedMember(HTREEITEM hItem) -{ - HTREEITEM hClass; - ClassItem_t *pClassItem; - - static HCURSOR hWaitCursor = NULL; - - if (hWaitCursor == NULL) - hWaitCursor = WszLoadCursor(NULL,IDC_WAIT); - - // - // It could be any item, but assume it's a member item or class info and find its parent - // - hClass = TreeView_GetParent(g_hwndTreeView, hItem); - if (hClass == NULL) - return NULL; - - // - // Find the class item given the HTREEITEM - // (will return NULL if hClass is not really a class item) - // - pClassItem = FindClassItem(hClass); - if (pClassItem != NULL) - { - // Which subitem was it? - TreeItem_t *pItem = FindMemberInClass(pClassItem, hItem); - - if (pItem == NULL) - return NULL; - - if (pItem->Discriminator == TREEITEM_TYPE_MEMBER) - { - TVITEMA SelItem; - char* szText; - // Must be a method, event or property - switch (TypeFromToken(pItem->mbMember)) - { - case mdtMethodDef: - case mdtEvent: - case mdtProperty: - case mdtFieldDef: - break; - default: - return NULL; - } - - - // Get the name of this item so that we can title the disassembly window - szText = new (nothrow) char[8192]; - if(szText) - { - memset(&SelItem, 0, sizeof(SelItem)); - SelItem.mask = TVIF_TEXT; - SelItem.pszText = szText; - SelItem.hItem = pItem->hItem; - SelItem.cchTextMax = 8192; - - WCHAR* wzText = (WCHAR*)szText; - SelItem.cchTextMax /= sizeof(WCHAR); - SendMessageW(g_hwndTreeView, TVM_GETITEMW, 0, (LPARAM) (LPTVITEMW) &SelItem); - unsigned L = ((unsigned)wcslen(wzText)+1)*3; - char* szUTFText = new (nothrow) char[L]; - if(szUTFText) - { - memset(szUTFText,0,L); - WszWideCharToMultiByte(CP_UTF8,0,wzText,-1,szUTFText,L,NULL,NULL); - delete[] wzText; - szText = szUTFText; - } - } - HCURSOR hWasCursor = SetCursor(hWaitCursor); - - HWND hRet = GUIDisassemble(pClassItem->cl, pItem->mbMember, szText? szText : ""); - if(szText) delete[] szText; - - SetCursor(hWasCursor); - - return hRet; - } - else if (pItem->Discriminator == TREEITEM_TYPE_INFO) - { - if(pItem->mbMember) - { - if(pItem->mbMember != 0xFFFFFFFF) - { - // We've clicked on an "extends X" or "implements Y", so select that class - SelectClassByToken(pItem->mbMember); - } - else - { - HCURSOR hWasCursor = SetCursor(hWaitCursor); - - HWND hRet = GUIDisassemble(0, 0, "MANIFEST"); - - SetCursor(hWasCursor); - return hRet; - } - } - else - { - TVITEMA SelItem; - char* szText = new (nothrow) char[8192]; - if(szText) - { - // Get the name of this item so that we can title the disassembly window - memset(&SelItem, 0, sizeof(SelItem)); - SelItem.mask = TVIF_TEXT; - SelItem.pszText = szText; - SelItem.hItem = pItem->hItem; - SelItem.cchTextMax = 8192; - - WCHAR* wzText = (WCHAR*)szText; - SelItem.cchTextMax /= sizeof(WCHAR); - SendMessageW(g_hwndTreeView, TVM_GETITEMW, 0, (LPARAM) (LPTVITEMW) &SelItem); - unsigned L = ((unsigned)wcslen(wzText)+1)*3; - char* szUTFText = new (nothrow) char[L]; - memset(szUTFText,0,L); - WszWideCharToMultiByte(CP_UTF8,0,wzText,-1,szUTFText,L,NULL,NULL); - delete[] wzText; - szText = szUTFText; - } - HCURSOR hWasCursor = SetCursor(hWaitCursor); - - HWND hRet = GUIDisassemble(pClassItem->cl, pClassItem->cl, szText ? szText : ""); - if(szText) delete[] szText; - - SetCursor(hWasCursor); - - return hRet; - } - } - } - return NULL; -} - - -void SelectClassByName(__in __nullterminated char *pszFQName) -{ - ClassItem_t *pDestItem; - - // Find namespace - char *p = ns::FindSep(pszFQName); - if (p == NULL) - { - pDestItem = FindClassItem(NULL, pszFQName); - } - else - { - char szBuffer[MAX_CLASSNAME_LENGTH]; - strncpy_s(szBuffer, MAX_CLASSNAME_LENGTH,pszFQName, p - pszFQName); - szBuffer[ p - pszFQName ] = '\0'; - pDestItem = FindClassItem(szBuffer, p+1); - } - - if (pDestItem != NULL) - { - SendMessageA(g_hwndTreeView, TVM_SELECTITEM, TVGN_CARET, (LPARAM) (LPTVITEM) pDestItem->hItem); - } -} - -void SelectClassByToken(mdToken tk) -{ - if(TypeFromToken(tk)==mdtTypeDef) - { - ClassItem_t *pDestItem; - if(pDestItem = FindClassItem(tk)) - { - SendMessageA(g_hwndTreeView, TVM_SELECTITEM, TVGN_CARET, (LPARAM) (LPTVITEM) pDestItem->hItem); - } - } -} - -// -// Text search in rich text edit -// -void FindTextInListbox(HWND hwnd, FINDREPLACEW* lpfr) -{ - HWND hwndLB = FindAssociatedDisassemblyListBox(hwnd); - if(hwndLB) - { - FINDTEXTW strFind; - DWORD bgn,end; - SendMessage(hwndLB,EM_GETSEL,(WPARAM)&bgn,(LPARAM)&end); - if(lpfr->Flags & FR_DOWN) - { - strFind.chrg.cpMin=end; - strFind.chrg.cpMax=-1; - } - else - { - strFind.chrg.cpMin=bgn; - strFind.chrg.cpMax=0; - } - strFind.lpstrText=lpfr->lpstrFindWhat; - int pos = (int)SendMessage(hwndLB,EM_FINDTEXTW,(WPARAM)(lpfr->Flags),(LPARAM)&strFind); - if(pos >= 0) - { - //char sz[32]; - //sprintf_s(sz, _countof(sz), "%d:%d",strFind.chrg.cpMin,strFind.chrg.cpMax); - //MessageBox(hwnd,sz,"Find",MB_OK); - SendMessage(hwndLB,EM_SETSEL,(WPARAM)pos,(LPARAM)(pos+wcslen(lpfr->lpstrFindWhat))); - } - } -} - -// -// Disassembly window(s) WndProc -// -LRESULT CALLBACK DisassemblyWndProc( - HWND hwnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -) -{ - static HBRUSH hBrush=NULL; - COLORREF crBackGr; - - static COLORREF crBackGrOld=NULL; - - if (crBackGrOld == NULL) - crBackGrOld = GetSysColor(COLOR_INFOBK); - - if(uMsg== g_uFindReplaceMsg) - { - FINDREPLACEW* lpfr = (FINDREPLACEW*)lParam; - if(!(lpfr->Flags & FR_DIALOGTERM)) - { - FindTextInListbox(hwnd,lpfr); - } - } - else - switch (uMsg) - { - case WM_CREATE: - hBrush = CreateSolidBrush(RGB(255,255,255)); - break; - - //===== Sent by Static (label) and Read-Only Edit field ===== - case WM_CTLCOLORSTATIC: - case WM_CTLCOLOREDIT: - if(hBrush) DeleteObject(hBrush); - crBackGr = GetSysColor(COLOR_INFOBK); - hBrush = CreateSolidBrush(crBackGr); - SetBkColor((HDC) wParam, crBackGr); - if(crBackGr != crBackGrOld) - { - g_strChFontDasm.rgbColors = GetSysColor(COLOR_INFOTEXT); - crBackGrOld = crBackGr; - } - SetTextColor((HDC) wParam, g_strChFontDasm.rgbColors); - return (LRESULT) hBrush; - - //====== Sent by active Edit field ============ - //case WM_CTLCOLOREDIT: - // if(hBrush) DeleteObject(hBrush); - // hBrush = CreateSolidBrush(RGB(255,255,255)); - // SetBkColor((HDC) wParam, RGB(255,255,255)); - // return (LRESULT) hBrush; - - // Ownerdraw stuff - case WM_MEASUREITEM: - { - ((MEASUREITEMSTRUCT *) (lParam))->itemHeight = g_Height; - break; - } - - // Ownerdraw stuff - case WM_DRAWITEM: - { - DRAWITEMSTRUCT *pDIS; - WCHAR wzBuf[1024]; - int ItemID; - - pDIS = (DRAWITEMSTRUCT *) lParam; - ItemID = (int) pDIS->itemID; - - if (ItemID < 0) - { - switch (pDIS->CtlType) - { - case ODT_LISTBOX: - { - if ((pDIS->itemAction) & (ODA_FOCUS)) - DrawFocusRect (PHDC, &PRC); - break; - } - - case ODT_COMBOBOX: - { - if ((pDIS->itemAction) & ODS_FOCUS) - DrawFocusRect(PHDC, &PRC); - break; - } - } - - return TRUE; - } - - switch (pDIS->CtlType) - { - case ODT_LISTBOX: - WszSendMessage(pDIS->hwndItem, LB_GETTEXT, pDIS->itemID, (LPARAM)wzBuf); - break; - - case ODT_COMBOBOX: - WszSendMessage(pDIS->hwndItem, CB_GETLBTEXT, pDIS->itemID, (LPARAM)wzBuf); - break; - } - - int crBack,crText; - HBRUSH hbrBack; - - if ((pDIS->itemState) & (ODS_SELECTED)) - { - crBack = GetSysColor(COLOR_HIGHLIGHT); - crText = GetSysColor(COLOR_HIGHLIGHTTEXT); - } - else - { - crBack = GetSysColor(COLOR_WINDOW); - crText = GetSysColor(COLOR_WINDOWTEXT); - } - - hbrBack = CreateSolidBrush(crBack); - FillRect(PHDC, &PRC, hbrBack); - DeleteObject(hbrBack); - - // 0x00bbggrr - SetBkColor(PHDC, crBack); - - // Instruction counter - if (wcslen(wzBuf) >= PADDING && isdigit(*wzBuf)) - { - SetTextColor(PHDC, 0x00FF0000); - TextOutW(PHDC, PRC.left, PRC.top, wzBuf, 5); - - SetTextColor(PHDC, 0x00005500); - TextOutW(PHDC, PRC.left + (5*g_MaxCharWidth), PRC.top, &wzBuf[5], PADDING-5); - - SetTextColor(PHDC, crText); - TextOutW(PHDC, PRC.left + (PADDING*g_MaxCharWidth), PRC.top, &wzBuf[PADDING], (UINT32)wcslen(&wzBuf[PADDING])); - } - else - TextOutW(PHDC, PRC.left, PRC.top, wzBuf, (UINT32)wcslen(wzBuf)); - - if ((pDIS->itemState) & (ODS_FOCUS)) - DrawFocusRect(PHDC, &PRC); - - break; - } - - - case WM_COMMAND: - { - if(HIWORD(wParam) > 1) break; // we are interested in commands from menu only - switch (LOWORD(wParam)) - { - case IDM_FIND: - { - HWND hwndLB = FindAssociatedDisassemblyListBox(hwnd); - if(hwndLB) - { - FINDREPLACEW *pFR = &(FindDisasmBoxByHwnd(hwnd)->strFR); - if(pFR && (pFR->Flags&FR_DIALOGTERM)) // i.e., if the box isn't up - { - DWORD bgn,end; - WszSendMessage(hwndLB,EM_GETSEL,(WPARAM)&bgn,(LPARAM)&end); - if(end > bgn) - { - if(end - bgn > 119) - SendMessage(hwndLB,EM_SETSEL,(WPARAM)bgn,(LPARAM)(bgn+119)); - SendMessage(hwndLB,EM_GETSELTEXT,0,(LPARAM)(pFR->lpstrFindWhat)); - } - pFR->Flags &= ~FR_DIALOGTERM; - g_hFindText = FindTextW(pFR); - } - } - } - break; - case IDM_FINDNEXT: - { - FindTextInListbox(hwnd,&(FindDisasmBoxByHwnd(hwnd)->strFR)); - } - break; - } - break; - } - - case WM_SETFOCUS: - SetFocus(FindAssociatedDisassemblyListBox(hwnd)); - break; - - case WM_SIZE: - { - DWORD cxClient = LOWORD(lParam); - DWORD cyClient = HIWORD(lParam); - HWND hListView; - - // We have to size the listview also - - // Will be NULL if we are ourselves a listview - hListView = FindAssociatedDisassemblyListBox(hwnd); - - if (hListView != NULL) - { - // Resize listview window - MoveWindow( - hListView, - 0, - 0, - cxClient, - cyClient, - TRUE // repaint - ); - } - - break; - } - - case WM_CLOSE: - if(hBrush) DeleteObject(hBrush); - if(LOWORD(wParam)==0) RemoveDisasmBox(hwnd); - DestroyWindow(hwnd); // Generates the WM_DESTROY message - - // Shutdown everything if we're just viewing GUI IL and close all our boxes - if (IsGuiILOnly() && (g_NumDisasmBoxes == 0)) { - PostQuitMessage(0); - } - - break; - - default : - return WszDefWindowProc(hwnd, uMsg, wParam, lParam); - } - - return 0; -} - -BOOL CALLBACK AboutBoxProc(HWND hwndDlg, // handle to dialog box - UINT uMsg, // message - WPARAM wParam, // first message parameter - LPARAM lParam) // second message parameter -{ - switch(uMsg) - { - case WM_INITDIALOG: - { - WCHAR str[1024]; - WszSendDlgItemMessage(hwndDlg,IDC_ABOUT_LINE1,WM_SETTEXT,0, - (LPARAM)RstrW(IDS_ILDASM_TITLE)); - swprintf_s(str,1024,RstrW(IDS_VERSION), VER_FILEVERSION_STR_L); str[1023]=0; - WszSendDlgItemMessage(hwndDlg,IDC_ABOUT_LINE2,WM_SETTEXT,0,(LPARAM)str); - WszSendDlgItemMessage(hwndDlg,IDC_ABOUT_LINE3,WM_SETTEXT,0, - (LPARAM)RstrW(IDS_LEGALCOPYRIGHT)); - } - return TRUE; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case ID_ABOUT_OK: - EndDialog(hwndDlg,0); - return TRUE; - } - break; - - } - return FALSE; -} - -BOOL CALLBACK DumpOptionsProc(HWND hwndDlg, // handle to dialog box - UINT uMsg, // message - WPARAM wParam, // first message parameter - LPARAM lParam) // second message parameter -{ - static BOOL fAsmChecked; - static BOOL fMetaChecked; - static ULONG uCodePage = 0; - - if (uCodePage == 0) - uCodePage = g_uCodePage; - - switch(uMsg) - { - case WM_INITDIALOG: - WszSendDlgItemMessage(hwndDlg,IDC_RADIO1,BM_SETCHECK,(uCodePage==g_uConsoleCP ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_RADIO2,BM_SETCHECK,(uCodePage==CP_UTF8 ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_RADIO3,BM_SETCHECK,(uCodePage==0xFFFFFFFF ? BST_CHECKED : BST_UNCHECKED),0); - - - WszSendDlgItemMessage(hwndDlg,IDC_CHECK18,BM_SETCHECK,(g_fShowProgressBar ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK1, BM_SETCHECK,(g_fDumpHeader ? BST_CHECKED : BST_UNCHECKED),0); - if(g_fTDC) - { - WszSendDlgItemMessage(hwndDlg,IDC_CHECK2, BM_SETCHECK,(g_fDumpStats ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK19, BM_SETCHECK,(g_fDumpClassList ? BST_CHECKED : BST_UNCHECKED),0); - } - else - { - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK2), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK19), SW_HIDE); - } - WszSendDlgItemMessage(hwndDlg,IDC_CHECK3, BM_SETCHECK,(g_fDumpAsmCode ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK4, BM_SETCHECK,(g_fDumpTokens ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK5, BM_SETCHECK,(g_fShowBytes ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK6, BM_SETCHECK,(g_fShowSource ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK20, BM_SETCHECK,(g_fInsertSourceLines ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK7, BM_SETCHECK,(g_fTryInCode ? BST_CHECKED : BST_UNCHECKED),0); - if(!(fAsmChecked = g_fDumpAsmCode)) - { - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK4), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK5), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK6), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK7), FALSE); - } - if(g_fTDC) - { - WszSendDlgItemMessage(hwndDlg,IDC_CHECK8, BM_SETCHECK,(g_fDumpMetaInfo ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK10,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpHeader ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK11,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpMoreHex ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK12,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpCSV ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK13,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpUnsat ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK16,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpValidate ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK14,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpSchema ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK15,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpRaw ? BST_CHECKED : BST_UNCHECKED),0); - WszSendDlgItemMessage(hwndDlg,IDC_CHECK17,BM_SETCHECK,(g_ulMetaInfoFilter & MDInfo::dumpRawHeaps ? BST_CHECKED : BST_UNCHECKED),0); - if(!(fMetaChecked = g_fDumpMetaInfo)) - { - //EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK9), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK10), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK11), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK12), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK13), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK14), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK15), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK16), FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK17), FALSE); - } - } - else - { - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK8), SW_HIDE); - //ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK9), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK10), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK11), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK12), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK13), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK14), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK15), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK16), SW_HIDE); - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK17), SW_HIDE); - } - ShowWindow(GetDlgItem(hwndDlg,IDC_CHECK9), SW_HIDE); - return TRUE; - - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_CHECK3: - fAsmChecked = !fAsmChecked; - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK4), fAsmChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK5), fAsmChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK6), fAsmChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK7), fAsmChecked); - return TRUE; - - case IDC_CHECK8: - fMetaChecked = !fMetaChecked; - //EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK9), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK10), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK11), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK12), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK13), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK14), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK15), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK16), fMetaChecked); - EnableWindow(GetDlgItem(hwndDlg,IDC_CHECK17), fMetaChecked); - return TRUE; - - case IDOK: - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_RADIO1, BM_GETCHECK,0,0)) g_uCodePage = g_uConsoleCP; - else if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_RADIO2, BM_GETCHECK,0,0)) g_uCodePage = CP_UTF8; - else if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_RADIO3, BM_GETCHECK,0,0)) g_uCodePage = 0xFFFFFFFF; - uCodePage = g_uCodePage; - - g_fShowProgressBar = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK18, BM_GETCHECK,0,0)); - g_fDumpHeader = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK1, BM_GETCHECK,0,0)); - if(g_fTDC) - { - g_fDumpStats = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK2, BM_GETCHECK,0,0)); - g_fDumpClassList = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK19, BM_GETCHECK,0,0)); - } - g_fDumpAsmCode = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK3, BM_GETCHECK,0,0)); - g_fDumpTokens = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK4, BM_GETCHECK,0,0)); - g_fShowBytes = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK5, BM_GETCHECK,0,0)); - g_fShowSource = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK6, BM_GETCHECK,0,0)); - g_fInsertSourceLines = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK20, BM_GETCHECK,0,0)); - g_fTryInCode = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK7, BM_GETCHECK,0,0)); - if(g_fTDC) - { - g_fDumpMetaInfo = (BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK8, BM_GETCHECK,0,0)); - g_ulMetaInfoFilter = 0; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK10, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpHeader; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK11, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpMoreHex; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK12, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpCSV; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK13, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpUnsat; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK16, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpValidate; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK14, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpSchema; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK15, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpRaw; - if(BST_CHECKED==WszSendDlgItemMessage(hwndDlg,IDC_CHECK17, BM_GETCHECK,0,0)) g_ulMetaInfoFilter |= MDInfo::dumpRawHeaps; - } - EndDialog(hwndDlg,1); - return TRUE; - - case IDCANCEL: - EndDialog(hwndDlg,0); - return TRUE; - } - break; - - } - return FALSE; -} - -static HWND help_hw; -void * __cdecl HelpFileLoader(_In_z_ LPCWSTR lpHelpFileName) -{ - return HtmlHelpW(help_hw, lpHelpFileName, HH_DISPLAY_TOPIC, NULL); -} - -// -// Main window WndProc -// -#define CHECK_UNCHECK(x) { x=!x; CheckMenuItem(g_hMenu, LOWORD(wParam), (x ? MF_CHECKED : MF_UNCHECKED)); } - -#ifdef _PREFAST_ -#pragma warning(push) -#pragma warning(disable:21000) // Suppress PREFast warning about overly large function -#endif -LRESULT CALLBACK MainWndProc( - HWND hwnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam -) -{ - HWND hwndDasm; - static HCURSOR hWaitCursor = NULL; - - if (hWaitCursor == NULL) - hWaitCursor = WszLoadCursor(NULL,IDC_WAIT); - - switch (uMsg) - { - case WM_DROPFILES: - { - WCHAR wzFileName[MAX_FILENAME_LENGTH]; - DragQueryFileW((HDROP)wParam,0,wzFileName,MAX_FILENAME_LENGTH-1); - memset(g_szInputFile,0,MAX_FILENAME_LENGTH); - WszWideCharToMultiByte(CP_UTF8,0,wzFileName,-1,g_szInputFile,MAX_FILENAME_LENGTH-1,NULL,NULL); - GetInputFileFullPath(); - { - HCURSOR hWasCursor = SetCursor(hWaitCursor); - GUICleanupClassItems(); - TreeView_DeleteAllItems(g_hwndTreeView); - Cleanup(); - GUISetModule(g_szInputFile); - DumpFile(); - SetCursor(hWasCursor); - } - DragFinish((HDROP)wParam); - } - break; - - case WM_COMMAND: - { - if(HIWORD(wParam) > 1) break; // we are interested in commands from menu only - switch (LOWORD(wParam)) - { - case IDM_OPEN: - { - WCHAR wzInputFile[MAX_FILENAME_LENGTH]; - memset(wzInputFile,0,sizeof(wzInputFile)); - if(strlen(g_szInputFile)) - { - WszMultiByteToWideChar(CP_UTF8,0,g_szInputFile,-1,wzInputFile,MAX_FILENAME_LENGTH-1); - } - { - OPENFILENAMEW ofn; - WCHAR* wzFilter = RstrW(IDS_FILTER_IN); //L"PE file (*.exe,*.dll,*.mod,*.mdl,*.winmd)\0*.exe;*.dll;*.mod;*.mdl;*.winmd\0Any type (*.*)\0*.*\0\0"; - const WCHAR* wzDefltExt = L"exe"; - for(WCHAR* pwc = wzFilter; pwc = wcschr(pwc,'\t'); pwc++) *pwc = 0; - memset(&ofn,0,sizeof(OPENFILENAMEW)); - ofn.lStructSize = sizeof(OPENFILENAMEW); - ofn.hwndOwner = hwnd; - ofn.lpstrFilter = wzFilter; - ofn.nFilterIndex = 0; - ofn.lpstrFile = wzInputFile; - ofn.nMaxFile = MAX_FILENAME_LENGTH-1; - ofn.Flags = OFN_FILEMUSTEXIST; - ofn.lpstrDefExt = wzDefltExt; - if(GetOpenFileName(&ofn)) - { - HCURSOR hWasCursor = SetCursor(hWaitCursor); - GUICleanupClassItems(); - TreeView_DeleteAllItems(g_hwndTreeView); - Cleanup(); - memset(g_szInputFile,0,MAX_FILENAME_LENGTH); - WszWideCharToMultiByte(CP_UTF8,0,wzInputFile,-1,g_szInputFile,MAX_FILENAME_LENGTH-1,NULL,NULL); - GetInputFileFullPath(); - GUISetModule(g_szInputFile); - DumpFile(); - SetCursor(hWasCursor); - } - } - break; - } - case IDM_ABOUT: - { - _ASSERTE(g_hResources != NULL); - WszDialogBoxParam(g_hResources,MAKEINTRESOURCE(IDD_ABOUT),hwnd,(DLGPROC)AboutBoxProc,0L); - break; - } - case IDM_DUMP: - //case IDM_DUMP_TREE: - if(g_pImport) - { - unsigned uWasCodePage = g_uCodePage; - WCHAR wzOutputFile[MAX_FILENAME_LENGTH]; - memset(wzOutputFile,0,sizeof(wzOutputFile)); - if(strlen(g_szOutputFile)) - { - WszMultiByteToWideChar(CP_UTF8,0,g_szOutputFile,-1,wzOutputFile,MAX_FILENAME_LENGTH-1); - } - { - OPENFILENAMEW ofn; - WCHAR* wzFilter = RstrW(IDS_FILTER_OUT);//L"IL file (*.il)\0*.il\0Text file (*.txt) \0*.txt\0Any type (*.*)\0*.*\0\0"; - const WCHAR* wzDefltExt = L"il"; - for(WCHAR* pwc = wzFilter; pwc = wcschr(pwc,'\t'); pwc++) *pwc = 0; - memset(&ofn,0,sizeof(OPENFILENAMEW)); - ofn.lStructSize = sizeof(OPENFILENAMEW); - ofn.hwndOwner = hwnd; - ofn.lpstrFilter = wzFilter; - ofn.nFilterIndex = 0; - ofn.lpstrFile = wzOutputFile; - ofn.nMaxFile = MAX_FILENAME_LENGTH-1; - ofn.Flags = OFN_OVERWRITEPROMPT; - ofn.lpstrDefExt = wzDefltExt; - _ASSERTE(g_hResources != NULL); - if(WszDialogBoxParam(g_hResources,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,(DLGPROC)DumpOptionsProc,0L) && - GetSaveFileName(&ofn)) - { - HCURSOR hWasCursor = SetCursor(hWaitCursor); - g_Mode &= ~MODE_GUI; - memset(g_szOutputFile,0,MAX_FILENAME_LENGTH); - WszWideCharToMultiByte(CP_UTF8,0,wzOutputFile,-1,g_szOutputFile,MAX_FILENAME_LENGTH-1,NULL,NULL); - g_pFile = OpenOutput(wzOutputFile); - if(g_pFile) - { - DumpFile(); // closes g_pFile upon completion - SetCursor(hWasCursor); - } - else - { - SetCursor(hWasCursor); - WszMessageBox(hwnd,wzOutputFile,RstrW(IDS_CANNOTOPENFILE),MB_OK|MB_ICONERROR | GetDasmMBRTLStyle()); - } - g_szOutputFile[0] = 0; - g_Mode |= MODE_GUI; - //g_fShowSource = FALSE; // flag could have been changed for dump - } - } - g_uCodePage = uWasCodePage; // g_uCodePage is changed in DumpOptionsProc - } - break; - - case IDM_DUMP_TREE: - if(g_pImport) - { - // Dump the tree view(fully expanded, with current sorting) to a text file - OPENFILENAMEW ofn; - WCHAR* wzFilter = RstrW(IDS_FILTER_OUT2); //L"Text file (*.txt) \0*.txt\0Any type (*.*)\0*.*\0\0"; - const WCHAR* wzDefltExt = L"txt"; - WCHAR szIndent[MAX_FILENAME_LENGTH]; - FILE* pFile; - WCHAR wzOutputFile[MAX_FILENAME_LENGTH]; - for(WCHAR* pwc = wzFilter; pwc = wcschr(pwc,'\t'); pwc++) *pwc = 0; - memset(wzOutputFile,0,sizeof(wzOutputFile)); - memset(&ofn,0,sizeof(OPENFILENAMEW)); - ofn.lStructSize = sizeof(OPENFILENAMEW); - ofn.hwndOwner = hwnd; - ofn.lpstrFilter = wzFilter; - ofn.nFilterIndex = 0; - ofn.lpstrFile = wzOutputFile; - ofn.nMaxFile = MAX_FILENAME_LENGTH-1; - ofn.Flags = OFN_OVERWRITEPROMPT; - ofn.lpstrDefExt = wzDefltExt; - if(GetSaveFileName(&ofn)) - { - HCURSOR hWasCursor = SetCursor(hWaitCursor); - pFile = g_pFile; - g_pFile = OpenOutput(wzOutputFile); - szIndent[0] = 0; - if(g_pFile) - { - g_Mode &= ~MODE_GUI; - DumpTreeItem(g_hRoot,g_pFile,szIndent); - g_Mode |= MODE_GUI; - fclose(g_pFile); - SetCursor(hWasCursor); - } - else - { - SetCursor(hWasCursor); - WszMessageBox(hwnd,wzOutputFile,RstrW(IDS_CANNOTOPENFILE),MB_OK|MB_ICONERROR | GetDasmMBRTLStyle()); - } - g_pFile = pFile; - } - } - break; - - case IDM_EXIT: - { - WszSendMessage(GetActiveWindow(),WM_CLOSE,0,0); - } - break; - - case IDM_FONT_TREE: - { - g_strChFontTree.hwndOwner = g_hwndMain; - if(ChooseFont(&g_strChFontTree)) - { - DeleteObject((HGDIOBJ)g_hSmallFont); - g_hSmallFont = CreateFontIndirect(&g_strLogFontTree); - WszSendMessage(g_hwndTreeView,WM_SETFONT,(LPARAM) g_hSmallFont,TRUE); - if(g_hwndAsmInfo) - WszSendMessage(g_hwndAsmInfo,WM_SETFONT,(LPARAM) g_hSmallFont,TRUE); - SaveGUIFonts(&guiInfo); - } - break; - } - - case IDM_FONT_DASM: - { - g_strChFontDasm.hwndOwner = g_hwndMain; - if(ChooseFont(&g_strChFontDasm)) - { - if(g_fDumpRTF) { g_strLogFontDasm.lfWeight = FW_REGULAR; g_strLogFontDasm.lfItalic = FALSE; } - DeleteObject((HGDIOBJ)g_hFixedFont); - g_hFixedFont = CreateFontIndirect(&g_strLogFontDasm); - - for (DWORD i = 0; i < g_NumDisasmBoxes; i++) - { - WszSendMessage((*g_DisasmBox)[i].hwndChild,WM_SETFONT,(LPARAM)g_hFixedFont,TRUE); - if(g_fDumpRTF) - GUIDumpItemToDisassemblyEditBox((void*)(*g_DisasmBox)[i].hwndChild, - (*g_DisasmBox)[i].tkClass,(*g_DisasmBox)[i].tkMember); - } - SaveGUIFonts(&guiInfo); - } - break; - } - - case IDM_CAVERBAL: - { - CHECK_UNCHECK(g_fCAVerbal); - for (DWORD i = 0; i < g_NumDisasmBoxes; i++) - { - GUIDumpItemToDisassemblyEditBox((void*)(*g_DisasmBox)[i].hwndChild, - (*g_DisasmBox)[i].tkClass, - (*g_DisasmBox)[i].tkMember); - } - break; - } - - case IDM_DUMPRTF: - { - CHECK_UNCHECK(g_fDumpRTF); - //GUIDumpAssemblyInfo(); - for (DWORD i = 0; i < g_NumDisasmBoxes; i++) - { - mdToken tkClass = (*g_DisasmBox)[i].tkClass; - mdToken tkMember = (*g_DisasmBox)[i].tkMember; - if((TypeFromToken(tkMember)==0)&&(tkClass==IDM_SHOW_METAINFO)) - continue; - GUIDisassemble(tkClass,tkMember,"UpdateThisDisassemblyBox"); - } - break; - } - - case IDM_SORT_BY_NAME: - { - CHECK_UNCHECK(g_fSortByName); - if(g_pImport) - { - if(!RefreshList()) goto CloseAndDestroy; - } - break; - } - - case IDM_TREEVIEWFCN: - { - CHECK_UNCHECK(g_fTreeViewFCN); - if(g_pImport) - { - if(!RefreshList()) goto CloseAndDestroy; - } - break; - } - - case IDM_SHOW_PUB: - { - CHECK_UNCHECK(g_fHidePub); -UpdateVisibilityOptions: - g_fLimitedVisibility = g_fHidePub || - g_fHidePriv || - g_fHideFam || - g_fHideFAA || - g_fHideFOA || - g_fHidePrivScope || - g_fHideAsm; - if(g_pImport) - { - if(!RefreshList()) DestroyWindow(hwnd); - } - break; - } - case IDM_SHOW_PRIV: - { - CHECK_UNCHECK(g_fHidePriv); - goto UpdateVisibilityOptions; - } - case IDM_SHOW_FAM: - { - CHECK_UNCHECK(g_fHideFam); - goto UpdateVisibilityOptions; - } - case IDM_SHOW_ASM: - { - CHECK_UNCHECK(g_fHideAsm); - goto UpdateVisibilityOptions; - } - case IDM_SHOW_FAA: - { - CHECK_UNCHECK(g_fHideFAA); - goto UpdateVisibilityOptions; - } - case IDM_SHOW_FOA: - { - CHECK_UNCHECK(g_fHideFOA); - goto UpdateVisibilityOptions; - } - case IDM_SHOW_PSCOPE: - { - CHECK_UNCHECK(g_fHidePrivScope); - goto UpdateVisibilityOptions; - } - case IDM_FULL_INFO: - { - CHECK_UNCHECK(g_fFullMemberInfo); - if(g_pImport) - { - if(!RefreshList()) DestroyWindow(hwnd); - } - break; - } - case IDM_BYTES: - { - CHECK_UNCHECK(g_fShowBytes); - break; - } - case IDM_TOKENS: - { - CHECK_UNCHECK(g_fDumpTokens); - break; - } - case IDM_SOURCELINES: - { - CHECK_UNCHECK(g_fShowSource); - break; - } - case IDM_EXPANDTRY: - { - CHECK_UNCHECK(g_fTryInCode); - break; - } - case IDM_QUOTEALLNAMES: - { - CHECK_UNCHECK(g_fQuoteAllNames); - break; - } - case IDM_SHOW_HEADER: - { - GUIDisassemble(IDM_SHOW_HEADER,0,"Headers"); - break; - } - case IDM_SHOW_STAT: - { - GUIDisassemble(IDM_SHOW_STAT,0,"Statistics"); - break; - } - case IDM_HELP: - { - help_hw = hwnd; - FindLocalizedFile(L"ildasm.chm", &HelpFileLoader); - break; - } - case IDM_SHOW_METAINFO: - { - if(g_pImport) - GUIDisassemble(IDM_SHOW_METAINFO,0,"MetaInfo"); - break; - } - case IDM_MI_HEADER: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpHeader) g_ulMetaInfoFilter &= ~MDInfo::dumpHeader; - else g_ulMetaInfoFilter |= MDInfo::dumpHeader; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpHeader ? MF_CHECKED : MF_UNCHECKED)); - if(g_ulMetaInfoFilter & MDInfo::dumpHeader) - { - // HeaderOnly specified, - // Suppress Counts,Sizes, Header,Schema and Header,Schema,Rows - g_ulMetaInfoFilter &= ~MDInfo::dumpCSV; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_CSV, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpSchema; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_SCHEMA, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpRaw; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_RAW, MF_UNCHECKED); - } - return 1; //break; - } - case IDM_MI_HEX: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpMoreHex) g_ulMetaInfoFilter &= ~MDInfo::dumpMoreHex; - else g_ulMetaInfoFilter |= MDInfo::dumpMoreHex; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpMoreHex ? MF_CHECKED : MF_UNCHECKED)); - return 1; //break; - } - case IDM_MI_CSV: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpCSV) g_ulMetaInfoFilter &= ~MDInfo::dumpCSV; - else g_ulMetaInfoFilter |= MDInfo::dumpCSV; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpCSV ? MF_CHECKED : MF_UNCHECKED)); - if(g_ulMetaInfoFilter & MDInfo::dumpCSV) - { - // Counts,Sizes specified, - // Suppress HeaderOnly, Header,Schema and Header,Schema,Rows - g_ulMetaInfoFilter &= ~MDInfo::dumpHeader; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_HEADER, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpSchema; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_SCHEMA, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpRaw; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_RAW, MF_UNCHECKED); - } - return 1; //break; - } - case IDM_MI_UNREX: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpUnsat) g_ulMetaInfoFilter &= ~MDInfo::dumpUnsat; - else g_ulMetaInfoFilter |= MDInfo::dumpUnsat; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpUnsat ? MF_CHECKED : MF_UNCHECKED)); - return 1; //break; - } - case IDM_MI_SCHEMA: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpSchema) g_ulMetaInfoFilter &= ~MDInfo::dumpSchema; - else g_ulMetaInfoFilter |= MDInfo::dumpSchema; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpSchema ? MF_CHECKED : MF_UNCHECKED)); - if(g_ulMetaInfoFilter & MDInfo::dumpSchema) - { - // Header,Schema specified, - // suppress Counts,Sizes, HeaderOnly and Header,Schema,Rows - g_ulMetaInfoFilter &= ~MDInfo::dumpCSV; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_CSV, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpHeader; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_HEADER, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpRaw; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_RAW, MF_UNCHECKED); - } - return 1; //break; - } - case IDM_MI_RAW: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpRaw) g_ulMetaInfoFilter &= ~MDInfo::dumpRaw; - else g_ulMetaInfoFilter |= MDInfo::dumpRaw; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpRaw ? MF_CHECKED : MF_UNCHECKED)); - if(g_ulMetaInfoFilter & MDInfo::dumpRaw) - { - // Header,Schema,Rows specified, - // suppress Counts,Sizes, HeaderOnly and Header,Schema - g_ulMetaInfoFilter &= ~MDInfo::dumpCSV; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_CSV, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpHeader; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_HEADER, MF_UNCHECKED); - g_ulMetaInfoFilter &= ~MDInfo::dumpSchema; - CheckMenuItem(g_hMetaInfoMenu, IDM_MI_SCHEMA, MF_UNCHECKED); - } - return 1; //break; - } - case IDM_MI_HEAPS: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpRawHeaps) g_ulMetaInfoFilter &= ~MDInfo::dumpRawHeaps; - else g_ulMetaInfoFilter |= MDInfo::dumpRawHeaps; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpRawHeaps ? MF_CHECKED : MF_UNCHECKED)); - return 1; //break; - } - case IDM_MI_VALIDATE: - { - WORD iSelection = LOWORD(wParam); - if(g_ulMetaInfoFilter & MDInfo::dumpValidate) g_ulMetaInfoFilter &= ~MDInfo::dumpValidate; - else g_ulMetaInfoFilter |= MDInfo::dumpValidate; - CheckMenuItem(g_hMetaInfoMenu, iSelection, (g_ulMetaInfoFilter & MDInfo::dumpValidate ? MF_CHECKED : MF_UNCHECKED)); - return 1; //break; - } - - } - - break; - } - - case WM_SETFOCUS: - SetFocus(g_hwndTreeView); - break; - - case WM_SIZE: - { - DWORD cxClient = LOWORD(lParam); - DWORD cyClient = HIWORD(lParam); - DWORD dy; - - dy = cyClient >> 3; - if(dy < 50) dy = 50; - if(cyClient < dy+4) cyClient = dy+4; - - // Resize listview window - MoveWindow( - g_hwndTreeView, - 0, - 0, - cxClient, - cyClient-dy-2, - TRUE // repaint - ); - // Resize AsmInfo window - MoveWindow( - g_hwndAsmInfo, - 0, - cyClient-dy-1, - cxClient, - dy, - TRUE // repaint - ); - - break; - } - - case WM_NOTIFY: - { - if (wParam == ID_TREEVIEW) - { - NMHDR * pNMHDR = (NMHDR*) lParam; - switch (pNMHDR->code) - { - case TVN_KEYDOWN: - { - NMTVKEYDOWN *pKeyDown = (NMTVKEYDOWN *) pNMHDR; - - if (pKeyDown->wVKey == '\r') - { - if(DoubleClickSelectedMember(g_CurSelItem) == NULL) - TreeView_Expand(g_hwndTreeView,g_CurSelItem,TVE_TOGGLE); - } - break; - } - - case NM_DBLCLK: - { - hwndDasm = DoubleClickSelectedMember(g_CurSelItem); - if(hwndDasm) - { - PostMessageA(hwndDasm,WM_ACTIVATE,WA_CLICKACTIVE,0); - PostMessageA(hwndDasm,WM_SETFOCUS,0,0); - } - break; - } - - case TVN_SELCHANGEDW: - case TVN_SELCHANGEDA: - { - NMTREEVIEW *pTV = (NMTREEVIEW *) pNMHDR; - /* - TVITEM SelItem; - char szText[256]; - - memset(&SelItem, 0, sizeof(SelItem)); - SelItem.mask = TVIF_TEXT; - SelItem.pszText = szText; - SelItem.cchTextMax = sizeof(szText)-1; - SelItem.hItem = pTV->itemNew.hItem; - - g_CurSelItem = SelItem.hItem; - SendMessageA(g_hwndTreeView, TVM_GETITEM, 0, (LPARAM)&SelItem); - */ - g_CurSelItem = pTV->itemNew.hItem; - break; - } - } - } - - break; - } - - case WM_CLOSE: - CloseAndDestroy: - // HTML help window is closed automatically - { - RECT r; - ShowWindow(hwnd,SW_RESTORE); - GetWindowRect(hwnd,(LPRECT)&r); - guiInfo.x = r.left; - guiInfo.y = r.top; - guiInfo.w = r.right - r.left; - guiInfo.h = r.bottom - r.top; - SaveGUIFonts(&guiInfo); - } - DestroyWindow(hwnd); // Generates the WM_DESTROY message - break; - - case WM_DESTROY : - PostQuitMessage(0); // Puts a WM_QUIT in the queue - break; - - default : - return DefWindowProcW(hwnd, uMsg, wParam, lParam); - } - - return 0; -} -#ifdef _PREFAST_ -#pragma warning(pop) -#endif - - -// -// Create the treeview in the main window -// -HWND CreateTreeView(HWND hwndParent) -{ - HWND hwndTree; - RECT rcl; - DWORD tvs = - TVS_HASLINES - |TVS_HASBUTTONS - |TVS_LINESATROOT - |TVS_SHOWSELALWAYS - // |TVS_TRACKSELECT - // |TVS_SINGLEEXPAND - |TVS_DISABLEDRAGDROP - ; - unsigned cy,dy; - - GetClientRect(hwndParent, &rcl); - cy = rcl.bottom - rcl.top; - dy = cy >> 3; - hwndTree = WszCreateWindowEx( - 0, - WC_TREEVIEWW, - NULL, - WS_VISIBLE|WS_CHILD|WS_BORDER|tvs, - 0, - 0, - rcl.right - rcl.left, - cy-dy-2, //rcl.bottom - rcl.top, - hwndParent, - (HMENU) ID_TREEVIEW, - g_hInstance, - NULL - ); - g_hwndAsmInfo = NULL; - if (hwndTree == NULL) - return NULL; - - WszSendMessage(hwndTree,WM_SETFONT,(LPARAM) g_hSmallFont,FALSE); - - TreeView_SetBkColor(hwndTree,-1); - TreeView_SetImageList(hwndTree, g_hImageList, TVSIL_NORMAL); - - g_hwndAsmInfo = WszCreateWindowEx( - 0, //WS_EX_TOOLWINDOW, - g_fDumpRTF ? L"RichEdit20A" : L"EDIT", - NULL, - WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE | WS_BORDER //| WS_CAPTION | WS_OVERLAPPEDWINDOW - | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_NOHIDESEL, - 0, - cy-dy-1, - rcl.right - rcl.left, - dy, - hwndParent, - (HMENU) ID_LISTBOX, - g_hInstance, // hinst - NULL - ); - if(g_hwndAsmInfo) - { - WszSendMessage(g_hwndAsmInfo,WM_SETFONT,(LPARAM) g_hSmallFont,FALSE); - } - - return hwndTree; -} - - -// -// Add one item to a treeview -// -HTREEITEM AddOneItem(HTREEITEM hParent, const char *pszText, HTREEITEM hInsAfter, int iImage, HWND hwndTree, BOOL fExpanded) -{ - HTREEITEM hItem; - WCHAR* wz = UtfToUnicode(pszText); - ULONG lLen = (ULONG)wcslen(wz); - TVINSERTSTRUCTW tvIns; - memset(&tvIns, 0, sizeof(tvIns)); - - tvIns.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM; - tvIns.item.pszText = wz; - tvIns.item.cchTextMax = lLen; - tvIns.item.iImage = iImage; - tvIns.item.iSelectedImage = iImage; - - tvIns.hInsertAfter = hInsAfter; - tvIns.hParent = hParent; - - hItem = (HTREEITEM)WszSendMessage(hwndTree, TVM_INSERTITEMW, 0, (LPARAM)(&tvIns)); - - return hItem; -} - -#ifdef _PREFAST_ -#pragma warning(push) -#pragma warning(disable:22018) // Suppress PREFast warning about Integer overflow/underflow -#endif -//ulen cannot be greater than GlobalBufferLen by the definition of ulen. Therefore it's safe to disable this warning here. -void AddMethodToGUI( - mdTypeDef cl, - ClassItem_t * pClassItem, - const char *pszNamespace, - const char *pszClassName, - const char *pszMethodName, - PCCOR_SIGNATURE pComSig, - unsigned cComSig, - mdMethodDef mbMethod, - DWORD dwAttrs -) -{ - HTREEITEM hParent; - char* szName; - ULONG ulLen,ulImageIndex; - BOOL wasDumpRTF; - - memset(GlobalBuffer,0,GlobalBufferLen); - sprintf_s(GlobalBuffer, GlobalBufferLen,g_fFullMemberInfo ? "method %s : ": "%s : ",pszMethodName); - InGlobalBuffer = (UINT32)strlen(GlobalBuffer); - ulLen = InGlobalBuffer; - wasDumpRTF = g_fDumpRTF; - g_fDumpRTF = FALSE; - mdToken tkVarOwner = g_tkVarOwner; - g_tkVarOwner = cl; - DumpMethod(mbMethod, pszClassName,VAL32(g_CORHeader->EntryPointToken),(void *)g_hwndTreeView,FALSE); - g_tkVarOwner = tkVarOwner; - g_fDumpRTF = wasDumpRTF; - GlobalBuffer[InGlobalBuffer-2] = 0; // get rid of \r\n - - szName = &GlobalBuffer[ulLen]; - - if(strstr(szName,"instance ") == szName) strcpy_s(szName,GlobalBufferLen-ulLen,szName+9); - - szName = GlobalBuffer; - - hParent = pClassItem->hItem; - - _ASSERTE(pClassItem->CurMember < pClassItem->SubItems); - - if((strchr(szName, '<'))&&(strchr(szName, '>'))) - { - ulImageIndex = IsMdStatic(dwAttrs) ? STATIC_METHOD_GEN_IMAGE_INDEX : METHOD_GEN_IMAGE_INDEX; - } - else - { - ulImageIndex = IsMdStatic(dwAttrs) ? STATIC_METHOD_IMAGE_INDEX : METHOD_IMAGE_INDEX; - } - - pClassItem->pMembers[pClassItem->CurMember].hItem = AddOneItem( - hParent, szName, TVI_LAST, ulImageIndex, g_hwndTreeView, FALSE - ); - pClassItem->pMembers[pClassItem->CurMember].Discriminator = TREEITEM_TYPE_MEMBER; - pClassItem->pMembers[pClassItem->CurMember].mbMember = mbMethod; - pClassItem->CurMember++; -} - -#ifdef _PREFAST_ -#pragma warning(pop) -#endif -BOOL NamespaceMatch(const char *pszNamespace, __in __nullterminated char *pszString) -{ - if (strncmp(pszNamespace, pszString, strlen(pszNamespace)) == 0) - { - if (pszString[ strlen(pszNamespace) ] == NAMESPACE_SEPARATOR_CHAR) - return TRUE; - } - - return FALSE; -} - -void AddFieldToGUI( - mdTypeDef cl, - ClassItem_t *pClassItem, - const char *pszNamespace, - const char *pszClassName, - const char *pszFieldName, - const char *pszSignature, - mdFieldDef mbField, - DWORD dwAttrs -) -{ - DWORD Dimensions; - ULONG ul1,ul2; - BOOL wasDumpRTF; - HTREEITEM hParent = pClassItem->hItem; - - Dimensions = 0; - - memset(GlobalBuffer,0,GlobalBufferLen); - sprintf_s(GlobalBuffer,GlobalBufferLen,g_fFullMemberInfo ? "field %s : " : "%s : ",pszFieldName); - InGlobalBuffer = (UINT32)strlen(GlobalBuffer); - GetClassLayout(cl,&ul1,&ul2); - wasDumpRTF = g_fDumpRTF; - g_fDumpRTF = FALSE; - DumpField(mbField, pszClassName,(void *)g_hwndTreeView,FALSE); - g_fDumpRTF = wasDumpRTF; - GlobalBuffer[InGlobalBuffer-2] = 0; // get rid of \r\n - char* pch = strchr(GlobalBuffer,'\r'); - if(pch) strcpy_s(pch,5," ..."); - _ASSERTE(pClassItem->CurMember < pClassItem->SubItems); - - pClassItem->pMembers[pClassItem->CurMember].mbMember = mbField; - pClassItem->pMembers[pClassItem->CurMember].Discriminator = TREEITEM_TYPE_MEMBER; - pClassItem->pMembers[pClassItem->CurMember++].hItem = AddOneItem( - hParent, - GlobalBuffer, //szType, - TVI_LAST, - (dwAttrs & mdStatic) ? STATIC_FIELD_IMAGE_INDEX : FIELD_IMAGE_INDEX, - g_hwndTreeView, - FALSE - ); -} - -void AddEventToGUI( - mdTypeDef cl, - ClassItem_t *pClassItem, - const char *pszNamespace, - const char *pszClassName, - DWORD dwClassAttrs, - mdEvent mbEvent -) -{ - DWORD Dimensions; - BOOL wasDumpRTF; - HTREEITEM hParent = pClassItem->hItem; - - Dimensions = 0; - - memset(GlobalBuffer,0,GlobalBufferLen); - if(g_fFullMemberInfo) strcpy_s(GlobalBuffer,GlobalBufferLen,"event "); - InGlobalBuffer = (UINT32)strlen(GlobalBuffer); - wasDumpRTF = g_fDumpRTF; - g_fDumpRTF = FALSE; - DumpEvent(mbEvent, pszClassName, dwClassAttrs, (void *)g_hwndTreeView, FALSE); //FALSE=don't dump the body - g_fDumpRTF = wasDumpRTF; - GlobalBuffer[InGlobalBuffer-2] = 0; // get rid of \r\n - - _ASSERTE(pClassItem->CurMember < pClassItem->SubItems); - - pClassItem->pMembers[pClassItem->CurMember].mbMember = mbEvent; - pClassItem->pMembers[pClassItem->CurMember].Discriminator = TREEITEM_TYPE_MEMBER; - pClassItem->pMembers[pClassItem->CurMember++].hItem = AddOneItem( - hParent, - GlobalBuffer, //szType, - TVI_LAST, - EVENT_IMAGE_INDEX, - g_hwndTreeView, - FALSE - ); -} - -void AddPropToGUI( - mdTypeDef cl, - ClassItem_t *pClassItem, - const char *pszNamespace, - const char *pszClassName, - DWORD dwClassAttrs, - mdProperty mbProp -) -{ - DWORD Dimensions; - BOOL wasDumpRTF; - HTREEITEM hParent = pClassItem->hItem; - - Dimensions = 0; - - memset(GlobalBuffer,0,GlobalBufferLen); - if(g_fFullMemberInfo) strcpy_s(GlobalBuffer,GlobalBufferLen,"prop "); - InGlobalBuffer = (UINT32)strlen(GlobalBuffer); - wasDumpRTF = g_fDumpRTF; - g_fDumpRTF = FALSE; - DumpProp(mbProp, pszClassName, dwClassAttrs, (void *)g_hwndTreeView, FALSE); //FALSE=don't dump the body - g_fDumpRTF = wasDumpRTF; - GlobalBuffer[InGlobalBuffer-2] = 0; // get rid of \r\n - - _ASSERTE(pClassItem->CurMember < pClassItem->SubItems); - - pClassItem->pMembers[pClassItem->CurMember].mbMember = mbProp; - pClassItem->pMembers[pClassItem->CurMember].Discriminator = TREEITEM_TYPE_MEMBER; - pClassItem->pMembers[pClassItem->CurMember++].hItem = AddOneItem( - hParent, - GlobalBuffer, //szType, - TVI_LAST, - PROP_IMAGE_INDEX, - g_hwndTreeView, - FALSE - ); -} - - - -HTREEITEM FindCreateNamespaceRoot(const char *pszNamespace) -{ - DWORD i; - HTREEITEM hRoot; - DWORD l = 0,ll; - - if (!pszNamespace || !*pszNamespace) - return g_hRoot; // not in a namespace, use tree root - - hRoot = g_hRoot; - for (i = 0; i < g_NumNamespaces; i++) - { - if (!strcmp(pszNamespace, (*g_NamespaceList)[i].pszNamespace)) - return (*g_NamespaceList)[i].hRoot; - } - for (i = 0; i < g_NumNamespaces; i++) - { - if(strstr(pszNamespace,(*g_NamespaceList)[i].pszNamespace) == pszNamespace) - { - ll = (DWORD)strlen((*g_NamespaceList)[i].pszNamespace); - if((ll > l)&&(pszNamespace[ll] == '.')) - { - hRoot = (*g_NamespaceList)[i].hRoot; - l = ll; - } - } - } - - hRoot = AddOneItem(hRoot, pszNamespace, TVI_LAST, NAMESPACE_IMAGE_INDEX, g_hwndTreeView, TRUE); - (*g_NamespaceList)[g_NumNamespaces].pszNamespace = pszNamespace; - (*g_NamespaceList)[g_NumNamespaces].hRoot = hRoot; - g_NumNamespaces++; - - return hRoot; -} - - -Namespace_t *FindNamespace(const char *pszNamespace) -{ - DWORD i; - - for (i = 0; i < g_NumNamespaces; i++) - { - if (!strcmp(pszNamespace, (*g_NamespaceList)[i].pszNamespace)) - return &(*g_NamespaceList)[i]; - } - - return NULL; -} - - -void GUICleanupClassItems() -{ - DWORD i; - WCHAR* sz=L"\0\0"; - - for (i = 0; i < g_NumClassItems; i++) - { - if((*g_ClassItemList)[i].pMembers) - { - delete[] (*g_ClassItemList)[i].pMembers; - (*g_ClassItemList)[i].pMembers = NULL; - } - } - for (i = 0; i < g_NumDisasmBoxes; i++) - { - PostMessageA((*g_DisasmBox)[i].hwndContainer,WM_CLOSE,0,0); - } - WszSendMessage(g_hwndAsmInfo,WM_SETTEXT,0,(LPARAM)sz); - EnableMenuItem(g_hMenu,(UINT)(UINT_PTR)g_hViewMenu, MF_GRAYED); - EnableMenuItem(g_hFileMenu,IDM_DUMP,MF_GRAYED); - EnableMenuItem(g_hFileMenu,IDM_DUMP_TREE,MF_GRAYED); -} - -// -// Add a new class tree node -// -ClassItem_t *AddClassToGUI( - mdTypeDef cl, - UINT uImageIndex, - const char *pszNamespace, - const char *pszClassName, - DWORD cSubItems, - HTREEITEM *phRoot // Returns the namespace root (NOT the class root) -) -{ - HTREEITEM hRoot; - - if(*phRoot) - hRoot = *phRoot; - else - { - hRoot = FindCreateNamespaceRoot(pszNamespace); - _ASSERTE(hRoot != NULL); - - *phRoot = hRoot; - } - - (*g_ClassItemList)[g_NumClassItems].hItem = AddOneItem(hRoot, pszClassName, TVI_LAST, uImageIndex, g_hwndTreeView, FALSE); - (*g_ClassItemList)[g_NumClassItems].cl = cl; - (*g_ClassItemList)[g_NumClassItems].SubItems = cSubItems; - (*g_ClassItemList)[g_NumClassItems].CurMember = 0; - - (*g_ClassItemList)[g_NumClassItems].pMembers = new (nothrow) TreeItem_t[cSubItems]; - - g_NumClassItems++; - - return &(*g_ClassItemList)[g_NumClassItems-1]; -} - - -void AddGlobalFunctions() -{ - HRESULT hr = S_OK; - HENUMInternal hEnumMethod; - mdToken FuncToken; - DWORD i; - HTREEITEM hNamespaceRoot = NULL; - DWORD NumGlobals; - - ClassItem_t* pClassItem = &(*g_ClassItemList)[0]; - - if (SUCCEEDED(g_pImport->EnumGlobalFieldsInit(&hEnumMethod))) - { - NumGlobals = g_pImport->EnumGetCount(&hEnumMethod); - MemberInfo* fields = new (nothrow) MemberInfo[NumGlobals]; - MemberInfo* curField = fields; - - for (i = 0; g_pImport->EnumNext(&hEnumMethod, &FuncToken); i++) - { - curField->token = FuncToken; - if (FAILED(g_pImport->GetFieldDefProps(FuncToken, &curField->dwAttrs)) || - FAILED(g_pImport->GetNameOfFieldDef(FuncToken, &curField->pszMemberName))) - { - curField->pszMemberName = "Invalid FieldDef record"; - } - MAKE_NAME_IF_NONE(curField->pszMemberName,FuncToken); - //curField->pComSig = g_pImport->GetSigOfFieldDef(FuncToken, &curMethod->cComSig); - curField++; - } - g_pImport->EnumClose(&hEnumMethod); - - _ASSERTE(curField - fields == (int) NumGlobals); - - if(g_fSortByName) qsort(fields, NumGlobals, sizeof MemberInfo, memberCmp); - - for(curField = fields; curField < &fields[NumGlobals];curField++) - { - if(g_fLimitedVisibility) - { - if(g_fHidePub && IsFdPublic(curField->dwAttrs)) continue; - if(g_fHidePriv && IsFdPrivate(curField->dwAttrs)) continue; - if(g_fHideFam && IsFdFamily(curField->dwAttrs)) continue; - if(g_fHideAsm && IsFdAssembly(curField->dwAttrs)) continue; - if(g_fHideFOA && IsFdFamORAssem(curField->dwAttrs)) continue; - if(g_fHideFAA && IsFdFamANDAssem(curField->dwAttrs)) continue; - if(g_fHidePrivScope && IsFdPrivateScope(curField->dwAttrs)) continue; - } - AddFieldToGUI(NULL, pClassItem, NULL, "Global Fields", curField->pszMemberName, NULL, curField->token, curField->dwAttrs); - } - delete[] fields; - } - if (FAILED(g_pImport->EnumGlobalFunctionsInit(&hEnumMethod))) - return; - - NumGlobals = g_pImport->EnumGetCount(&hEnumMethod); - MemberInfo* methods = new (nothrow) MemberInfo[NumGlobals]; - MemberInfo* curMethod = methods; - - for (i = 0; g_pImport->EnumNext(&hEnumMethod, &FuncToken); i++) - { - curMethod->token = FuncToken; - if (FAILED(g_pImport->GetMethodDefProps(FuncToken, &curMethod->dwAttrs)) || - FAILED(g_pImport->GetNameOfMethodDef(FuncToken, &curMethod->pszMemberName))) - { - curMethod->pszMemberName = "Invalid MethodDef record"; - } - MAKE_NAME_IF_NONE(curMethod->pszMemberName,FuncToken); - if (FAILED(g_pImport->GetSigOfMethodDef(FuncToken, &curMethod->cComSig, &curMethod->pComSig))) - { - curMethod->pszMemberName = "Invalid MethodDef record"; - curMethod->cComSig = 0; - curMethod->pComSig = NULL; - } - curMethod++; - } - g_pImport->EnumClose(&hEnumMethod); - - _ASSERTE(curMethod - methods == (int) NumGlobals); - - if(g_fSortByName) qsort(methods, NumGlobals, sizeof MemberInfo, memberCmp); - - for(curMethod = methods; curMethod < &methods[NumGlobals];curMethod++) - { - if(g_fLimitedVisibility) - { - if(g_fHidePub && IsMdPublic(curMethod->dwAttrs)) continue; - if(g_fHidePriv && IsMdPrivate(curMethod->dwAttrs)) continue; - if(g_fHideFam && IsMdFamily(curMethod->dwAttrs)) continue; - if(g_fHideAsm && IsMdAssem(curMethod->dwAttrs)) continue; - if(g_fHideFOA && IsMdFamORAssem(curMethod->dwAttrs)) continue; - if(g_fHideFAA && IsMdFamANDAssem(curMethod->dwAttrs)) continue; - if(g_fHidePrivScope && IsMdPrivateScope(curMethod->dwAttrs)) continue; - } - AddMethodToGUI(NULL, pClassItem, NULL, "Global Functions", curMethod->pszMemberName, curMethod->pComSig, curMethod->cComSig, curMethod->token, curMethod->dwAttrs); - } - delete[] methods; - return; -} - - -BOOL CreateMainWindow() -{ - DWORD dwStyle, dwStyleEx; - -// If only showing GUI's IL window, than we don't want to see the main window -// However, main window still manages our data, so we have to still create it. :( -// But we can "pretend" it's not there by hiding it (no WS_VISIBLE, and add WS_EX_TOOLWINDOW) - if (IsGuiILOnly()) { - dwStyle = WS_OVERLAPPEDWINDOW | WS_CAPTION | WS_POPUP | WS_SIZEBOX; - dwStyleEx = WS_EX_TOOLWINDOW; - } else { - dwStyle = WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CAPTION | WS_POPUP | WS_SIZEBOX; - dwStyleEx = WS_EX_CLIENTEDGE; - } - g_hwndMain = WszCreateWindowEx(dwStyleEx, - MAIN_WINDOW_CLASSW, - L"IL DASM ", //MAIN_WINDOW_CAPTIONW, - dwStyle, - guiInfo.x, - guiInfo.y, - guiInfo.w, - guiInfo.h, - NULL, - g_hMenu, // menu - g_hInstance, // hinst - NULL - ); - if (g_hwndMain == NULL) - return FALSE; - DragAcceptFiles(g_hwndMain,TRUE); - SendMessageA(g_hwndMain,WM_SETTEXT, 0, (LPARAM)"IL DASM "); - return TRUE; -} - - -// -// Given a CL token, find the classitem for it -// -ClassItem_t *FindClassItem(mdTypeDef cl) -{ - DWORD i; - - for (i = 0; i < g_NumClassItems; i++) - { - if ((*g_ClassItemList)[i].cl == cl) - return &(*g_ClassItemList)[i]; - } - - return NULL; -} - - -// -// Given a class name, find the classitem for it (may fail) -// -ClassItem_t *FindClassItem(__in_opt __nullterminated char *pszFindNamespace, __in __nullterminated char *pszFindName) -{ - DWORD i; - - for (i = 0; i < g_NumClassItems; i++) - { - const char *pszClassName; - const char *pszNamespace; - - if((*g_ClassItemList)[i].cl) - { - - if (FAILED(g_pImport->GetNameOfTypeDef( - (*g_ClassItemList)[i].cl, - &pszClassName, - &pszNamespace))) - { - pszClassName = pszNamespace = "Invalid TypeDef record"; - } - MAKE_NAME_IF_NONE(pszClassName,(*g_ClassItemList)[i].cl); - - if (!strcmp(pszFindName, pszClassName)) - { - if ((((pszFindNamespace == NULL)||(*pszFindNamespace == 0)) - &&((pszNamespace == NULL)||(*pszNamespace == 0))) - ||(!strcmp(pszFindNamespace, pszNamespace))) - return &(*g_ClassItemList)[i]; - } - } - } - //MessageBox(NULL,pszFindName,"Class Not Found",MB_OK); - return NULL; -} - - -ClassItem_t *FindClassItem(HTREEITEM hItem) -{ - DWORD i; - - for (i = 0; i < g_NumClassItems; i++) - { - if ((*g_ClassItemList)[i].hItem == hItem) - return &(*g_ClassItemList)[i]; - } - - return NULL; -} - - -// -// Init GUI components -// -BOOL CreateGUI() -{ - - if (InitGUI() == FALSE) - return FALSE; - - // Register the window class for the main window. - if (CreateMainWindow() == FALSE) - return FALSE; - - g_hwndTreeView = CreateTreeView(g_hwndMain); - if (g_hwndTreeView == NULL) - return FALSE; - - return 0; -} - - -// -// This is the main loop which the disassembler sits in when in GUI mode -// -void GUIMainLoop() -{ - MSG msg; - HACCEL hAccel = NULL; - - _ASSERTE(g_hResources != NULL); - hAccel = WszLoadAccelerators(g_hResources,L"FileAccel"); - // Accelerator tables are released when the app exits - while (WszGetMessage(&msg, (HWND) NULL, 0, 0)) - { - // Dispatch message to appropriate window - if((g_hFindText == NULL)|| !WszIsDialogMessage(g_hFindText,&msg)) - { - if(hAccel && WszTranslateAccelerator(g_hwndMain,hAccel,&msg)); - else - { - TranslateMessage(&msg); - WszDispatchMessage(&msg); - } - } - } - GUICleanupClassItems(); -} -// Dump one tree item to a text file (calls itself recursively) -void DumpTreeItem(HTREEITEM hSelf, FILE* pFile, __inout __nullterminated WCHAR* szIndent) -{ - HTREEITEM hNext; - TVITEMEXW tvi; - static WCHAR szText[2048]; - WCHAR* wzString = (WCHAR*)GlobalBuffer; - tvi.mask = TVIF_HANDLE | TVIF_IMAGE | TVIF_TEXT; - tvi.hItem = hSelf; - tvi.pszText = szText; - tvi.cchTextMax = 2047; - if(WszSendMessage(g_hwndTreeView,TVM_GETITEMW,0,(LPARAM)(&tvi))) - { - WCHAR* szType = NULL; - if(hSelf == g_hRoot) szType = L"MOD"; - else - { - switch(tvi.iImage) - { - case CLASS_IMAGE_INDEX: szType = L"CLS"; break; - case EVENT_IMAGE_INDEX: szType = L"EVT"; break; - case FIELD_IMAGE_INDEX: szType = L"FLD"; break; - case NAMESPACE_IMAGE_INDEX: szType = L"NSP"; break; - case METHOD_IMAGE_INDEX: szType = L"MET"; break; - case PROP_IMAGE_INDEX: szType = L"PTY"; break; - case STATIC_FIELD_IMAGE_INDEX: szType = L"STF"; break; - case STATIC_METHOD_IMAGE_INDEX: szType = L"STM"; break; - case CLASSENUM_IMAGE_INDEX: szType = L"ENU"; break; - case CLASSINT_IMAGE_INDEX: szType = L"INT"; break; - case CLASSVAL_IMAGE_INDEX: szType = L"VCL"; break; - } - } - if(szType) swprintf_s(wzString,4096,L"%s___[%s] %s",szIndent,szType,szText); - else swprintf_s(wzString,4096,L"%s %s",szIndent,szText); - } - else swprintf_s(wzString,4096,L"%sGetItemW failed",szIndent); - printLineW(pFile,wzString); - *wzString = 0; - if(hNext = TreeView_GetChild(g_hwndTreeView,hSelf)) - { - wcscat_s(szIndent,MAX_FILENAME_LENGTH,L" |"); - - do { - DumpTreeItem(hNext,pFile,szIndent); - } while(hNext = TreeView_GetNextSibling(g_hwndTreeView,hNext)); - - szIndent[wcslen(szIndent)-4] = 0; - printLineW(pFile,szIndent); - } -} -#endif diff --git a/src/coreclr/src/ildasm/gui.h b/src/coreclr/src/ildasm/gui.h deleted file mode 100644 index 71a581b..0000000 --- a/src/coreclr/src/ildasm/gui.h +++ /dev/null @@ -1,155 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#include "dynamicarray.h" - -#define BITMAP_WIDTH 15 -#define BITMAP_HEIGHT 15 - -#define DISASSEMBLY_CLASS_NAME "disassembly" -#define MAIN_WINDOW_CLASS "dasm" -#define MAIN_WINDOW_CAPTION "IL DASM" - -#define DISASSEMBLY_CLASS_NAMEW L"disassembly" -#define MAIN_WINDOW_CLASSW L"dasm" -#define MAIN_WINDOW_CAPTIONW L"IL DASM\0" - -#define PHDC (pDIS->hDC) -#define PRC (pDIS->rcItem) - -#define PADDING 28 - -#define ID_TREEVIEW 1 -#define ID_LISTBOX 2 - -typedef struct -{ - const char *pszNamespace; - HTREEITEM hRoot; -} Namespace_t; - - -// -// Menu info -// -enum -{ - IDM_PROGRESS, - IDM_OPEN, - IDM_DUMP, - IDM_DUMP_TREE, - IDM_EXIT, - IDM_SORT_BY_NAME, - IDM_SHOW_PUB, - IDM_SHOW_PRIV, - IDM_SHOW_FAM, - IDM_SHOW_ASM, - IDM_SHOW_FAA, - IDM_SHOW_FOA, - IDM_SHOW_PSCOPE, - IDM_FULL_INFO, - IDM_BYTES, - IDM_TOKENS, - IDM_SOURCELINES, - IDM_EXPANDTRY, - IDM_QUOTEALLNAMES, - IDM_SHOW_HEADER, - IDM_SHOW_STAT, - IDM_SHOW_METAINFO, - IDM_MI_DEBUG, - IDM_MI_HEADER, - IDM_MI_HEX, - IDM_MI_CSV, - IDM_MI_UNREX, - IDM_MI_SCHEMA, - IDM_MI_RAW, - IDM_MI_HEAPS, - IDM_MI_VALIDATE, - IDM_HELP, - IDM_ABOUT, - IDM_FONT_TREE, - IDM_FONT_DASM, - IDM_FIND, - IDM_FINDNEXT, - IDM_TREEVIEWFCN, - IDM_CAVERBAL, - IDM_DUMPRTF -}; - - -// -// Bitmaps - keep in same order as in dasm.rc file -// -enum -{ - CLASS_IMAGE_INDEX, - EVENT_IMAGE_INDEX, - METHOD_IMAGE_INDEX, - NAMESPACE_IMAGE_INDEX, - FIELD_IMAGE_INDEX, - PROP_IMAGE_INDEX, - STATIC_METHOD_IMAGE_INDEX, - STATIC_FIELD_IMAGE_INDEX, - RED_ARROW_IMAGE_INDEX, - CLASSENUM_IMAGE_INDEX, - CLASSINT_IMAGE_INDEX, - CLASSVAL_IMAGE_INDEX, - CLASS_GEN_IMAGE_INDEX, - METHOD_GEN_IMAGE_INDEX, - STATIC_METHOD_GEN_IMAGE_INDEX, - CLASSENUM_GEN_IMAGE_INDEX, - CLASSINT_GEN_IMAGE_INDEX, - CLASSVAL_GEN_IMAGE_INDEX, - LAST_IMAGE_INDEX -}; - -#define TREEITEM_TYPE_MEMBER 1 -#define TREEITEM_TYPE_INFO 2 - -// Member items and info items (under classes) -typedef struct -{ - HTREEITEM hItem; - union - { - mdToken mbMember; - char * pszText; // if an info item (extends or implements some class) - }; - BYTE Discriminator; -} TreeItem_t; - -// Class items (under the root) -typedef struct -{ - HTREEITEM hItem; - mdTypeDef cl; - TreeItem_t *pMembers; // List of subitems - DWORD SubItems; // Number of subitems - DWORD CurMember; // Used when building member list -} ClassItem_t; - -typedef struct -{ - HWND hwndContainer; - HWND hwndChild; - HMENU hMenu; - mdToken tkClass; - mdToken tkMember; - WCHAR wzFind[120]; - FINDREPLACEW strFR; -} DisasmBox_t; - - - -// For accessing metadata -extern IMDInternalImport* g_pImport; -extern PELoader * g_pPELoader; -extern IMetaDataImport2* g_pPubImport; - -//extern DynamicArray g_cl_list; -extern mdToken * g_cl_list; -//extern DynamicArray g_cl_enclosing; -extern mdToken * g_cl_enclosing; -extern mdTypeDef g_cl_module; -extern DWORD g_NumClasses; diff --git a/src/coreclr/src/ildasm/html/clicking.htm b/src/coreclr/src/ildasm/html/clicking.htm deleted file mode 100644 index 828193c..0000000 --- a/src/coreclr/src/ildasm/html/clicking.htm +++ /dev/null @@ -1,35 +0,0 @@ - - - - -Clicking on Tree View Items - - - - - - - -

-CLICKING ON TREE VIEW ITEMS

-

 

- - -

Double-clicking on various tree view items results in the following actions: -

    -
  • On namespace or any type of class - expanding/collapsing respective subtree

  • -
  • On manifest, field, method, event, property - showing disassembly of the item in a separate window

  • -
  • On .class info item - showing partial disassembly of the class in a separate window

  • -
  • On extends info item - selecting the parent class (if present) in tree view

  • -
  • On implements info item - selecting the implemented interface (if present) in tree view

  • -
-
- - - diff --git a/src/coreclr/src/ildasm/html/keyboard.htm b/src/coreclr/src/ildasm/html/keyboard.htm deleted file mode 100644 index 6730adc..0000000 --- a/src/coreclr/src/ildasm/html/keyboard.htm +++ /dev/null @@ -1,166 +0,0 @@ - - - - -Keyboard Commands - - - - - - - -

-KEYBOARD COMMANDS

-

 

- - - -

Hot keys:

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - Ctrl+O - - - - open a file
- - - - Ctrl+D - - - - - - disassemble the loaded file into IL source file
- - - - Ctrl+T - - - - dump fully expanded tree view into a text file
- - - - Ctrl+M - - - - show metadata info in a disassembly window (advanced mode only)
- - - - Ctrl+X - - - - exit
- - - - F1 or - Alt+H - - - - Show this help window
-
-

 

- -

- -

In tree view:

- -
- - - - - - - - - - - - - - - - - -
- - - - Enter - - - - similar to double clicking (see above)
- - - - Cursor right - - - - expand subtree
- - - - Cursor left - - - - collapse subtree
- - - - Cursor up/down - - - - select previous/next item
-
-
-
- - diff --git a/src/coreclr/src/ildasm/html/menu_options.htm b/src/coreclr/src/ildasm/html/menu_options.htm deleted file mode 100644 index d96f59a..0000000 --- a/src/coreclr/src/ildasm/html/menu_options.htm +++ /dev/null @@ -1,324 +0,0 @@ - - - - -Menu Options - - - - - - - -

MENU OPTIONS

- -

 

-

File (Alt+F)

- -
- - - - - - - - - - - - - - - - - -
- - Open (Ctrl+O) - - select a PE file to open
- - Dump (Ctrl+D) - - dump the current PE file to an IL source file
- - Dump TreeView (Ctrl+T) - - dump the fully expanded tree view of current PE file to a text file
- - Exit (Ctrl+X) - - close the current PE file and exit
-
-
-

-

- -

 

-

View (Alt+V)

- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - Set Fonts - - - set the fonts for tree view and disassembly windows. Default fonts - are MS Sans Serif 8 for tree view and Courier 10 for Disassembly - windows
- - - Sort by name - - - (on/off) sort the items in tree view by name
- - - Show Public - - - (on/off) show or dump the items having public accessibility
- - - Show Private - - - (on/off) show or dump the items having private accessibility
- - - Show Family - - - (on/off) show or dump the items having family accessibility
- - - Show Assembly - - - (on/off) show or dump the items having assembly accessibility
- - - Show FamANDAssem - - - (on/off) show or dump the items having family-and-assembly - accessibility
- - - Show FamORAssem - - - (on/off) show or dump the items having family-or-assembly - accessibility
- - - Show PrivateScope - - - (on/off) show or dump the items having private scope accessibility
- - - Show Member Types - - - (on/off) show types of members ('method','field',etc.) in tree view nodes
- - - Show bytes - - - - - (on/off) show the actual IL code in hexadecimal (as comments) when - disassembling the methods
- - - Show token values - - - (on/off) show token values in hexadecimal (as comments)
- - - Show source lines - - - (on/off) show the original source code (as comments, if the original - source is available)
- - - Quote all names - - - (on/off) include all names in single quotes (when off, only illegal - names are quoted)
- - - Expand try/catch - - - (on/off) present SEH clauses in expanded form when possible (try { ... } catch ExceptionClass { ... })
- - - COR Header - - - show contents of COR header in a disassembly window"
- - - Statistics
- (advanced mode only)
- - - show PE file statistics in a disassembly window
- - - MetaInfo
- (advanced mode only)
- - - Header - - - - - (on/off) show metadata info as header summary
- - - More HEX - - - (on/off) show token and attribute values (in hexadecimal) in - metadata info
- - - CSV - - - (on/off) show metadata info as comma-separated values
- - - Unresolved ext - - - (on/off) add list of unresolved external references to metadata info
- - - Validate - - - (on/off) show metadata validation results
- - - Show! (Ctrl+M) - - - show the metadata info in a disassembly window
-
-
-
- - \ No newline at end of file diff --git a/src/coreclr/src/ildasm/html/tree_view_icons.htm b/src/coreclr/src/ildasm/html/tree_view_icons.htm deleted file mode 100644 index d39e7e8..0000000 --- a/src/coreclr/src/ildasm/html/tree_view_icons.htm +++ /dev/null @@ -1,102 +0,0 @@ - - - - -Tree View Icons - - - - - - - - -

-TREE VIEW ICONS

-

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Namespace - (Blue shield)
Class - (Blue rectangle with three outputs)
Interface - (Blue rectangle with three outputs marked 'I')
Value Class - (Brown rectangle with three outputs)
Enum - (Brown rectangle with three outputs marked 'E')
Method - (Magenta rectangle)
Static method - (Magenta rectangle marked 'S')
Field - (Cyan diamond)
Static field - (Cyan diamond marked 'S')
Event - (Green point-down triangle)
Property - (Red point-up triangle)
Manifest or a class info item - (Red point-right triangle)
- -
- - \ No newline at end of file diff --git a/src/coreclr/src/ildasm/html/tree_view_icons_files/class.gif b/src/coreclr/src/ildasm/html/tree_view_icons_files/class.gif deleted file mode 100644 index 53d1494a33333e419d9201d08692b0ccb9c4227b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 960 zcmZ8fJ&ey$5S&vv!d>Gdagn9)6%jfYipk+Vh&WWbrBO*FS12?S5)x5qv|C)15{cgC zq7a2zp;)2ODJVqox9=*vj^yT(DYgbnPDp)wX{`0@IU7a?4clpK|uybSVsa;1d3dcL# zkTZDPr#81X5A~mvy*}lO_upx7gA8FvLm5CALBa_UK_pQG9Oj_I9dd*t9p&hLCQxv7 zV}y`GHCDg^40u3+2xOoFNLYdiPbd+IOjH5|E3n`N6{3)ZDgd-G4t;G3q_2U<5N*!Ir~v zH1(vCk<4TzTO%trk{4BsViv22p>DU64|x=Wvk^NyMKE1*7+w}_U(WBZuaKF)7^(3ync7}%hHoW Vm!8cXeYL*yeE+#eKlaYz%pasrd)@#5 diff --git a/src/coreclr/src/ildasm/html/tree_view_icons_files/enum.gif b/src/coreclr/src/ildasm/html/tree_view_icons_files/enum.gif deleted file mode 100644 index af7a94ee0b7bdf9040b8c63e12b625710eca4b6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmZ8fJ8P9e5Iw0(eB^-!kpvlyNRVLE%Amy%@#cY|#6r`JPtpj&Eo=mjS_BJ0{RIOF zDXlCl1P2id5y9SK#L7+!K~T8PrcxJ{{l3|mIdjh0xrNU0nae{M!fhPg*V}gX!nsao z;neAw!$)=i=<6=c&EnaI@vr#za(7*ByV*T={;z`Blj}eJOB=1Ufm`#-U10Ea+kK;x zi^Nog3vvjnb#ila^I-jvQR`D|y!)mC6HwrS5TpPKQK-TcRJbA(senNYYA^#0ZU{pf zs-F-_7^^Xy2qFv1Ar5tzgAR9uBOM4xKm!(FzylG;01}eWge92pL?ki+sI+m^8i;x; z)r8iRBC4V$N>LXL(G;!R3fD4Ks=8{ZW;HMsYf&?$shfsrniff6OEoH~P7P{Oi@A8K zH&?p4Yq+Ls$sy62S|~$3G(t19G?LUpvQ(yeYNTc=n!44F*5si#(oC>a6KU8cq|k*S zOd%SZHjuS(3b{b4A4^}cHl-P9bYmFPs%2GIV#V5WGRP#$32_!5tB}*3;Y?@QBf%nR zl^6721T$EkNwSz*6(>Cz$xNcXi=tODMUke3N$cnmA(2w%ln+fH(+1;B zo>HRuE!I>sYuIiP7HK6$@h*zRrVZqbU?I1cA>Q;gZ&SKQc%&D2;Z)12uEdH(@7Fi? zb&|b$EIsr#k2>qCR{urZ9T=Z~{QlL0UjL!r*M~n(Uml*Ay*9tGf6u+0TehyPjC|=l z+CFmd&d={x=T{F*3_ic~ac%M5)b!IgFP7Hl?vIV_eK~OK#^S@7<-=1e-N`dgdRN}= J+B1w3e*oGpgZ}^k diff --git a/src/coreclr/src/ildasm/html/tree_view_icons_files/event.gif b/src/coreclr/src/ildasm/html/tree_view_icons_files/event.gif deleted file mode 100644 index 00de688ab80fc600209b78104e5f0f81ede4c7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 963 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 X|M%AArzaonxbphw{L5=^g?)bjG#r1a diff --git a/src/coreclr/src/ildasm/html/tree_view_icons_files/namespace.gif b/src/coreclr/src/ildasm/html/tree_view_icons_files/namespace.gif deleted file mode 100644 index 4001293dc02b4cbb5beec1c38e26f53f3db684a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmZ8f&#TW-5IthyM?595cxn`d5LSdbk@p^@=f}!MW2=PTf(3Q5A;sS?UN1}W9}J>M z{sN0hZ^O#Qiu#)SR=9P$pU>QxIdjgrvu9_H9=kS$Dcr%~os$jcFVD}+oIQQ!*ug^^ z0jyfMGI><`3rv)oI0`e^S`vMown}Q+?54j)0?qZZQXND*x%uX zoWjFCwX(HxsQ;ww^(CKw{6T{oWC%kV$^gO$5>AK+B8ej4Fb5s(kRu%FC`b1*fr6_W zBZL&Hu>uxgzyk_IAOjUZ!V*k)LWxLZq7o=rfdwz95QQvM0ica>=mUf?N?Bk}X+|2| zC}SAYSjNuna4#oC2AO1a1E=|jx>L?@rn8()(lk$fFpfRZy#DHn80!Q<&0JCJZ)XARps2a)Wd~ zwZ7(KN_WW>u5^`m%dYOkj*S&kN+q=u7HU4;p-_Y}RH3%VQcco3FBPdwRjNI+QZx51 zE=4IzRl;}|O|RYVr1r4wYG;OvWR$};VK2&ob*x{L; zxj3>3;#BafG1G4%BqQ$}P)Ry26ybjz;p#E#|U*N=!LNt1po6HHc)KKrZJ z+B2A}o1S|ad2j8OeY<$!+1q<-wy$5FeYN=R(dq-&mml8#`u_2b$^A8ZFD}nL-95kf d>F$xG4^IxByt@C&t>>>F9KQMe_qNSA{s$)GftCOO diff --git a/src/coreclr/src/ildasm/html/tree_view_icons_files/property.gif b/src/coreclr/src/ildasm/html/tree_view_icons_files/property.gif deleted file mode 100644 index 08edbf854ceb6bf3b025ee2828ca927272859b6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 961 zcmZ8fyK9$05S(-d9|1AOLS<7379xrk{_r*Uhz}4$tZZb3w1SYrMsPZ91hvq{VvArY z{s|jF5D{w&ixq6_(pXvi+)Je%9QS>DyE{8GcjemBsma|r%;5o!FHX1LxOH=B>DtB1 zlcUFW0+?A_xpDz-zwG~se=isMa{Ilto6CO{TsX7->%X-5PMf`d_4XRD>;2d>^M|hs zM>^b)b9mgRwzjqo^`DfzzU7-wn>4sVhA^a|3?Pgk;e?1Fk|+WWbI{=qIl_^Sa&$iv zD7d;YLP((+D_{WzJfJ`XGEe~|EWv~)l!!zoDuIF(Snz@hQOH6S0NNObK0p|wlm+&b zW~9-LGKMjYW$fGz_i|EXkV#fIaGH;(JLL>#I?LH4O(WGsi6N#~Vl%fG^&V6(f*Gt} z%V9a1dQ!x7*2wJc>bD1+{8s1KUk9g(*#C!eBE7@-a>$ zH%RwW>uWxybeCM=N>_Qe?CMVJ*jOQ@R8l)(q2}Wq3PmVG6>57d)g-<1QjyA3rP?zq zHFNLcQk1e(C5(5`^xExCY7g74c4oL}HneaX9m6s$%i5gwVF=_LFfrt5C5GSTLpAq- z9iHh~-eNTGrr2!8K%q=E@^~2*Ltl?EWkhCVMT0j^x9sXp>{w2JZ$_+3n)YLvV!Czo z*FwoqYWJE)8ywAq;6K0|+BXI3Xg4B#MB;9CWxt zj&P)-9No_Z3a)O95K^ed3Rr*v4=50U3{(IKOEBRHB_ffDN}yl`7QCQB6tYkSfHuaV z4-m#EWr01V8EJH*jA2Y;89TSby_^&oWRleloaQ6yPC3Jw&T=+M(@1quVu&f0*vu_P zy$2PHUVfDnXF`MWW`4EqKZ+>Vihse?RN4Zk7AHkL9LqEz;=^NVM`2k+QYW1of$5g4K3V8$FNMxvNorE7y>y5ObmHi ziQ%{TP|bZ{hi7`0w;0X4DK?uiP$*N4JYI&y(AQ&38Ic)T(cq2KExWoCJC>8zyAj)x zCjD3@nCu;W_E)dzHB4rXTzVSM@BKG-=${uGFM03H;_+{%9~@oz`NPv!Z~VDsFMc|F zZvUr$KU-Y+;)CC|c9y=n`F!fcwYf9X505>1wExy$ca{zuU;Ab9p4;en@pAZiIQ05m4Co^D>2g@8W?O+ zVjx2UgFVE^#OSJ@eeMXSPUrjf*?X_O);h;d%{8e!H(6e9vrLFI@<=2j1m;kHaj=g04_LIWS z4macs9`&ikt;IwACuOg%`TXNg8r&d57}8J%5Jr%2LPQWr6aj}h=x~P|;Yde0x}OOY zT-_KUq)?3&umA%dP#^*sr~nd{V8RnhL?RQFK*0(uctM3IWT6TGZHz-7AdFGU0((j` z(&$DR!G z&-5&BF`9Q%Y&K({P^KDrybOz>ug91&A~Uk0!5gPrc6BFqET;=UBc4f`_G6i1x_I>2 zU%i&iVY+k`u%11m7@xC;9mzGu*&zv}V zY#V^7wad#3c=>7e8~(lA)t6gutzBIGt6<^O`p^H;c68d7+h?z?0o&h>J+lSZjd1iX($5-BS<(QB8Vi4fWsVgxI>O`q@x_&&jbpt zZj2C8sKyFdfB_FE5P=L-00~Pl;Rz)ok%>y6Ua zj;5YeGLo6BWNT!_M)IPHQOsf$G1TpL@*$66kXAvhn%Tg1lT2YsQ<*T>jDdWN)5s0d z{nYxJk15?HSGdwu-YvVj6FW9mNGX-nPFSe)+J5)u}m=8IQs0b zUYk$h-j><3Pd~nSFxhh;r)H|?2w_kQNu!jqi`?!SJ2>Fe_2 W{pX*}9(uLD{CsZl;g8)jIQa*i0ejW} diff --git a/src/coreclr/src/ildasm/ildasm.chm b/src/coreclr/src/ildasm/ildasm.chm deleted file mode 100644 index 166b1ca93693d89a8fd41471ae2841dae04da7b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18371 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 diff --git a/src/coreclr/src/ildasm/ildasm.hhp b/src/coreclr/src/ildasm/ildasm.hhp deleted file mode 100644 index 71d47f5..0000000 --- a/src/coreclr/src/ildasm/ildasm.hhp +++ /dev/null @@ -1,36 +0,0 @@ -[OPTIONS] -Binary Index=No -Compatibility=1.1 or later -Compiled file=ildasm.chm -Contents file=dasmhlp.hhc -Default Font=Arial,8,0 -Default Window=Main -Default topic=html\menu_options.htm -Display compile progress=No -Full-text search=Yes -Language=0x409 English (United States) -Title=MSIL Disassembler Help - -[WINDOWS] -Main="MSIL Disassembler Help","dasmhlp.hhc",,"html\menu_options.htm","html\menu_options.htm",,,,,0x42520,185,0x3006,[253,102,1070,702],,0x8,,,,,0 - - -[FILES] -html\clicking.htm -html\keyboard.htm -html\menu_options.htm -html\tree_view_icons.htm -ildasm.hhp -map.h - -[ALIAS] -CLICKING=html\clicking.htm -KEYBOARD=html\keyboard.htm -MENU_OPTIONS=html\menu_options.htm -TREE_VIEW_ICONS=html\tree_view_icons.htm - -[MAP] -#include map.h - -[INFOTYPES] - diff --git a/src/coreclr/src/ildasm/map.h b/src/coreclr/src/ildasm/map.h deleted file mode 100644 index 5f0cfec..0000000 --- a/src/coreclr/src/ildasm/map.h +++ /dev/null @@ -1,8 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#define MENU_OPTIONS 1 -#define TREE_VIEW_ICONS 2 -#define CLICKING 3 -#define KEYBOARD 4 diff --git a/src/coreclr/src/ildasm/method.bmp b/src/coreclr/src/ildasm/method.bmp deleted file mode 100644 index b76bb93ef75aa7383609e37d9749d6b5f24768da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmc)Iv5gc#5QX7~#7cOiP!=Kr>=HgXR46Z$G7xc;O$-AJplvBW9+1XsG68O@K;)Aw&uBntcxjloJO z1n6YJXbe^=A&_8DMq{wg?+r3hFdBoE=&A#Wg3%Z(A1MS91*0)oiBlU$6pY4TmEtoM zc(j7i80?u^1equpjlrI2XOM}4(HQJmk_s|WFdBnB%jF;w1*0+8vy>fVqF^)zdzN{E zOcad9V6QF64Kh(M8iSRYzZH1Qyzpp^!O9^75(T3%*t2aJWTId+279)&f=m>Q#$eBO z^AbBzFdBnBrO-hp3PxkFr%WcuM8Rkb_9`K7kcooP7_5f*j{=E;(Rj2yr4>OY3PxkF zr|dGwM8Rkb_LO7=nJ5^I!Jcw;kcooP80;zK4l+?N8iPG$K0zi5M(gS4U0-?5{GW8c lPTlX19%zqSkMZBfYvbF?aXtSsy4|kvuRq6sAOFjIegj7`0dW8T diff --git a/src/coreclr/src/ildasm/methodg.bmp b/src/coreclr/src/ildasm/methodg.bmp deleted file mode 100644 index dfa4c68c10e862b0a8750fdbf6007752d53913a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmciAF^&{L425AMF%l76!4cXM5L@Kj!AE&Vaj@bX4mRQp1U|y#Xf^!Zo*fB^fQYL8 z`c?I`x~IDQ_1ou*o$bqevnNKM?%vsl^ZJ$Z%g1$Ic${R$VbTU?hSuHIKijT9zMFX< z!4F<&j9C~Q3?d;E8e^6QM}SERg~r_9>trAy6dGg3(8>`=2!+P*Ck>83LMSxGjKjte zNC<_-SQvlP97j(Gg~sgC+{r*fC^Tl59Zm)kLZLDHNz%zcLMSw5KbM>gB!og^_EVOV zfrLqfJC^W{z`elw|<%y#g8e?*UBajdZjoEDrCj$wg(3suQ zbTW_-3XR$A<|R@fAru<3rBF@=5<;OdTPE#fAR!bQbC!_C$v{FVG{&0sw>bg{p>Xus z(sCyQ38B!KExT|skPr%u*^*2r0|}wfm@QX18Au3)#%w8k0 diff --git a/src/coreclr/src/ildasm/namespace.bmp b/src/coreclr/src/ildasm/namespace.bmp deleted file mode 100644 index 6ac839ee65028c0d12017ca8d32e5e2a4268864a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmciAF^&{L425AMEfN`5aD+Gku|>`ue3W+-2Z(bx<_rWr!lWyZhQHdgE0Bn(?yq0D zX0_eb?ayC6ytQk5dNTXS?ES+Vdv~qhuIs-pGUGI9gDX?(ZtEXyx9{J~JdofAFEqw1 z3=Srd5DJYkOM@dokwT#{kNY|qNC<_-m@&0-1QJ4_F+8Nf5l9Gy#+Y&1I06Zw&=?Ej zG0ky~givVAZq1zxB!og^cH7}(AR!bQv#%tb3?zg?WA=5)$v{FVG-h9AIT=U@g~se_ zZYKi?q0pG?6T~?`H;%vvlge$4mY6wCh{{V(iLQpYpMA>MeJH`lY-U{zLuzI(S6x_gX%)hx2@Y G4*LzKv<)l( diff --git a/src/coreclr/src/ildasm/prop.bmp b/src/coreclr/src/ildasm/prop.bmp deleted file mode 100644 index 857e69c3feb94049b26aa1eda449190f52b5d773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFKaSNv499UJfka314&Vyy38*c4?%<>NC@xl8v!bf=R6GiyWI9V37lYH_U zXQE90%=aH(Kgn+2K8ifi`*QjqpZEFuKE8Jd5q61~;7C`hO6sNL{_CfR8XOF0qR=8H zP|z_)AW>)$7bpxA9!M1WoL5PMBakSx2wh2q!4XIlnuio9430pe&?4;83WFn%D72XH zn4(ylBakTcyqYR$a0C*Cp4T=d4URyf(DO-LNrNMhDD-@;P}1NCBnmyBGLbG*g_hv`Llo=H9cxPzT0#X1gCmeA^!zqc(%=Xr3O&Enl{7d4 zi9*lsW|9blBakTcEQM6k;0PoNJbG*g`Q<+N*Wx2M4@L%x{?M*AW`U9uA!vC5l9qzmU1d-a0C*Co@HK28XSR?`|m@Z zxh}Y$$gy`hj@1L(I<@M5+dK8`Z`;>D{;QA2*>1PF-)nu{e@?97neVLE%roCQv4`K* cYxsJ;YxqsQhp+m0teexW=ReEWdPW)l1D10J5&!@I diff --git a/src/coreclr/src/ildasm/rcdll/CMakeLists.txt b/src/coreclr/src/ildasm/rcdll/CMakeLists.txt index 5fb49da..316f778 100644 --- a/src/coreclr/src/ildasm/rcdll/CMakeLists.txt +++ b/src/coreclr/src/ildasm/rcdll/CMakeLists.txt @@ -24,4 +24,4 @@ target_link_libraries(ildasmrc ${STATIC_MT_VCRT_LIB} ) -install_clr (ildasmrc) \ No newline at end of file +install_clr (ildasmrc) diff --git a/src/coreclr/src/ildasm/redarrow.bmp b/src/coreclr/src/ildasm/redarrow.bmp deleted file mode 100644 index ce94dc8fb29e6ea7ab5a3bcd0c069a497a7b4165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmajdF|O25425AMfkcPI3S1#pKyA^p2QT6+;4H-jVjZqo1BI6`?GwfDC!U%2kdT<< z%elUZCb@~fe*5&!&fk}}W}g{-xOrpm&-n|-r;qELcpPNLZqf!vhSuHIzuGQ8f0%h7 z!3i%k#w-jD29Xd7jWJ7uBS4Wtp)t4nIvGd^g~pgMv~mOzLZLA{q`?tL2!+O&vD-KT z38By!3*#}(acl{p(3oACI~hm_g~sf%!^uEGC^TkYNje!w2!+P%>ynd!givVAzRGek zkPr%u+1K1o1`0}@w6dJRio0~|1givVAwn8}>NC<_-Y@4)`frLb>Qo RzCFRczCX~dzL)=B&mW89Cu0Br diff --git a/src/coreclr/src/ildasm/resource.h b/src/coreclr/src/ildasm/resource.h index ae126fa..6d7d1e8 100644 --- a/src/coreclr/src/ildasm/resource.h +++ b/src/coreclr/src/ildasm/resource.h @@ -7,63 +7,7 @@ // Used by dasm.rc // -#define IDS_FILE 1 -#define IDS_VIEW 2 -#define IDS_HELP 3 -#define IDS_OPEN 4 -#define IDS_DUMP 5 -#define IDS_DUMPTREE 6 -#define IDS_EXIT 7 -#define IDS_FONTS 8 -#define IDS_FONT_TREE 9 -#define IDS_FONT_DASM 10 -#define IDS_SORT_BY_NAME 11 -#define IDS_SHOW_PUB 12 -#define IDS_SHOW_PRIV 13 -#define IDS_SHOW_FAM 14 -#define IDS_SHOW_ASM 15 -#define IDS_SHOW_FAA 16 -#define IDS_SHOW_FOA 17 -#define IDS_SHOW_PSCOPE 18 -#define IDS_FULL_INFO 19 -#define IDS_BYTES 20 -#define IDS_TOKENS 21 -#define IDS_SOURCELINES 22 -#define IDS_QUOTEALLNAMES 23 -#define IDS_EXPANDTRY 24 -#define IDS_SHOW_HEADER 25 -#define IDS_SHOW_STAT 26 -#define IDS_METAINFO 27 -#define IDS_MI_HEADER 28 -#define IDS_MI_HEX 29 -#define IDS_MI_CSV 30 -#define IDS_MI_UNREX 31 -#define IDS_MI_DEBUG 32 -#define IDS_MI_SCHEMA 33 -#define IDS_MI_RAW 34 -#define IDS_MI_HEAPS 35 -#define IDS_MI_VALIDATE 36 -#define IDS_SHOW_METAINFO 37 -#define IDS_ABOUT 38 -#define IDS_ABOUT_COPYRIGHTINFO 39 -#define IDS_PRODUCTNAME 40 -#define IDS_MAINWINDOWCAPTION 41 -#define IDS_MAINWINDOWCAPTIONAPPEND 42 -#define IDS_NETHEADER 43 -#define IDS_STATISTICS 44 -#define IDS_METAINFOTEXT 45 -#define IDS_FIND 46 -#define IDS_FINDNEXT 47 #define IDS_RTL 48 -#define IDS_TREEVIEWFCN 49 -#define IDS_CAVERBAL 50 -#define IDS_DUMPRTF 51 - -#define IDI_ICON2 136 -#define IDD_DIALOG1 137 -#define IDD_ABOUT 149 -#define IDR_MAINMENU 149 -#define IDI_ICON1 150 #define IDS_USAGE_TITLE 200 #define IDS_USAGE_01 IDS_USAGE_TITLE + 1 @@ -152,7 +96,6 @@ #define IDS_E_BADCORHDR 404 #define IDS_E_OPENMD 405 #define IDS_E_COPYRIGHT 406 -#define IDS_E_DASMABORT 407 #define IDS_E_DASMOK 408 #define IDS_E_PARTDASM 409 #define IDS_E_INSTRDT 410 diff --git a/src/coreclr/src/ildasm/staticfield.bmp b/src/coreclr/src/ildasm/staticfield.bmp deleted file mode 100644 index 70edc432c13377ca3476dd9baaf84b0aaac9e4f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFF|O1=490Pz1&NL;xI*s))D}H=aIpvRQCuL-;rg9{!bjMiRlUVn(F!NCbl6k5at z3L54JBnmC!0)>IX1BpUk_f^v12qX$ELQ_&Tzg%%U0 zDT=i@0*OM;qp6YxM<7w?d2CbC;0PoNJ+H)-G&ll@LeJ|8B@K>1qR{gyQ%Qp(kSO%L z=2Ft&2qX%9{3Qy5Bam2I&(cyQ z4URyf(6j7JNrNMhDD*5zSJL1JBnmytHIy_s0*OM;QcfiejzFT&v&>6LgCmgg_;t#6 z#s$|CIrlE-xmsXbU90~0_ou#H-B*3PUma85?#I=!Ys%y5ST*JI`J4{wJLN&oalh~T ut--rKrk;u+$1(Gnle?Vxtv_>(HKn=#zW$!!)aML-JAa;g@L%;Fyz1YHpB51S diff --git a/src/coreclr/src/ildasm/staticmethod.bmp b/src/coreclr/src/ildasm/staticmethod.bmp deleted file mode 100644 index bc87d243aed9a6025aec6c7623f596f879c6cd46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcma*lJ#O4U42EF_$O7(s1y(^$;F?J9JMbvqQCI{%2kV?61&^@(BG|m6u{U1BMI=4? zhSKcMNc{2q?PSOH^wsP;qsLcY?BTe6KF*(=WX56A4$cg%yRCn>oqxTUc_6_JFEqw1 z3=Rg75DJYkOM@dokwT#{ufOYLAR!bQW5&?R5l9Gy#_%T%jzB^vG{%g>#t}#eg~nJI zf72XmPY8v^?4`MrfrL-nB3q9B!og^_G=3#0|}wfnEguA$v{FV zG-khUenbi+ghFF>E0mLggivVAZj*L0kPr%uIa)~LWFR3F8e`4++Z=&}P+0ry)^aBU z38B!K-FD$*AR!bQvs*Hq3?zg?V|KgB$v{FVG-kJQIT=U@g~seQZzlr@q3nFQ+E3<* z?=!m|hh4901om}l)%V+H_35@9^KaGZbku*|wtw~Ia^d2wrdStlHTUl8kMq~3-_2i> P?>_%w{xO^R|FfRIH+BI_ diff --git a/src/coreclr/src/ildasm/staticmethodg.bmp b/src/coreclr/src/ildasm/staticmethodg.bmp deleted file mode 100644 index fedc1c56da5f1086f54ef6c76f464aef754537d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmZwFJ#O4U42EGE$O5jCE3h(hg49I%+<`~=j>01FIas918B*{F+Z%@RO5>HYfk*r3 z8)`>CBhB|8PZvAdw@+qY>3w>lNmpgROHKw7LZLD1RhE;1 zgivVAdd=-*AR!bQb9{mrCj$wg&=?c*mpS&CC-$w-7?T?ufrLBd{lYxX#Xv|uY>0}@w6dJRZtDFoZghFH1QZ6S038B!KwanYeKtd?H zzHIiBapHPr+wrq)+k0T!5AF4R`>4L0?HGSnm&;MV-rB9+Him55>seFKf3Laaef|G< ZPPjXNzrere-;Y1<&q*IW|9-Jsv%m3{@Y( @@ -26,7 +24,6 @@ #define MODE_DUMP_CLASS 1 #define MODE_DUMP_CLASS_METHOD 2 #define MODE_DUMP_CLASS_METHOD_SIG 3 -#define MODE_GUI 4 // All externs are defined in DASM.CPP extern BOOL g_fDumpIL; @@ -47,7 +44,6 @@ extern BOOL g_fShowSource; extern BOOL g_fInsertSourceLines; extern BOOL g_fTryInCode; extern BOOL g_fQuoteAllNames; -extern BOOL g_fShowProgressBar; extern BOOL g_fTDC; extern BOOL g_fShowCA; extern BOOL g_fCAVerbal; @@ -99,13 +95,6 @@ void Cleanup(); void DumpMetaInfo(__in __nullterminated const WCHAR* pszFileName, __in __nullterminated const char* pszObjFileName, void* GUICookie); FILE* OpenOutput(__in __nullterminated const char* szFileName); -// Do we only view an IL-dasm window in GUI mode? -// TRUE when we're in GUI mode and we specified a particular method from the cmd line -BOOL IsGuiILOnly() -{ - return (g_Mode & MODE_GUI) && (g_pszMethodToDump[0] != 0); -} - void PrintLogo() { printf("Microsoft (R) .NET Framework IL Disassembler. Version " VER_FILEVERSION_STR); @@ -221,11 +210,7 @@ int ProcessOneArg(__in __nullterminated char* szArg, __out char** ppszObjFileNam } else if (_stricmp(szOpt, "sou") == 0) { -#ifdef FEATURE_CORECLR printf("Warning: 'SOURCE' option is ignored for ildasm on CoreCLR.\n"); -#else - g_fShowSource = TRUE; -#endif } else if (_stricmp(szOpt, "lin") == 0) { @@ -303,10 +288,6 @@ int ProcessOneArg(__in __nullterminated char* szArg, __out char** ppszObjFileNam g_fHideFOA || g_fHidePrivScope; } - else if (_stricmp(szOpt, "nob") == 0) - { - g_fShowProgressBar = FALSE; - } else if (_stricmp(szOpt, "quo") == 0) { g_fQuoteAllNames = TRUE; @@ -383,29 +364,7 @@ int ProcessOneArg(__in __nullterminated char* szArg, __out char** ppszObjFileNam } else if ((_stricmp(szOpt, "met") == 0)&&g_fTDC) { -#ifdef FEATURE_CORECLR printf("Warning: 'METADATA' option is ignored for ildasm on CoreCLR.\n"); -#else - - char *pStr = EqualOrColon(szArg); - g_fDumpMetaInfo = TRUE; - if(pStr) - { - char szOptn[64]; - strncpy_s(szOptn, 64, pStr+1,10); - szOptn[3] = 0; // recognize metainfo specifier by first 3 chars - if (_stricmp(szOptn, "hex") == 0) g_ulMetaInfoFilter |= MDInfo::dumpMoreHex; - else if(_stricmp(szOptn, "csv") == 0) g_ulMetaInfoFilter |= MDInfo::dumpCSV; - else if(_stricmp(szOptn, "mdh") == 0) g_ulMetaInfoFilter |= MDInfo::dumpHeader; - else if(_stricmp(szOptn, "raw") == 0) g_ulMetaInfoFilter |= MDInfo::dumpRaw; - else if(_stricmp(szOptn, "hea") == 0) g_ulMetaInfoFilter |= MDInfo::dumpRawHeaps; - else if(_stricmp(szOptn, "sch") == 0) g_ulMetaInfoFilter |= MDInfo::dumpSchema; - else if(_stricmp(szOptn, "unr") == 0) g_ulMetaInfoFilter |= MDInfo::dumpUnsat; - else if(_stricmp(szOptn, "val") == 0) g_ulMetaInfoFilter |= MDInfo::dumpValidate; - else if(_stricmp(szOptn, "sta") == 0) g_ulMetaInfoFilter |= MDInfo::dumpStats; - else return -1; - } -#endif // FEATURE_CORECLR } else if (_stricmp(szOpt, "obj") == 0) { @@ -428,15 +387,6 @@ int ProcessOneArg(__in __nullterminated char* szArg, __out char** ppszObjFileNam strncpy_s(g_szOutputFile, MAX_FILENAME_LENGTH, pStr,MAX_FILENAME_LENGTH-1); g_szOutputFile[MAX_FILENAME_LENGTH-1] = 0; } - else - g_fShowProgressBar = FALSE; - - g_Mode &= ~MODE_GUI; - } - else if (_stricmp(szOpt, "tex") == 0) - { - g_Mode &= ~MODE_GUI; - g_fShowProgressBar = FALSE; } else { @@ -541,16 +491,9 @@ int ParseCmdLineA(__in __nullterminated char* szCmdLine, __out char** ppszObjFil return ret; } -#ifdef FEATURE_CORECLR int __cdecl main(int nCmdShow, char* lpCmdLine[]) -#else -int APIENTRY WinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - __in LPSTR lpCmdLine, - int nCmdShow) -#endif { -#if defined(FEATURE_CORECLR) && defined(FEATURE_PAL) +#if defined(FEATURE_PAL) if (0 != PAL_Initialize(nCmdShow, lpCmdLine)) { printError(g_pFile, "Error: Fail to PAL_Initialize\n"); @@ -575,10 +518,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, g_fUseProperName = TRUE; -#ifndef FEATURE_CORECLR - g_hInstance = hInstance; - g_Mode = MODE_GUI; -#endif g_pszClassToDump[0]=0; g_pszMethodToDump[0]=0; g_pszSigToDump[0]=0; @@ -623,7 +562,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, SyntaxCon(); exit((iCommandLineParsed == 1) ? 0 : 1); } - if(!(g_Mode & MODE_GUI)) + { DWORD exitCode = 1; if(g_szInputFile[0] == 0) @@ -658,75 +597,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, Uninit(); exit(exitCode); } - else // if GUI ordered, restart as WinApp - { -#ifdef FEATURE_CORECLR - _ASSERTE(!"GUI is not supported for ildasm on CoreCLR."); -#else - PROCESS_INFORMATION pi; - STARTUPINFO si; - memset(&pi, 0, sizeof(PROCESS_INFORMATION) ); - memset(&si, 0, sizeof(STARTUPINFO) ); - si.cb = sizeof(STARTUPINFO); - si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; - si.wShowWindow = SW_SHOW; - si.hStdOutput = INVALID_HANDLE_VALUE; - si.hStdInput = INVALID_HANDLE_VALUE; - si.hStdError = INVALID_HANDLE_VALUE; - // Create the child process. - if(CreateProcessW(NULL, - wzCommandLine, // command line - NULL, // process security attributes - NULL, // primary thread security attributes - TRUE, // handles are inherited - DETACHED_PROCESS, // creation flags - NULL, // use parent's environment - NULL, // use parent's current directory - (LPSTARTUPINFOW)&si, // STARTUPINFO pointer - &pi)==0) // receives PROCESS_INFORMATION - { - printf(RstrANSI(IDS_E_CANTCREATEPROC));//"Failed to CreateProcess\n\n"); - exit(1); - } - exit(0); -#endif - } - } -#ifndef FEATURE_CORECLR - else //Second pass: WinApp - { - g_uCodePage = CP_UTF8; - g_Mode = MODE_GUI; - g_fDumpHTML = FALSE; - - if(g_szInputFile[0]) - { - char* pch = strrchr(g_szInputFile,'.'); - if(pch && (!_strcmpi(pch+1,"lib") || !_strcmpi(pch+1,"obj"))) - { - WszMessageBox(NULL, - RstrW(IDS_ONLYPEINGUI),//"ILDASM supports only PE files in graphic mode", - RstrW(IDS_BADFILETYPE),//"Invalid File Type", - MB_OK|MB_ICONERROR|GetDasmMBRTLStyle()); - return 0; - } - } - if (Init() == TRUE) - { - CreateGUI(); - if(g_szInputFile[0]) - { - GUISetModule(g_szInputFile); - DumpFile(); - } - GUIMainLoop(); - Cleanup(); - DestroyGUI(); - } - Uninit(); - return 0 ; } -#endif return 0; } -- 2.7.4