diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 000000000..dd087e146 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,48 @@ +# https://docs.codecov.io/docs/codecov-yaml +# https://github.com/codecov/support/wiki/Codecov-Yaml + +coverage: + status: + project: + default: false + patch: + default: false + +comment: + layout: "diff, flags, files, footer" + +flags: + production: + paths: + - src/CSVReader/ + - src/EtwClrProfiler/ + - src/EtwHeapDump/ + - src/FastSerialization/ + - src/HeapDump/ + - src/HeapDumpCommon/ + - src/HeapDumpInterface/ + - src/HtmlJs/ + - src/MemoryGraph/ + - src/PerfView/ + - src/PerfView64/ + - src/PerfViewExtensions/ + - src/related/TraceEventAPIServer/ + - src/TraceEvent/ + - src/Utilities/ + - src/VS/ + test: + paths: + - src/LinuxEvent.Tests/ + - src/PerfView.Tests/ + - src/PerfView.TestUtilities/ + - src/TraceEvent/Ctf/CtfTracing.Tests/ + - src/TraceEvent/TraceEvent.Tests/ + # Filter results to only show debug reports until the accuracy problems with + # the report merge process are fixed. + Release: + paths: + - nonexistent/ + # Filter out 2015 reports for performance + '2015': + paths: + - nonexistent/ diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..0b85b6852 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Automatically detect text files +* text=auto diff --git a/src/.gitignore b/.gitignore similarity index 98% rename from src/.gitignore rename to .gitignore index d71daf3c3..6602672f0 100644 --- a/src/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ OSExtentions.cs *.sln.docstates *.csproj.metaproj *.sln.metaproj +!Global.csproj.user # VS 2015 stuff .vs/ @@ -51,7 +52,6 @@ dlldata.c *.meta *.obj *.pch -*.pdb *.pgc *.pgd *.rsp @@ -68,6 +68,7 @@ dlldata.c *.pidb *.svclog *.scc +*.pdb # Chutzpah Test files _Chutzpah* @@ -142,6 +143,7 @@ publish/ # NuGet Packages *.nupkg +**/project.lock.json # The packages folder can be ignored because of Package Restore **/packages/* # except build/, which is used as an MSBuild target. @@ -193,7 +195,6 @@ UpgradeLog*.htm FakesAssemblies/ # PerfView -BuildDate.txt Global.dll PerfView.exe src/TraceEvent/EventCounterHandler.cs diff --git a/.nuget/packages.config b/.nuget/packages.config new file mode 100644 index 000000000..b4f7d52bc --- /dev/null +++ b/.nuget/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 74bf6ecf2..785481b11 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,7 @@ - -#Contributing to the PerfView repository. +# Contributing to the PerfView repository First and foremost, we want to thank you for your willingness the help make PerfView better. -Here we describe a bunch of rules/advice associated with doing so. You may end up +Here we describe a bunch of rules / advice associated with doing so. You may end up getting frustrated with the process. This guide is our attempt to keep that frustration as low as possible. @@ -15,7 +14,7 @@ to weigh the bad against the good that comes along with it. 2. Consistency is good. Bugs are basically a kind of inconsistency (the program does not work as a simple understanding would assume). There are, of course, feature additions -that make consistency better, but it is all to easy for new features to NOT be consistent +that make consistency better, but it is all too easy for new features to NOT be consistent with existing features. 3. In addition to the benefit of the new behavior, you must also carefully consider @@ -32,7 +31,7 @@ and may make other scenarios slower (e.g. startup, etc.) (point 3). As the kee have the responsibility to weigh these other factors, and we may decide that the bad outweighs the good. -A rejected pull request is a failure for repo as a whole because it means that multiple people +A rejected pull request is a failure for the repo as a whole because it means that multiple people spent time on things that ultimately did not benefit the repo. We want to avoid that. There is a simple heuristic that helps: @@ -57,18 +56,21 @@ you discussion on the issue to insure that you stay on track. Performance improvements are often a point of contention. Improvements that make the code -smaller/simpler are great, but often this is not the case. If you are adding complexity as +smaller / simpler are great, but often this is not the case. If you are adding complexity as part of your improvement (e.g. adding a cache), again, you have to follow the rule above and get it pre-vetted, or be willing to abandon the change. For performance changes in general we will probably ask you to take measurements to quantify exactly how much improvement there was. There is more work than just modifying the code. -##Coding Standards +## Coding Standards See [PerfView Coding Standards](documentation/CodingStandards.md). -##Testing and Contributing tests - -TODO NOT DONE. +## Testing and Contributing tests +There are a number of *.Test projects that are unit tests that need to be run before checking in. +You can run these tests in Visual Studio by selecting the Test -> Run -> All Tests menu entry. +These tests need to be run on the DEBUG configuration (that is with asserts) for them to +have really good effectiveness (the code has lots of asserts). +The tests should run in less than 1 minute total. diff --git a/Nuget.config b/Nuget.config new file mode 100644 index 000000000..2b8edb09b --- /dev/null +++ b/Nuget.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/PerfView.sln b/PerfView.sln new file mode 100644 index 000000000..fcf4cf2c6 --- /dev/null +++ b/PerfView.sln @@ -0,0 +1,152 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26918.3 +MinimumVisualStudioVersion = 15.0 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TraceEvent", "src\TraceEvent\TraceEvent.csproj", "{B68F4968-A7CF-41CC-AD6E-373DB5E67944}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSVReader", "src\CSVReader\CSVReader.csproj", "{F7D0F851-9B0D-4224-91AB-7FC12477F206}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView", "src\PerfView\PerfView.csproj", "{6BAC7496-6953-41B8-9042-AAE45405A095}" + ProjectSection(ProjectDependencies) = postProject + {E9980619-4016-4A4A-B7CC-F8B0E483BDB8} = {E9980619-4016-4A4A-B7CC-F8B0E483BDB8} + {E9980619-4016-4A4A-B7CC-F8B0E483BDB9} = {E9980619-4016-4A4A-B7CC-F8B0E483BDB9} + {80345889-A13D-4F2D-A096-98B95C55BF45} = {80345889-A13D-4F2D-A096-98B95C55BF45} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{CD74A439-1DFC-4FA7-ABB3-3BC6CA1F7B48}" + ProjectSection(SolutionItems) = preProject + documentation\CodingStandards.md = documentation\CodingStandards.md + documentation\MakingSupportFilesNugetPackages.md = documentation\MakingSupportFilesNugetPackages.md + documentation\OpenSourceGitWorkflow.md = documentation\OpenSourceGitWorkflow.md + documentation\SettingUpRepoInVS.md = documentation\SettingUpRepoInVS.md + documentation\SimpleGitWorkflow.md = documentation\SimpleGitWorkflow.md + documentation\TraceEventProgrammersGuide.md = documentation\TraceEventProgrammersGuide.md + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A4068F9B-607A-4531-98A8-DE9B392C2D2C}" + ProjectSection(SolutionItems) = preProject + appveyor.yml = appveyor.yml + CONTRIBUTING.md = CONTRIBUTING.md + src\Directory.Build.props = src\Directory.Build.props + src\Directory.Build.targets = src\Directory.Build.targets + .nuget\packages.config = .nuget\packages.config + src\PerfViewCollect\PerfViewCollect.csproj = src\PerfViewCollect\PerfViewCollect.csproj + README.md = README.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HeapDumpInterface", "src\HeapDumpInterface\HeapDumpInterface.csproj", "{CE854091-F55D-4AD1-AA57-49CB9B60CAC0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HeapDump", "src\HeapDump\HeapDump.csproj", "{80345889-A13D-4F2D-A096-98B95C55BF45}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Global", "src\PerfViewExtensions\GlobalSrc\Global.csproj", "{91DFAE19-098F-4E19-B81D-6CB36A9020D6}" + ProjectSection(ProjectDependencies) = postProject + {6BAC7496-6953-41B8-9042-AAE45405A095} = {6BAC7496-6953-41B8-9042-AAE45405A095} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FastSerialization", "src\FastSerialization\FastSerialization.csproj", "{E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ETWClrProfilerX86", "src\EtwClrProfiler\ETWClrProfilerX86.vcxproj", "{E9980619-4016-4A4A-B7CC-F8B0E483BDB8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ETWClrProfilerX64", "src\EtwClrProfiler\ETWClrProfilerX64.vcxproj", "{E9980619-4016-4A4A-B7CC-F8B0E483BDB9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LinuxTracing.Tests", "src\LinuxEvent.Tests\LinuxTracing.Tests.csproj", "{C42873F2-D4A5-4AC7-9ADB-9CD8E1856A9B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CtfTracing.Tests", "src\TraceEvent\Ctf\CtfTracing.Tests\CtfTracing.Tests.csproj", "{B9384E1B-54B5-4A41-85BD-EBAD0577BDCD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TraceEvent.Tests", "src\TraceEvent\TraceEvent.Tests\TraceEvent.Tests.csproj", "{19281902-FBC4-48C0-962B-9FDADAF5C783}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView64", "src\PerfView64\PerfView64.csproj", "{F7419073-A62B-42E0-9B8C-4C2C4CE243A3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView.Tests", "src\PerfView.Tests\PerfView.Tests.csproj", "{A0248EF2-8C39-478A-951E-324DDF4FF3EC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView.TestUtilities", "src\PerfView.TestUtilities\PerfView.TestUtilities.csproj", "{FE5CC86D-E87E-4560-8004-8852F3DE6794}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TraceParserGen", "src\TraceParserGen\TraceParserGen.csproj", "{034CB9AF-7E9E-4D96-8F71-526999D284BA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfViewCollect", "src\PerfViewCollect\PerfViewCollect.csproj", "{945509BC-A133-493B-9295-43EC708FD57F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.Build.0 = Release|Any CPU + {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Release|Any CPU.Build.0 = Release|Any CPU + {6BAC7496-6953-41B8-9042-AAE45405A095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6BAC7496-6953-41B8-9042-AAE45405A095}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6BAC7496-6953-41B8-9042-AAE45405A095}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6BAC7496-6953-41B8-9042-AAE45405A095}.Release|Any CPU.Build.0 = Release|Any CPU + {CE854091-F55D-4AD1-AA57-49CB9B60CAC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE854091-F55D-4AD1-AA57-49CB9B60CAC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE854091-F55D-4AD1-AA57-49CB9B60CAC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE854091-F55D-4AD1-AA57-49CB9B60CAC0}.Release|Any CPU.Build.0 = Release|Any CPU + {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|Any CPU.Build.0 = Release|Any CPU + {91DFAE19-098F-4E19-B81D-6CB36A9020D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91DFAE19-098F-4E19-B81D-6CB36A9020D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91DFAE19-098F-4E19-B81D-6CB36A9020D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91DFAE19-098F-4E19-B81D-6CB36A9020D6}.Release|Any CPU.Build.0 = Release|Any CPU + {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.Build.0 = Release|Any CPU + {E9980619-4016-4A4A-B7CC-F8B0E483BDB8}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB8}.Debug|Any CPU.Build.0 = Debug|Win32 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB8}.Release|Any CPU.ActiveCfg = Release|Win32 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB8}.Release|Any CPU.Build.0 = Release|Win32 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB9}.Debug|Any CPU.ActiveCfg = Debug|x64 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB9}.Debug|Any CPU.Build.0 = Debug|x64 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB9}.Release|Any CPU.ActiveCfg = Release|x64 + {E9980619-4016-4A4A-B7CC-F8B0E483BDB9}.Release|Any CPU.Build.0 = Release|x64 + {C42873F2-D4A5-4AC7-9ADB-9CD8E1856A9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C42873F2-D4A5-4AC7-9ADB-9CD8E1856A9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C42873F2-D4A5-4AC7-9ADB-9CD8E1856A9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C42873F2-D4A5-4AC7-9ADB-9CD8E1856A9B}.Release|Any CPU.Build.0 = Release|Any CPU + {B9384E1B-54B5-4A41-85BD-EBAD0577BDCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9384E1B-54B5-4A41-85BD-EBAD0577BDCD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9384E1B-54B5-4A41-85BD-EBAD0577BDCD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9384E1B-54B5-4A41-85BD-EBAD0577BDCD}.Release|Any CPU.Build.0 = Release|Any CPU + {19281902-FBC4-48C0-962B-9FDADAF5C783}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {19281902-FBC4-48C0-962B-9FDADAF5C783}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19281902-FBC4-48C0-962B-9FDADAF5C783}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19281902-FBC4-48C0-962B-9FDADAF5C783}.Release|Any CPU.Build.0 = Release|Any CPU + {F7419073-A62B-42E0-9B8C-4C2C4CE243A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7419073-A62B-42E0-9B8C-4C2C4CE243A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7419073-A62B-42E0-9B8C-4C2C4CE243A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7419073-A62B-42E0-9B8C-4C2C4CE243A3}.Release|Any CPU.Build.0 = Release|Any CPU + {A0248EF2-8C39-478A-951E-324DDF4FF3EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0248EF2-8C39-478A-951E-324DDF4FF3EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0248EF2-8C39-478A-951E-324DDF4FF3EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0248EF2-8C39-478A-951E-324DDF4FF3EC}.Release|Any CPU.Build.0 = Release|Any CPU + {FE5CC86D-E87E-4560-8004-8852F3DE6794}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE5CC86D-E87E-4560-8004-8852F3DE6794}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE5CC86D-E87E-4560-8004-8852F3DE6794}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE5CC86D-E87E-4560-8004-8852F3DE6794}.Release|Any CPU.Build.0 = Release|Any CPU + {034CB9AF-7E9E-4D96-8F71-526999D284BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {034CB9AF-7E9E-4D96-8F71-526999D284BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {034CB9AF-7E9E-4D96-8F71-526999D284BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {034CB9AF-7E9E-4D96-8F71-526999D284BA}.Release|Any CPU.Build.0 = Release|Any CPU + {945509BC-A133-493B-9295-43EC708FD57F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {945509BC-A133-493B-9295-43EC708FD57F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {945509BC-A133-493B-9295-43EC708FD57F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {945509BC-A133-493B-9295-43EC708FD57F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9F85A2A3-E0DF-4826-9BBA-4DFFA0F17150} + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = PerfView2.vsmdi + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md index 0b47795d8..6716c2bbc 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,112 @@ -# PerfView -PerfView is a performance-analysis tool that helps isolate CPU- and memory-related performance issues. +PerfView is a free performance-analysis tool that helps isolate CPU and memory-related performance issues. It is a Windows tool, but it also has some support for analyzing data collected on Linux machines. It works for a wide variety of scenarios, but has a number of special features for investigating performance issues in code written for the .NET runtime. If you are unfamiliar with PerfView, there are [PerfView video tutorials](http://channel9.msdn.com/Series/PerfView-Tutorial). -As well as [Vance Morrison's blog](http://blogs.msdn.com/b/vancem/archive/tags/perfview) which also gives overview and getting +Also, [Vance Morrison's blog](http://blogs.msdn.com/b/vancem/archive/tags/perfview) gives overview and getting started information. -The PerfView executable is ultimately published at the -[PerfView download Site](http://www.microsoft.com/en-us/download/details.aspx?id=28567). -It is a standalone executable file (packaged in a ZIP archive). You can be running it in less than a minute! +### Getting PerfView (If you are NOT profiling .NET Core scenarios) +The PerfView executable is officialy published at the +[PerfView download site](http://www.microsoft.com/en-us/download/details.aspx?id=28567). **If you are profiling .NET Core scenarios, however it is recommended you pick up the latest version from GitHub (see next section).** +The download site has a single standalone executable file (packaged in a ZIP archive). You can be running it in a few clicks. Click the +[PerfView download site](http://www.microsoft.com/en-us/download/details.aspx?id=28567), click download, open the resulting downloaded +zip file, and either execute PerfView directly (double click on it in the ZIP archive), or better, copy it to your machine (e.g., drag it +to your desktop and then double click it from there). It is a single EXE with no installation. You can be running in literally seconds. -The PerfView user's guide is part of the application itself, however you can get the .HTM file for it in -the user's guide in the source code itself at [PerfView/SupportDlls/UsersGuide.htm](src/PerfView/SupportDlls/UsersGuide.htm) or -[the raw view](https://raw.githubusercontent.com/Microsoft/perfview/master/src/PerfView/SupportDlls/UsersGuide.htm?token=AIEUlpLp2aAS0_OgCbvDPMOz6U6leXDvks5XHMNFwA%3D%3D) -however it is a significantly better experience if you simply download PerfView and select the Help -> User's Guide menu item. +#### Getting the Latest Version of PerfView (from GitHub) -###Cloning the PerfView GitHub Repository. -If you are already familiar with how GIT, GitHub, and Visual Studio 2015 GIT support works, than you can skip this section. -However if not the [Setting up a Local GitHub repository with Visual Studio 2015](documentation/SettingUpRepoInVS2015.md) document -will lead you through the basics of doing this. All it assumes is that you have Visual Studio 2015 installed. These instructions -should also mostly work for VS 2013 with GIT extensions installed, but that has not been field-tested). +The version on the download site is officially signed by Microsoft so it is a 'safe' choice, but it typically is +months old. If you need a recent bug fix or feature, it may not be in the offical version on the download site. **In particular you will want at least version 1.9.65 if you are profiling .NET Core scenarios**. You can get very recient builds by downloading from the [Release Tab on this site](https://github.com/Microsoft/perfview/releases), and of course you can always build it yourself by following the instructions below. -###How to Build and Debug PerfView -PerfView is designed to build in Visual Studio 2013 or later. +### Learning about PerfView - * The solution file is src/PerfView/Perfview.sln. Opening this file in Visual file and selecting the Build -> Build Solution, - will build it. It follows standard Visual Studio conventions, and the resulting PerfView.exe file ends up in the - src/PerfView/bin//PerfView.exe You need only deploy this one EXE to use it. +The PerfView User's Guide is part of the application itself. In addition, you can click the +[Users Guide link](http://htmlpreview.github.io/?https://github.com/Microsoft/perfview/blob/master/src/PerfView/SupportFiles/UsersGuide.htm) +to see the [GitHub HTML Source File](src/PerfView/SupportFiles/UsersGuide.htm) rendered in your browser. You can also simply +download PerfView using the instructions above and select the Help -> User's Guide menu item. - * The solution consists of 11 projects, representing support DLLs are the main EXE. To run PerfView in the - debugger (F5) **you need to make sure that the 'Startup Project' is set to the 'PerfView' project** so that it launches - the main EXE. If the PerfView project is not bold, right click on the PerfView project in the 'Solution - Explorer (on right) and select 'Set as Startup Project'. After doing this 'Start Debugging' (F5) should work. - (it is annoying that this is not part of the .sln file...). +### Asking Questions / Reporting Bugs -###Deploying your new version of Perfview -You will want to deploy the 'Release' rather than the 'Debug' version of PerfView. Thus first set your build configuration to 'Release' (Text window in the top toolbar, or right click on the .SLN file -> Configuration Manager -> Active Solution Configuration). -Next build (Build -> Build Solution (Ctr-Shift-B)). The result will be that in the src\perfView\bin\Release directory will be among other things a PerfView.exe. This one file is all you need to deploy. Simply copy it to where you wish to deploy the app. +When you have question about PerfView, your first reaction should be to search the Users Guide (Help -> User's Guide) and +see if you can find the answer already. If that does not work you can ask a question by creating a [new PerfView Issue](https://github.com/Microsoft/perfview/issues/new). +State your question succinctly in the title, and if necessary give details in the body of the issue. If the question is on +a particular *.ETL.ZIP file you can drag that file onto the issue and it will be downloaded. This allows those watching for +issues to reproduce your environment and give much more detailed and useful answer. + +Note that once you have your question answered, if the issue is likley to be common, you should strongly consider updating the +documentation to include the information. The documentation is pretty much just one file https://github.com/Microsoft/perfview/blob/master/src/PerfView/SupportFiles/UsersGuide.htm. +You will need to clone the repository and create a pull request (see [OpenSourceGitWorkflow](https://github.com/Microsoft/perfview/blob/master/documentation/OpenSourceGitWorkflow.md) +for instructions for setting up and creating a pull request. + +Reporting bugs works pretty much the same way as asking a question. It is very likely that you will want to include the *.ETL.ZIP +file needed to reproduce the problem as well as any steps and the resulting undesirable behavior. + +### Developer information + +This repository uses [AppVeyor](https://www.appveyor.com/) to automatically build and test pull requests, which allows +the community to easily view build results. Code coverage is provided by [codecov.io](https://codecov.io). The build and +coverage status reflected here is the AppVeyor build status of the **master** branch. + +[![Build status](https://ci.appveyor.com/api/projects/status/fxtu3xa874whk2w0?svg=true)](https://ci.appveyor.com/project/sharwell/perfview) + +[![codecov](https://codecov.io/gh/Microsoft/perfview/branch/master/graph/badge.svg)](https://codecov.io/gh/Microsoft/perfview) + +> :warning: Builds produced by AppVeyor are not considered official builds of PerfView, and are not signed or otherwise +> validated for safety or security in any way. This build integration is provided as a convenience for community +> participants, but is not endorsed by Microsoft nor is it considered an official release channel in any way. For +> information about official builds, see [Getting PerfView](#getting-perfview) above. + +# Building PerfView Yourself + +If you just want to do a performance investigation, you don't need to build PerfView yourself. +Just use the one from the download center or the GitHub release site. +However if you want new features or just want to contribute to PerfView to make it better +(see [issues](https://github.com/Microsoft/perfview/issues) for things people want) +you can do that by following the rest of these instructions. + +### Tools Needed to Build PerfView + +The only tool you need to build PerfView is Visual Studio 2017. The [Visual Studio 2017 Community Edition](https://www.visualstudio.com/vs/community/) +can be downloaded *for free* and has everything you need to fetch PerfView from GitHub, build and test it. We expect you +to download Visual Studio 2017 Community Edition if you don't already have Visual Studio 2017. + +PerfView is mostly C# code, however there is a small amount of C++ code to implement some advanced features of PerfView +(The ETWCLrProfiler dlls that allow PerfView to intercept the .NET Method calls; see .NET Call in the Collect dialog). +If you downloaded the Visual Studio 2017 Community Edition, it does not install the C++ compilation tools by default, +but VS should detect that the solution needs C++ and ask you to install those tools when you open the solution. Allow it +to do this and everything should 'just work'. + +### Cloning the PerfView GitHub Repository. + +The first step in getting started with the PerfView source code is to clone the PerfView GitHub respository. +If you are already familiar with how GIT, GitHub, and Visual Studio 2017 GIT support works, than you can skip this section. +However, if not, the [Setting up a Local GitHub repository with Visual Studio 2017](documentation/SettingUpRepoInVS.md) document +will lead you through the basics of doing this. All it assumes is that you have Visual Studio 2017 installed. + +### How to Build and Debug PerfView + +PerfView is developed in Visual Studio 2017 using features through C# 6. + + * The solution file is PerfView.sln. Opening this file in Visual Studio (or double clicking on it in + the Windows Explorer) and selecting Build -> Build Solution, will build it. You can also build the + non-debug version from the command line using msbuild or the build.cmd file at the base of the repository. + The build follows standard Visual Studio conventions, and the resulting PerfView.exe file ends up in + src/PerfView/bin/*BuildType*/PerfView.exe. You need only deploy this one EXE to use it. + + * The solution consists of 11 projects, representing support DLLs and the main EXE. To run PerfView in the + debugger **you need to make sure that the 'Startup Project' is set to the 'PerfView' project** so that it launches + the main EXE. If the PerfView project in the Solution Explorer (on the right) is not bold, right click on the PerfView project + and select 'Set as Startup Project'. After doing this 'Start Debugging' (F5) should work. + (It is annoying that this is not part of the .sln file...). + +### Deploying your new version of Perfview + +You will want to deploy the 'Release' rather than the 'Debug' version of PerfView. Thus, first set your build configuration +to 'Release' (Text window in the top toolbar, or right click on the .SLN file -> Configuration Manager -> Active Solution Configuration). +Next build (Build -> Build Solution (Ctrl-Shift-B)). The result will be that in the src\perfView\bin\Release directory there will be +among other things a PerfView.exe. This one file is all you need to deploy. Simply copy it to where you wish to deploy the app. + +### Information for build troubleshooting. -####Information for build troubleshooting. * One of the unusual things about PerfView is that it incorporates its support DLL into the EXE itself, and these get unpacked on first launch. This means that there are tricky dependencies in the build that are not typical. You will see errors that certain DLLs can't be found if there were build problems earlier in the build. Typically you can fix @@ -46,34 +115,62 @@ Next build (Build -> Build Solution (Ctr-Shift-B)). The result will be that in It can make sense to go down the project one by one and build them individually to see which one fails 'first'. * Another unusual thing about PerfView is that it includes an extension mechanism complete with samples. - This extensions is the 'Global' project (Called that because it is the Global Extension whose commands don't have an - expliict 'scope') and needs to refer to PerfView to resolve some of its references. Thus you will get many 'not found' + This extensions mechanism is the 'Global' project (called that because it is the Global Extension whose commands don't have an + explicit 'scope') and needs to refer to PerfView to resolve some of its references. Thus you will get many 'not found' issues in the 'Global' project. These can be ignored until you get every other part of the build working. - * One of the invariants of the repo is that if you are running VS 2015 and you simply sync and build the PerfView.sln - file, it is supposed to 'just work'. If that does not happen, and the advice above does not help, then we need to - either fix the repo or update the advice above. Thus it is reasonable to open an issue. If you do this, the goal - is to fix the problem, which means you have to put enough information into the issue to do that. This includes - exactly what you tried, and what the error messages were. + * One of the invariants of the repo is that if you are running Visual Studio 2017 and you simply sync and build the + PerfView.sln file, it is supposed to 'just work'. If that does not happen, and the advice above does not help, then + we need to either fix the repo or update the advice above. Thus it is reasonable to open an GitHub issue. If you + do this, the goal is to fix the problem, which means you have to put enough information into the issue to do that. + This includes exactly what you tried, and what the error messages were. + + * If you get an error "MSB8036: The Windows SDK version 8.1 was not found", go to your Control panel -> Programs and Features, + and right click on your VS2017 and select 'Modify'. Then look under the C++ Desktop Development and check that hte Windows SDK 8.1 option is selected. If not select it and have the setup install this. + +### Running Tests + +PerfView has a number of *.Test projects that have automated tests. They can be run in Visual Studio by selecting the +Test -> Run -> All Tests menu item. For the most thorough results (and certainly if you intend to submit changes) you +need to run these tests with a Debug build of the product (see the text window in the top toolbar, it says 'Debug' or 'Release'). +If tests fail you can right click on the failed test and select the 'Debug' context menu item to run the test under +the debugger to figure out what went wrong. ### Contributing to PerfView You can get a lot of value out of the source code base simply by being able to build the code yourself, debug -through it or make add a local, specialized feature. But the real power of open source software happens when -you contribute back to shared code base and thus help the community as a whole. **while we encourage this it +through it or make a local, specialized feature. But the real power of open source software happens when +you contribute back to the shared code base and thus help the community as a whole. **While we encourage this it requires significantly more effort on your part**. If you are interested in stepping up, see the -[PerfView Contribution Guide](CONTRIBUTING.md) and [PerfView Coding Standards](documentation/CodingStandards.md) before you start. -###Code Organization +[PerfView Contribution Guide](CONTRIBUTING.md) and [PerfView Coding Standards](documentation/CodingStandards.md) before you start. -The code is broken in several main sections: +### Code Organization + +The code is broken into several main sections: + + * PerfView - GUI part of the application + * StackViewer - GUI code for any view with the 'stacks' suffix + * EventViewer - GUI code for the 'events' view window + * Dialogs - GUI code for a variety of small dialog boxes (although the CollectingDialog is reasonably complex) + * Memory - Contains code for memory investigations, in particular it defines 'Graph' and 'MemoryGraph' which are used + to display node-arc graphs (e.g. GC heaps) * TraceEvent - Library that understands how to decode Event Tracing for Windows (ETW) which is used to actually collect the data for many investigations - * PerfView - GUI part of the application - * MainWindow - GUI code for the window that is initially launched (lets you select files or collect new data) - * StackViewer - GUI code for any view with the 'stacks' suffix - * EventViewer - GUI code for the 'events' view window - * Dialogs - GUI code for a variety of small dialog boxes (although the CollectingDialog is reasonably complex) - * Memory - Contains code for memory investigations, in particular it defines 'Graph' and 'MemoryGraph' which are used - to display node-arc graphs (e.g. GC heaps) - * [HtmlJs](src/HtmlJs/Readme.md) - contains a version of the GUI based on HTML and JavaScript (for Linux support). -s + * MainWindow - GUI code for the window that is initially launched (lets you select files or collect new data) + * ETWClrProfiler* - There are two projects that build the same source either 32 or 64 bit. This is (the only) native code + project in PerfView, and implements the CLR Profiler API and emits ETW events. It is used to trace object allocation + stacks and .NET method calls. + * HeapDump* There are 32 and 64 bit versions of this project. These make standalone executables that can dump the GC + heap using Microsoft.Diagnostics.Runtime APIs. This allows getting heap dumps from debugger process dumps. + * Global - An example of using PerfView's extensibility mechanism + * CSVReader - old code that lets PerfView read .ETL.CSV files generated by XPERF (probably will delete) + * Zip - a clone of System.IO.Compression.dll so that PerfView can run on pre V4.5 runtimes (probably will delete) + * [HtmlJs](src/HtmlJs/Readme.md) - contains a version of the GUI based on HTML and JavaScript (for Linux support). (experimental) + +### Other Documenation + +These docs are for specialized scenarios + + * [Updating SupportFiles](documentation/MakingSupportFilesNugetPackages.md) PerfView uses some binary files that it +does not build itself. We created two nuget packages to hold these. This document tells you how to update this +nuget package when these files need to be updated. Very few people should care about these instructions. diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..a4df2643d --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,30 @@ +version: 1.0.{build} +branches: + only: + - master +image: Visual Studio 2017 +init: +- git config --global core.autocrlf true +configuration: +- Debug +- Release +environment: + image_flag: 2017 +before_build: +- nuget restore +build: + project: PerfView.sln + verbosity: minimal +test_script: +- .\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -target:"%xunit20%\xunit.console.x86.exe" -targetargs:"C:\projects\perfview\src\LinuxEvent.Tests\bin\%configuration%\net46\LinuxTracing.Tests.dll -noshadow -appveyor" -threshold:1 -oldStyle -returntargetcode -filter:"+[*]* -[Xunit*]*" -excludebyattribute:*.ExcludeFromCodeCoverage* -excludebyfile:*\*Designer.cs -hideskipped:All -output:.\PerfView_coverage.xml +- .\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -target:"%xunit20%\xunit.console.x86.exe" -targetargs:"C:\projects\perfview\src\TraceEvent\Ctf\CtfTracing.Tests\bin\%configuration%\net46\Tests.dll -noshadow -appveyor" -threshold:1 -oldStyle -returntargetcode -filter:"+[*]* -[Xunit*]*" -excludebyattribute:*.ExcludeFromCodeCoverage* -excludebyfile:*\*Designer.cs -hideskipped:All -mergebyhash -mergeoutput -output:.\PerfView_coverage.xml +- .\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -target:"%xunit20%\xunit.console.x86.exe" -targetargs:"C:\projects\perfview\src\TraceEvent\TraceEvent.Tests\bin\%configuration%\net46\TraceEventTests.dll -noshadow -appveyor" -threshold:1 -oldStyle -returntargetcode -filter:"+[*]* -[Xunit*]*" -excludebyattribute:*.ExcludeFromCodeCoverage* -excludebyfile:*\*Designer.cs -hideskipped:All -mergebyhash -mergeoutput -output:.\PerfView_coverage.xml +- .\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -register:user -target:"%xunit20%\xunit.console.x86.exe" -targetargs:"C:\projects\perfview\src\PerfView.Tests\bin\%configuration%\net46\PerfViewTests.dll -noshadow -diagnostics -appveyor" -threshold:1 -oldStyle -returntargetcode -filter:"+[*]* -[Xunit*]*" -excludebyattribute:*.ExcludeFromCodeCoverage* -excludebyfile:*\*Designer.cs -hideskipped:All -mergebyhash -mergeoutput -output:.\PerfView_coverage.xml +- .\packages\Codecov.1.0.1\tools\codecov.exe -n "VS%image_flag% %configuration%" -f "PerfView_coverage.xml" --flag "%image_flag%,%configuration%" +# preserve "packages" directory in the root of build folder but will reset it if packages.config is modified +cache: + - packages -> **\packages.config +artifacts: +- path: 'src\PerfView\bin\$(configuration)\net45\PerfView.exe' +- path: 'src\PerfView\bin\$(configuration)\net45\PerfView64.exe' +- path: 'src\TraceEvent\bin\$(configuration)\*.nupkg' diff --git a/build.cmd b/build.cmd new file mode 100644 index 000000000..7007665ee --- /dev/null +++ b/build.cmd @@ -0,0 +1,15 @@ +@cls +@echo.************************************************************* +@echo.This script simply calls msbuild to build PerfView.exe +@echo.************************************************************* +@echo. +msbuild /p:Configuration=Release %* +@if '%ERRORLEVEL%' == '0' ( + echo. + echo. + echo.************************************************************* + echo. The build was successful! + echo.The output should be in src\bin\Release\PerfView.exe + echo.This is the only file needed to deploy the program. + echo.************************************************************* +) diff --git a/documentation/CodingStandards.md b/documentation/CodingStandards.md index c40a0b7b8..3b8b05681 100644 --- a/documentation/CodingStandards.md +++ b/documentation/CodingStandards.md @@ -1,18 +1,17 @@ -#Coding Standard in the PerfView Codebase - +# Coding Standard in the PerfView Codebase If you are going to contribute to a codebase, you need to 'follow suit' and conform to the standards that are already in place. Here is what PerfView uses. -##Indenting and other spacing conventions. +## Indenting and other spacing conventions. The PerfView codebase was developed using Visual Studio, and uses indenting and spacing standards that are the default in Visual Studio. You can use Ctrl-K Ctrl-D (reformat) to make your code conform to this. -##Layout of a Class +## Layout of a Class Items in a class should be ordered and structured to make reading the as a **public contract** easy. In particular @@ -22,33 +21,32 @@ by a '#region private' grouping. This makes Visual Studio's outlining feature (Ctrl-M Ctrl-O) collapse things so that you only see the public contract for the class. - 2. Public methods should be ordered so that constructors or other -'generators' are first, then properties then methods. +'generators' are first, then properties, then methods. 3. To the degree possible the most important/common methods should come first in the class, and methods that are used together should be near each other. -4. Fields should be private and placed TOGETHER LAST in the class -(In the #region private). That makes it relatively easy for -developer to find all the state in an object (since that is what -really defines its semantics. - -##Naming conventions +4. Fields should be private and placed TOGETHER, LAST in the class +(in the #region private). That makes it relatively easy for +developers to find all the state in an object (since that is what +really defines its semantics). + +## Naming conventions -1. We follow standard .NET Naming conventions (PascalCase for Types - methods and properties, camelCase for parameters and local variables) +1. We follow standard .NET Naming conventions (PascalCase for types, + methods, and properties; camelCase for parameters and local variables) -2. Private instance field names begin with a m_ (member). It is also - acceptable to use the class library convention of omitting the m (thus prefix - instance fields begin with _) If the field is static the prefix is s_. - Embedding the type in the variable (Hungarian notation) is NOT used. +2. Private instance field names begin with a `m_` (member). It is also + acceptable to use the class library convention of omitting the m (thus prefix + instance fields begin with `_`) If the field is static the prefix is `s_`. + Embedding the type in the variable (Hungarian notation) is NOT used. 3. Pick descriptive names. Visual Studio makes it easy to rename a - variable so fix the name if it 'morphed' as the code was written. + variable so fix the name if it 'morphed' as the code was written. -##Minimum Commenting +## Minimum Commenting PerfView is probably commented more than most code bases. We wish to keep it that way. Here is what is expected. @@ -66,7 +64,7 @@ to keep it that way. Here is what is expected. especially true if there is some condition (invariant) that is maintained for that variable. These are VERY valuable to document. -##When in Doubt +## When in Doubt When in doubt, make your code look like the code around it. You can't go too far wrong if you do that. diff --git a/documentation/MakingSupportFilesNugetPackages.md b/documentation/MakingSupportFilesNugetPackages.md new file mode 100644 index 000000000..52e71d845 --- /dev/null +++ b/documentation/MakingSupportFilesNugetPackages.md @@ -0,0 +1,53 @@ +# Making the *.SupportFiles.nupkg NuGet Packages. + +The build of PerfView depends on two packages of support files. + + * Microsoft.Diagnostics.Tracing.TraceEvent.SupportFiles.1.0.0 + * PerfView.SupportFiles.1.0.0 + + +These two Nuget packages contain binaries (DLLs and tools) that are assumed as +part of the underlying platform, so are not created as part of the build. These +include + + * The native code msdia* library that allows you to decode PDB files + * The native KernelTraceControl* library that allows for merging of ETL files + * Managed COM interop assemblies (generated with the TLBEXP tool on native type libraries) + + +These Nuget packages are available on https://www.nuget.org/ so the build should 'just work' +but it is certainly possible that at some point we will want to update these binaries. +and this document indicats how to do this. + +There are files in the 'NugetSupportFiles' directory for regenerating these two Nuget packages. +We go through the procedure for PerfView.SupportFiles.1.0.0 but the same technique works for +Microsoft.Diagnostics.Tracing.TraceEvent.SupportFiles.1.0.0. + + +## Step 1 populate binaries you are not updating + +It is likely that you only need to update a subset of all the DLLs in the package. Thus you +need to start with an existing set. You can do this by running editing and running the +PerfView.SupportFiles.Populate.bat script. + +1. First look in packages directory to see what the latest version is and modify + the PerfView.SupportFiles.Populate.bat copy from that. +2. Then you can run the batch file. This copies that files you are currently using + to form a baseline for the new package. + +This batch script also has a list of the files it is going to copy so that even if you don't +have the existing nuget package, you can populate the new package 'by hand' from 'raw' files. + +## Step 2 Update the files in the baseline Image (PerfView.SupportFiles) + +This is dependent on exactly what you want to do. However something you should ALWAYS do +is to update the version number in the PerfView.SupportFiles.nuspec file. + +## Step 3 Generate the nuget package + +There is a script called PerfView.SupportFiles.MakeNuget.bat which does this. It is a one line +script, and generates a new *.nupkg in the current directory. + +## Step 4 Upload to [Nuget.org](https://www.nuget.org/) + +Simply go to https://www.nuget.org/ log in, and follow the instructions on the 'Upload Package' link. diff --git a/documentation/OpenSourceGitWorkflow.md b/documentation/OpenSourceGitWorkflow.md index 04c0d7db2..82ecc8487 100644 --- a/documentation/OpenSourceGitWorkflow.md +++ b/documentation/OpenSourceGitWorkflow.md @@ -1,6 +1,6 @@ -#Setting Up *With* a Fork with Visual Studio 2015 +# Setting Up *With* a Fork with Visual Studio - * See also [Setting up a Repo in VS 2015](SettingUpRepoInVS2015.md) for important background material. + * See also [Setting up a Repo in VS](SettingUpRepoInVS2015.md) for important background material. * See also [Simple GitHub Setup and Workflow](SimpleGitWorkflow.md) for a simpler setup without a fork, if you only need read-only access. Note that this information is also relevent to this (more complex) workflow. @@ -13,7 +13,7 @@ 2. Make sure you have a GitHub account and that you are logged in (If you are logged into GitHub your user name in the very upper right corner of display will be an icon for your user identity). See https://github.com for information on getting an account. The instructions will tell you to download GIT tools. You can - do this if you like, however Visual Studio 2015 has all the GIT functionality you will need so you don't + do this if you like, however Visual Studio has all the GIT functionality you will need so you don't have to have them (but it does not hurt, and they are useful for more advanced scenarios). 3. Click on the 'Fork' button in the upper right corner. If it asks you were to put he fork, you will wish to put it in your account area (same as your user name). Note that if the fork already exists it simply @@ -31,7 +31,7 @@ At this point you should have a local clone of your personal read-write fork of the main repository. However this is a FULLY INDEPENDENT clone which will NEVER SEE ANY UPDATES from the main repository unless you explicitly integrate (merge) them. To make easy to do this updating, it is good to create an alias for the original master repository. Here -we show you how to do that in Visual Studio 2015. +we show you how to do that in Visual Studio. 1. Click on the View -> Team Explorer menu item 2. Click on the top bolded header (may say 'Home' or 'Changes', ...) and right click on 'Settings' @@ -71,7 +71,7 @@ all these changes to bring your fork up to date. We do this in three steps 2. Merge the changes from the upstream/master branch into the LOCAL repository's master branch. 3. Push the changes from the LOCAL repository's master branch into the master branch of the GitHub fork (called origin). -####Step 1: Fetching All Commits for the Upstream Repository. +#### Step 1: Fetching All Commits for the Upstream Repository. 1. Click on the View -> Team Explorer menu item 2. Click on the bolded header (may say 'Home' or 'Changes', ...) and right click on 'Sync' option. This will bring @@ -83,7 +83,7 @@ all these changes to bring your fork up to date. We do this in three steps and put them in the LOCAL GitHub repository. So far we have made or local repository bigger (more commits) but we have not changed any existing branch (the transitive closure of any branch is the same as it was before). -####Step 2: Merging the LOCAL repository's master branch to include changes from upstream/master +#### Step 2: Merging the LOCAL repository's master branch to include changes from upstream/master 1. Click on the View -> Team Explorer menu item 2. Click on the top bolded header (may say 'Home' or 'Changes', ...) and right click on 'Branches' item which show you @@ -93,9 +93,10 @@ all these changes to bring your fork up to date. We do this in three steps 3. Make sure that the 'active branch' (the one in bold) is 'master'. If not double click on master to make it the active branch. If it fails (and it could easily fail because you have modified files), you will have to commit or undo those changes before proceeding. Ultimately you want 'master' to be the active branch. - 4. Click on the 'remotes/upstream/master' branch, right click on it and select 'merge from' This says we want - to integrate (merge) all changes from the upstream/master branch into the currently active branch (which is master). - A dialog will come up with text boxes filled out. Simply click the 'Merge' button. + 4. Right Click on the 'master' branch, right click on it and select 'Merge from'. Then in the 'merge from' textbox select + upstream/master and click the 'Merge' button. This says we want to integrate (merge) all changes from the + upstream/master branch into the currently active branch (which is master). + In most cases this merge operation goes without a hitch and Visual Studio will auto-commit the merge. However if there is a merge conflict with changes that you have made to 'master' (you really should never do that, put changes in some other diff --git a/documentation/SettingUpRepoInVS2015.md b/documentation/SettingUpRepoInVS.md similarity index 92% rename from documentation/SettingUpRepoInVS2015.md rename to documentation/SettingUpRepoInVS.md index 672cc85bb..515c2aa43 100644 --- a/documentation/SettingUpRepoInVS2015.md +++ b/documentation/SettingUpRepoInVS.md @@ -1,23 +1,24 @@ -#GitHub Repository Setup with Visual Studio 2015 +# GitHub Repository Setup with Visual Studio 2017 This section tells you how to set up to build a project that is hosted on GitHub, -using Visual Studio 2015. It also goes through important routine tasks like -getting the latest changes from GitHub and submitting a pull request to the master branch. +using Visual Studio 2017. If you don't already have Visual Studio 2017, you +can get the community edition for free from [this link](https://www.visualstudio.com/vs/community/). +This section also goes through important routine tasks like getting the latest +changes from GitHub and submitting a pull request to the master branch. -It will show you how to do this using just Visual Studio 2015. It will also show -how to do this with command line GIT as well. Older version of Visual Studio as -well as other IDEs are possible, but not covered here. +It will show you how to do this using just Visual Studio 2017. Older version +of Visual Studio as well as other IDEs are possible, but not covered here. +You can also use 'raw' git commands but I don't cover that here. We use the PerfView project https://github.com/Microsoft/perfview as an example but the vast majority of this section applies to any open source GitHub hosted project. The step-by-step instructions will not make a whole lot of sense however without -a certain amount of background knowlege about a basic understanding of what GIT +a certain amount of background knowledge about a basic understanding of what GIT and GitHub do and some of the basic concepts associate with the GIT source code control system. This is where we start. -------------------------------------------------------------------------------- -##Background: GitHub Repos, Commits Branches and GitHub +## Background: GitHub Repos, Commits Branches and GitHub The set of all files versioned as a unit by the GIT source code control system is called a repository, or *repo* for short. Logically a GIT repository contains a @@ -69,7 +70,6 @@ from 'master') whenever independent work is being done. These independent bran can then be merged into 'master' (or as we will see used as pull requests) independently of each other. ---------------------------------------------------------------------------------- ## Two Possible Repository Setups This section tells you about two possible ways to use a GitHub repository, and why diff --git a/documentation/SimpleGitWorkflow.md b/documentation/SimpleGitWorkflow.md index 71a4fd7b6..fd8e9d9de 100644 --- a/documentation/SimpleGitWorkflow.md +++ b/documentation/SimpleGitWorkflow.md @@ -1,4 +1,4 @@ -#Setting Up *Without* a Fork with Visual Studio 2015 +# Setting Up *Without* a Fork with Visual Studio 2015 * See also [Setting up a Repo in VS 2015](SettingUpRepoInVS2015.md) for important background material. * See also [Open Source GitHub Setup and Workflow](OpenSourceGitWorkflow.md) for the setup needed for pull requests. @@ -21,7 +21,7 @@ of course you will only have read-only access. At this point Visual Studio will create a local clone all the files in a project in the directory you specified. This represents the final state of all files in the default branch (probably 'master'). It also clones repository (thus the history for all time) and places it in a hidden .git directory in the directory you specified. It is this cloned local repository where most GIT -commands you do operate. +commands you do operate. By default your clone ended up in %HOMEPATH%\Source\Repos\PerfView. Once the clone is complete, you will see the new local repository added to the list under 'Local Repositories'. You can see which one is 'active' because it is bold-faced. This is the repository that all other VS GIT commands will @@ -32,13 +32,13 @@ At the bottom you will see a list of .SLN files. There are all the Visual Studi of the repository. This makes it convenient to open VS to do a build. In the case of PerfView, you want the PerfView.sln file. After opening the solution file you can start building (Build -> Build Solution or Ctrl-Shift-B). -##Making changes +## Making changes GIT is a bit unusual in that there is no 'checkout' command. You can modify anything in the local copy of the files at will. You can think of it as modifying a file will cause an automatic checkout, but this works no matter how the file was changed (thus it is more like every git command starts by looking at files to see what the checked out set is in the repo). -##Committing Trivial Changes to Master Branch +## Committing Trivial Changes to Master Branch As mentioned GIT has the concept of the 'active branch' which is the branch the 'commit' operation uses to stamp the commit (snapshot) with the predecessor commit (snapshot). Thus the active branch is what determines the 'history' of @@ -62,7 +62,7 @@ you are commiting to. After you have filled out the description, you can simply hit the 'Commit All' button to commit your changes. -##Don't use Master Branch for Non-trivial Features. +## Don't use Master Branch for Non-trivial Features. Committing directly to the master branch is fine for small, independent edits, however it is a *bad idea for any feature that **might** involve multiple commits*. This includes any pull @@ -87,7 +87,7 @@ you for a new branch name and hit the 'Create Branch' button. This new branch active branch so you can go back to the 'Changes' pane (left click on the 'Branches' Header) and complete the commit. -##Switching Branches +## Switching Branches Once you have more than one branch, you will want to be able to switch the active branch from one branch to another. You do this in the 'Branches' pane (View -> Team Explorer -> Branches). @@ -101,7 +101,7 @@ Typically you only switch branches if you have no modified files (in which case If you hit this error (and you will), the solution is to commit your changes (if necessary to a new temporary branch for that purpose) at which point you can switch branches. -##Synchronizing the GitHub repository and the Local Repository. +## Synchronizing the GitHub repository and the Local Repository. After you have made edits, or when you want to pull down any GitHub changes to your local repository you need to sync. Technically syncing is actually a combination of two operations a @@ -128,17 +128,17 @@ the active branch. If there are merge conflicts Visual Studio will stop and give you an opportunity -##Discarding Changes +## Discarding Changes If you decide you want to abandon changes, simply go to the View -> Team Explorer -> Changes view, select all the files, right click and select Undo Changes. -##Viewing history +## Viewing history From the View -> Team Explorer -> Branches view you can right click on any branch (it does not need to be the active one) and select 'View History'. -##Review +## Review At this point we have described the critical workflows 1. Synchronization with what is in GitHub diff --git a/documentation/TraceEventProgrammersGuide.md b/documentation/TraceEventProgrammersGuide.md new file mode 100644 index 000000000..7f5c3993e --- /dev/null +++ b/documentation/TraceEventProgrammersGuide.md @@ -0,0 +1,913 @@ +# The TraceEvent Library Programmers Guide + +Vance Morrison + +## Introduction: Strongly Typed (Semantic) Logging + +As long as there have been programs, developers have used logging system to diagnosis functional and performance problems. Logging systems break down into two broad categories: + +1. Weakly typed: The logging system only knows how to log strings and thus all data is converted into strings before it is logged. Printf logging is an example of this. These are the simplest logging systems and are a fine choice for ad hoc investigations by humans, however they suffer if the volume of data increases or if there is a desire to manipulate the data being logged programmatically. +2. Strongly typed (also known as [Sematic Logging](http://blogs.msdn.com/b/agile/archive/2013/02/07/embracing-semantic-logging.aspx)): In these logging systems each event is assigned schema which defines + 1. The name of the event + 2. The names and types of all the data items that are logged along with the event + 3. Optional meta-data about the event (groups it belongs to, its verbosity etc.). + +Because the events are strongly typed, the consumer of the logging data can assume that the events conform to the schema which makes processing the events considerably easier and less fragile. It also improves the speed and compactness of logging as well as the post processing (no need to print to strings and then parse back). The [Event Tracing for Windows](http://msdn.microsoft.com/en-us/library/windows/desktop/bb968803(v=vs.85).aspx) (ETW) system built into the Windows Operating System is an example of a strongly typed logging system (see [Introduction to ETW](http://msdn.microsoft.com/en-us/magazine/cc163437.aspx) for more) + +In general strongly types logging systems make sense in the same places where strongly typed programming languages make sense, when + +1. When the data is likely to be consumed by other automation rather than simply viewed by humans. +2. When the amount of data (scale of logging) is high and therefore puts a premium on logging efficiently. +3. When the logging system is intended to 'last forever', and will need to be constructed in a decentralized way by many diverse people over many versions. +4. When the code logging the data versions at a different rate than the code processing the event data. + +Server scenarios (aka the 'cloud') generally value these attributes since they are likely to want to automate the monitoring task, deal with high scale, and be developed by many programmers over time. Thus strongly typed eventing is a natural fit for the cloud. + +The TraceEvent library is [NuGET](https://www.nuget.org/) package that provides a set of .NET Runtime classes that make it easy to control and consume (parse) the strongly typed [Event Tracing for Windows](http://msdn.microsoft.com/en-us/library/windows/desktop/bb968803(v=vs.85).aspx) (ETW) events. It is intended to be used in conjunction with the [`System.Diagnostics.Tracing.EventSource`](http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) class (which can generate ETW events) to form a complete, end-to-end, strongly typed logging system. + +## Basic Logging Architecture + +There are three basic parts to and ETW based logging system as shown in the figure below + +![Logging Architecture](images/LoggingArchitecture.png) + +1. The **Event Session** (represents the entity controlling the logging). The session has the ability to tell the providers of events to start and stop logging and control how verbose the logging is. It also has the ability to route the data to various places. It can indicate that the data should be directly written to a file (for maximum efficiency) or to send it to the session itself (for on the fly processing) +2. The **Event Provider** is the part of the logging system that is wired into the application to be monitored. Its job is to call a logging API when interesting things happen in the application. +3. The **Event Consumer** takes the data from the file or from the session and consumes it in some way, typically generating aggregate statistics and generating alerts. + +Corresponding to each of these 'players', the TraceEvent library has a class that supports that role. + +1. The **Event Session** uses the `Microsoft.Diagnostics.Tracing.TraceEventSession` class. +2. The **Event Provider** uses the `Microsoft.Diagnostics.Tracing.EventSource` class. +3. The **Event Consumer** uses the `Microsoft.Diagnostics.Tracing.TraceEventSource` class. + +It is not uncommon for each of these 'roles' to be implemented in a separate process, but it is also common for some of the roles to be combined (most commonly the Session and the Consumer are in the same process). + +Because the logging system is strongly typed, each event conforms to a particular schema and the event consumer needs to know this schema to decode the event data. The ETW system calls this schema the [manifest](http://msdn.microsoft.com/en-us/library/windows/desktop/dd996930(v=vs.85).aspx) and one representation of this is an XML file, but it also is stored in a binary form for efficient processing. One of the responsibilities of an event provider is to publish a manifest for the events that it generates so that the event consumer can find it when it needs it. As we will see there are a number of different ways of doing this. This information flow is designated in the diagram above by the red arrow. + +### Multi-player + +An important aspect of the architecture that is not obvious in the diagram above is that each of the elements of the diagram can have multiple instances. Thus there can be: + +1. Multiple event providers, each emitting events for the part of the system they understand, and each of which has a manifest for the events it might emit. +2. Multiple event sessions each of which are gathering different sets of events for different purposes. Each of these sessions has the option of logging its events to a file or to the session itself in real time. +3. Multiple event consumers that can process the events from a file or session. It is not recommended however to have multiple consumers feeding from the same event session in real time. Instead it is simpler and better to have multiple session each feeding a unique event consumer in the real-time case. + +### Asynchronous + +Another fundamental property of the system that is not obvious from the diagram above is that the logging system is asynchronous. When a provider writes an event, it is a 'fire and forget' operation. The event quickly gets written to a buffer and the program continues. From this point on processing of the event is concurrent with the running of the application. This has a number of ramifications: + +1. **Logging is fast and scalable.** Only the initial copy to the first buffer in the logging pipeline actually delays the program. Note that this is independent of the number of sessions or consumers. All the rest of the logging activity happens on other threads of execution and can be parallelized (thus it scales well). +2. **Logging has minimal and predictable impact on the program.** There are no 'global locks' that need to be taken by the provider when it logs events. Because of this it is much more likely that behavior of threads (races) with logging on will be essentially the same (statistically speaking) as with logging off. +3. **There is the possibility of lost events.** If the providers generate event faster than the file can store them (or the real time processor can process them), then eventually events need to be dropped. This is the price you pay for making the writing of an event be asynchronous. The system will detect that events are lost, but the event data itself is unrecoverable. + +## Quick Start Example + +Enough theory. Let's see how this works in practice. + +### Component 1: the Event Provider (`EventSource`) + +We start by logging some events using `System.Diagnostics.Tracing.EventSource`. You and paste this code into a console application project to have a fully working example (compiled against V4.5 or later of the runtime) if you wish. + +```csharp +using System.Diagnostics.Tracing; + +[EventSource(Name = "Microsoft-Demos-MySource")] +class Logger : EventSource +{ + public void MyFirstEvent(string MyName, int MyId) { WriteEvent(1, MyName, MyId); } + public void MySecondEvent(int MyId) { WriteEvent(2, MyId); } + public static Logger Log = new Logger(); +} + +class Program +{ + static void Main(string[] args) + { + Logger.Log.MyFirstEvent("Hi", 1); + Logger.Log.MySecondEvent(1); + } +} +``` + +Above is source code for a program that logs two events using `EventSource` class. To be strongly typed, we must provide a schema for each event, and we do this by defining a subclass of the `EventSource` class. This class will have an instance method for each event that can be logged by this provider. In the example above we define two events. + +1. The `MyFirstEvent` that logs a string *MyName* and an integer *MyId*. +2. The `MySecondEvent` that logs just the integer *MyId* (which allows it to be correlated with the corresponding `MyFirstEvent`). + +Notice that the method definitions provide all the information needed to generate the schema for the events. The name of the method defines the name of the event, and the argument names and types provide the names and types of each of the properties associate with the event. + +In a more perfect world, humans would only author the declarations of an EventSource class since it is these declarations that specify the programmer's intent. However to make these methods actually log events, the user need to define a 'boiler plate' body for each event that does two things + +1. Defines a numeric value associated with the event. This is the first parameter to the `WriteEvent` method call and is used to identify the event in all further processing (the event name is only used to generate the manifest). These event numbers start at 1 (0 is reserved) and by default needs to be the ordinal number of the method in the class. Thus it would be an error to reverse the order of the `MyFirstEvent` and `MySecondEvent` declarations above without also changing the first parameter to `WriteEvent` to match the order in the class. If this restriction bugs you we will see how to avoid it later, but it will mean more typing on your part. +2. Passes along all the arguments from the method to the `WriteEvent` method. Because the arguments to the event method are used to generate the manifest, and the manifest is supposed to accurately describe the event, it would be an error to more or fewer arguments to `WriteEvent`. Thus the `WriteEvent` method is intended to be used only in this very particular way illustrated above. + +The `Logger` class also has an attribute that defines the name for this provider to be **Microsoft-Demos-MySource**. If this attribute had not been provided the name of the provider would have been the name of the class without any namespace (e.g. **Logger**). If your provider is for more than ad-hoc logging, it is **STRONGLY** encouraged that you define a 'real' name for it that avoids collisions and helps your users understand what information your provider will log. We should follow the 'best practices' which the Windows Operation system group uses by making our name: + +* Start with the company name first (unique world-wide). +* Then follow it with the name of a product or family of products. +* Use further sub-groups as needed. +* All separated by dashes (-). + +Finally, in our example above the Logger class also defines a global static variable which creates an instance of the class that we use to log events. Having more than one instance of a particular `EventSource` is not recommended, since there is a cost to construct them, and having two serves no useful purpose. Thus most event sources will have a single instance, typically in a static variable that was auto-initialized as shown above. + +Once we have our `Logger` event source defined, we simply call the event methods to log events. At this point we have an application with a fully functional ETW provider. Of course those events are off by default, so this program does not do anything yet, which brings us to step 2. + +### Component 2: The Event Session (`TraceEventSession`) + +To turn on events we need an Event Session, which is defined by the `TraceEventSession` class. Typically this session will be in another process (typically some data-collection service or program but it can even by the process logging the event). Here is code that does that. (Again you can cut and paste this into a console application which has referenced the [TraceEvent Nuget Library](http://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent) to have a complete program) + +```csharp +using Microsoft.Diagnostics.Tracing.Session; + +class Program +{ + static void Main() + { + using (var session = new TraceEventSession("MySession", "MyEventData.etl")) + { + session.EnableProvider("Microsoft-Demos-MySource"); + System.Threading.Thread.Sleep(10000); + } + } +} +``` + +In the code above, the program: + +1. Creates a new `TraceEventSession`, each session is given a name that is unique ACROSS THE MACHINE. In our case we called our session **MySession**. Sessions CAN live beyond the lifetime of process that created them, and this name is how you refer to these sessions from other processes besides the process that created them. We also specify a file where the data is to be logged. By convention, these data files use the .ETL (Event Trace Log) suffix. +2. Once we have a session, we need to enable the providers. This can be done either by specifying the name of the provider or by using the unique 8 byte GUID that was assigned to the provider. Typically you will do this by name, which is what we do here, but in future example we will see cases where using the GUID is more convenient. +3. Waits for events to come in. In this case we simply wait 10 seconds. During this time any process that has `Logger` instances in it will log methods to this file. Both existing and newly created processes will log events. +4. Next we close the session. `TraceEventSession` implements `IDisposable` and the `using` clause will naturally dispose the session when the `session` variable goes out of scope. This causes the session to be torn down and the **MyEventData.etl** file will be closed. + +That is it, thus running the program and then running the previous program simultaneously, will create a **MyEventData.etl** file with two events in it (the `MyFirstEvent` and `MySecondEvent`). + +### Component 3: The Event Processor (`ETWTraceEventSource`) + +Now that we have a data file, we can process the data. This is what the `ETWTraceEventSource` class does. + +```csharp +using Microsoft.Diagnostics.Tracing; +using System; + +class Program +{ + static void Main() + { + using (var source = new ETWTraceEventSource("MyEventData.etl")) + { + // Set up the callbacks + source.Dynamic.All += delegate(TraceEvent data) { + Console.WriteLine("GOT EVENT {0}", data); + }; + source.Process(); // Invoke callbacks for events in the source + } + } +} +``` + +In the program above we + +1. Create an `ETWTraceEventSource` that uses the **MyEventData.etl** file as its data source. The `ETWTraceEventSource` represents the stream of events as a whole. Because this class needs to support real time processing of events it does not use the `IEnumerable` (pull model) for processing the events but rather provides a way of registering a callbacks. +2. Register callback for any events we are interested in. In this case we register a delegate that receives *data* (of type `TraceEvent`) and prints **GOT EVENT** and the event data for **All** events in the **Dynamic** group associated with the session. (More on this mysterious `Dynamic` property shortly). +3. Call the `Process` method, which causes the callbacks to actually be called. This method only returns when there are no more events (end of file), or because processing was explicitly stopped prematurely. +4. We dispose of the `ETWTraceEventSource` (the `using` clause does this for us when `source` goes out of scope). This closes the file and release all resources associated with the processing. + +Running the program above will result in the following output: + +``` +GOT EVENT: +GOT EVENT: +``` + +Some useful things to call out about the output: + +* The event is automatically stamped with a very accurate timestamp (typical resolution is 10 nsec or so) which indicates exactly when in time the event occurred. +* The process and thread on which the event fired is also captured automatically. +* The name of the provider as well as the event name are also captured. +* All data items in the payload are also decoded. The names of the data items *MyName* and *MyId* are recorded (as well as their types) along with the specific value. + +In this example we simply use the `ToString` method to print an XML representation of the event, however there are APIs for getting at all the data items above (including the payload values) in a convenient programmatic way. This is the real 'value add' of strongly typed logging. + +At this point we have constructed an end-to-end example, creating a controller (`TraceEventSession`) that activated a ETW provider (our `Logger` implementation of `EventSource`) and send the data to a file which we then read with a consumer (`ETWTraceEventSource`) to pretty print the resulting events. + +## Event Parsing 'Magic' (`TraceEventParser` and derived types) + +We have so far glossed over exactly how the `data.ToString()` call was able to determine the names of the events (e.g. `MyFirstEvent`) as well as the names of the arguments (e.g. *MyName* and *MyId*) of the two events that were logged. We explain this important aspect here. + +The ETW architecture breaks event data needed by parsers into two categories: + +1. Information which is known before an event is actually fired (e.g. provider names, event names, arguments, types, verbosities, ...). This schema data can be described by XML called a manifest. Each event provider conceptually has a manifest that describes the events it might log. +2. Data that is only known at logging time and needs to be serialized into the data stream. (e.g. the string and integer values passed to `MyFirstEvent` and `MySecondEvent`, but NOT the names **MyFirstEvent** and **MySecondEvent** (they are in the first category)). + +An important architectural point is that an `ETWTraceEventSource` is a source of UNPARSED events. These are resented by the `Microsoft.Diagnostics.Tracing.TraceEvent` class. These unparsed events will only know what is known **without looking at a manifest**. Thus it knows things like the timestamp, process ID, provider ID (GUID) and event ID (the small integer you pass to `EventSource.WriteEvent`). It even has the payload blob of bytes, but it does not know how to interpret them. + +This is why although you CAN subscribe to events directly from `ETWTraceEventSource`, (this is what the `AllEvents` registration point does), generally you don't want to do this because the event you get back will not be able to give you names of events or decode the payload values. + +Instead you need to hook the `ETWTraceEventSource` up to a `TraceEventParser`. As its name implies, a `TraceEventParser` is a class that knows how to parse some set of events. For example there is a class called `KernelTraceEventParser` that knows how to parse most of the events that can be generated by the Windows OS kernel. When this parser is created, it is 'attached' to a particular `TraceEventSource`. It in turn exposes a set of callback registration points (events in the C# sense) that allow you to subscribe to particular **parsed** events. For example the `KernelTraceEventParser` has the subscription point: + +```csharp +public event Action ProcessStart; +``` + +which fires whenever a new process starts on the machine. You can subscribe to this event like so + +```csharp +kernelParser.ProcessStart += (ProcessTraceData data) => Console.WriteLine(data.CommandLine); +``` + +Which creates a C# delegate (the `=>` operator) which takes `ProcessTraceData`, and prints out the command line that started the process. Thus a parser + +1. Has a subscription point (a C# event) for every event it knows about (in this case we see the `ProcessStart` event). +2. For each such event, if there are payload values, then there is a specific subclass of `TraceEvent`, which defines properties for each data item in that event. In the example above the `ProcessStart` event has payload values (event arguments) like *CommandLine* and *ParentID* and you can simply use C# property syntax to get their value, and the properties have the types you would expect them to have (string for *CommandLine* and integer for *ParentID*). + +Here is where the 'strong typing' of the logging becomes apparent. On the one end an `EventSource` logs strongly typed set of arguments (with names), and on the other end they pop out of a `TraceEventParser` as a class that has properties that let you fetch the values with full type fidelity. + +Thus in general you get a diagram that looks like this: + +![Event Parsing](images/EventParsing.png) + +Where potentially many different `TraceEventParser` types are 'attached' to a `TraceEventSource` and then in turn many callbacks are registered to the parser that knows how to decode them. The result is that you get fully parsed events in your callback code. Here is code that shows how to 'connect' the `KernelTraceEventParser` class to an `ETWTraceEventSource` and then subscribe to a the `ProcessStart` event and fetch out the process name and command line. Notice that in the callback delegate we specify a specific subclass of `TraceEvent` called `ProcessTraceData` which in addition to all the generic properties of an event (*Name*, *Process*, *Timestamp*, ...) also has properties for those specific to the `ProcessStart` event (e.g. *ProcessName*, *CommandLine*, *ProcessID*, ...). + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Diagnostics.Tracing.Parsers.Kernel; +using System; + +class Program { + static void Main() { + // Get a source that can return the raw events. + using (var source = new ETWTraceEventSource("MyEventData.etl")) { + // Connect a parser that understands kernel events + var kernelParser = new KernelTraceEventParser(source); + + // Subscribe to a particular Kernel event + kernelParser.ProcessStart += delegate(ProcessTraceData data) { + Console.WriteLine("Process {0} Command Line {1}", + data.ProcessName, data.CommandLine); + }; + + source.Process(); // call the callbacks for each event + } + } +} +``` + +Certain parsers (the **Kernel**, **Clr**, and **Dynamic** parsers) are so common that there is a shortcut property that makes it easier than the code above. In the code below we use the `Kernel` property on the `ETWTraceEventSource` object to get the kernel parser, and so the code can be simplified to the following. + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Parsers.Kernel; +using System; + +class Program { + static void Main() { + // Get a source that can return the raw events. + using (var source = new ETWTraceEventSource("MyEventData.etl")) { + // Set up callback for a particular event + source.Kernel.ProcessStart += delegate(ProcessTraceData data) { + Console.WriteLine("Process {0} Command Line {1}", + data.ProcessName, data.CommandLine); + }; + source.Process(); // call the callbacks for each event + } + } +} +``` + +The TraceEvent library comes with a number of `TraceEventParser` parsers built in (in the namespace `Microsoft.Diagnostics.Tracing.Parsers`) including + +* `KernelTraceEventParser` - which knows about windows OS kernel events. These include DLL loading, process start, stop, CPU sampling, page faults, Disk I/O file I/O, memory, etc. +* `ClrTraceEventParser` - which knows about Common Languages Runtime (.NET CLR) events. These include GC events, Just in Time compilation events, Exception events, ... +* `DynamicTraceEventParser` - which knows about any event provider that have 'dynamic' manifests, in the sense that manifest information is dumps into the event stream using a stand convention. All `EventSource` types follow this convention, and thus all EventSources can be parsed by this parser. +* `RegisteredTraceEventParser` - which knows about any event provider that registers itself with the operating system (using the **wevtutil** command)). This includes most providers that ship with the windows operating system that are NOT the kernel provider or `EventSource` sources. You can see a list of such providers with the `logman query providers` command. +* `WPPTraceEventParser` - which knows how to parse events written with the [WPP Tracing](http://msdn.microsoft.com/en-us/library/windows/hardware/ff556204.aspx) system. Device drivers and other low-level components often use this mechanism. +* `JScriptTraceEventParser` - which knows about the JavaScript runtime events +* `TPLTraceEventParser` - which knows about the Task Parallel Library (another name for classes in the `System.Threading.Tasks` namespace). +* `ASPNetTraceEventParser` - which knows about ASP.NET events. + +As mentioned the first three providers are so common, that the `ETWTraceEventSource` has three shortcut properties (`Kernel`, `Clr`, and `Dynamic`), that allow you to access these providers in a very easy way. + +We are now **finally** in a position to explain the mysterious piece of code in our original example that parsed `EventSourceEvent`: + +```csharp +source.Dynamic.All += delegate(TraceEvent data) { ... } +``` + +This code takes the `ETWTraceEventSource` *source* and fetches the `DynamicTraceEventParser` using the `Dynamic` property, and then asks that parser to call it back on all events THAT THAT PARSER KNOWS ABOUT. Thus `All` does not mean every event coming in from the source, but just all events that a `DynamicTraceEventPaser` can parse (which is basically any event generated from an `EventSource`). + +### Static vs. Dynamic `TraceEventParser` parsers + +You will notice that in our first example where we were parsing `EventSource` events using the `DynamicTraceEventParser` the callback was declared as receiving its event data as a `TraceEvent`, and not some subclass (like `ProcessTraceData`). This might lead you to believe that the data is not parsed, and you would be half-right. Because parsers like `DynamicTraceEventParser` only learn about the event schema at runtime, it does not even 'make senses' to generate specific types like `ProcessTraceData` that have the right properties because we simply don't know these at compile time. However `EventSource` sources DO log this manifest information to the ETW stream itself, so the information needed to decode the ETL file is in the file at runtime. Thus the `DynamicTraceEventParser` CAN decode the event. In particular there are functions like `TraceEvent.PayloadByName(string)` which given a string name will return the payload for that property. For example here is the first example where we fetch the *MyName* and *MyId* fields from the `MyFirstEvent` event. At compile time we only know that the return event is a `TraceEvent` but the `DynamicTraceEventParser` is able to parse it can return type-correct values from the `PayloadByName` method. + +```csharp +using Microsoft.Diagnostics.Tracing; +using System; + +class Program +{ + static void Main() + { + using (var source = new ETWTraceEventSource("MyEventData.etl")) + { + // Set up the callbacks + source.Dynamic.AddCallbackForEvent("MyFirstEvent", delegate(TraceEvent data) { + Console.WriteLine("GOT MyFirstEvent MyName={0} MyId={1}", + data.PayloadByName("MyName"), data.PayloadByName("MyId")); + }); + source.Process(); // Invoke callbacks for events in the source + } + } +} +``` + +Clearly this experience is a step down from what you get with a compile time solution. Certainly it is clunkier to write, and also error prone (if you misspell *MyName* above the compiler will not catch it like it would if we misspelled `CommanLine` when accessing process data). It is also MUCH less efficient to use `PayloadByName` than to use compile time trace parser properties. What we would have LIKED to write is something like the following + +```csharp +source.Dynamic.AddCallbackForEvent("MyFirstEvent", delegate(MyFirstEventTraceData data) { + Console.WriteLine("GOT MyFirstEvent MyName={0} MyId={1}", data.MyName, data.MyId); +}); +``` + +Where we have an event-specific type that with a `MyName` and `MyId` property. Thus even though `DynamicTraceEventParser` is sufficient to parse events from an `EventSource` with full fidelity, if you are doing more than just printing the event, it is a good idea to create a static (compile time) parser that is tailored for your `EventSource` and thus can return compile time types tailored for your event payloads. This is what the **TraceParserGen** tool is designed to do, which we will cover later. + +## Lifetime constraints on `TraceEvent` objects + +In the most common scenarios involving the `TraceEvent` library, a user program will scan over a very large stream of events in an ETL file will only care about a small fraction of the data collected. Because of this, `TraceEvent` is tuned to be as efficient at scanning events as possible. To achieve this TraceEvent **AGGRESIVELY REUSES** the `System.Diagnostics.Tracining.TraceEvent` objects that it passed to user code. + +Consider the following simple example that scans the **MyEventData.etl** file for `ProcessStart` events from the kernel to find the first process that started during data collection. + +The user registers a callback delegate with the `ProcessStart` events associated with the `KernelTraceEventParser`. This delegate will be called with a `ProcessTraceEvent` argument which represents the event. It is important to realize that **user code cannot keep references to this object after the callback has returned**. This is because the next `ProcessStart` event the library returns will likely overwrite this object with new data, leading to errors. + +In the code above the user code wished to remember the data associated with a particular event (the first process start event), and thus has a problem. There are two options: + +1. Create a new user-defined object and copy out the necessary data into this object at scan time. Thus no reference to the `TraceEvent` object survives the callback. +2. Use the `TraceEvent.Clone()` method. This method will make a copy of `TraceEvent` object which will not be reused by the library. + +As you can see, the code above opted for the second technique. All that is required is to call the `Clone()` method (and probably cast it back to its most specific type), before storing it in a long-lived reference. This is a moderately expensive operation (copying 50 or so bytes of data), so if you only need a handful of fields and you have an obvious user-defined structure on which to keep them, the first option (copying what you need out of the event), is more efficient. + +While cloning events a bit of a pain, by aggressively reusing event object, in the common case you can scan a file with millions of events and not have to allocate any objects in the main scanning loop. This is an important performance win. + +## Review of the Fundamental TraceEvent Architecture + +At this point you have the fundamentals of the TraceEvent library. + +1. `TraceEventSession` starts new ETW sessions and turn on ETW providers and direct the output. +2. ETW Providers you can turn on include: + 1. The Window OS Kernel Provider, .NET and Jscript Runtime, as well as most OS components. + 2. Any `System.Diagnostics.Tracing.EventSource` you create in your own apps. +3. You process the events by first hooking up a `ETWTraceEventSource` to the event stream (either a file or real time). +4. The events in the `ETWTraceEventSource` are unparsed. To parse them you need to hook the appropriate `TraceEventParser` up to your `ETWTraceEventSource`. These Parsers are either: + 1. Static (compile time) which are easier to use and very efficient but require that you know the schema of the events you wish to use at compile time. Static parsers include most of the ones that come with the TraceEvent library as well as ones you generate from manifest files using the **TraceParserGen** tool (discussed later). + 2. Dynamic (run time) which are parsers that can process manifest information on the fly. There are only a handful of these including `DynamicTraceEventParser`, `RegisteredTraceEventParser`, and `WPPTraceEventParser`. These are not as convenient to code against, and are less efficient, but are often used when the processing to be done is minimal (e.g. printing). +5. Once you have a parser, you subscribe to the C# events you are interested in and your callbacks will get strongly typed versions of the events that understand the payload. +6. Once you have hooked up your subscriptions, you call `ETWTraceEventSource.Process()` to start processing the ETW stream and calling the appropriate callbacks. + +## What You Can Do With the TraceEvent Library + +To keep things concrete we 'went deep' so far, showing real code, but by necessity we restricted ourselves to the simplest possible scenario using the TraceEvent library. Now we 'go broad' and describe the breath of the library so you can determine if the library is capable of handling the scenario you have in mind. + +Capabilities include: + +* The ability to monitor ETW events, sending them either to a file or directly to a programmatic callback in 'real time'. +* The ability for those real time events to be passed to the [`IObservable`](http://msdn.microsoft.com/en-us/library/dd990377.aspx) interface and thus be used by the [Reactive Extensions](http://msdn.microsoft.com/en-us/data/gg577609.aspx). +* The ability turn on event providers selectively using ETW 'Keywords' and verbosity 'Levels'. You can also pass additional arguments to your provider which `EventSource` sources can pick up. In that way you can create very sophisticated filtering specification as well as execute simple commands (e.g. force a GC, flush the working set, and etc.). +* The ability to enumerate the ETW providers on the system as well as in a particular process, and the ability to determine what ETW groups (Keywords) you can turn on. +* Ability to take ETL files and merge them together into a single file. +* Ability to read an ETL file or real time session and write an ETL file from it, filtering it or adding new events (Windows 8 only). +* The ability to capture stack traces when events are being logged. +* The ability to convert the stacks to symbolic form both for .NET, Jscript, as well as native code. +* The ability to store events in a new format (ETLX) that allows the events to be accessed efficiently in a random fashion as well as to enumerate the events backwards as well as forwards, and to efficiently represent the stack information. +* The ability to make generate C# code that implements a strongly typed parsers for any ETW provider with a manifest (**TraceParserGen**). +* The ability to read events written with the [WPP Tracing](http://msdn.microsoft.com/en-us/library/windows/hardware/ff556204.aspx) system. +* The ability to access 'Activity IDs' that allow you to track causality across asynchronous operations (if all components emits the right events). +* Access Kernel events (along with stack traces), including: + * Process start/stop, Thread start/stop, DLL load and unload + * CPU Samples every MSec (but you can control the frequency down to .125 msec) + * Every context switch (which means you know where you spend blocked item) as well as the thread that unblocked the thread. + * Page faults. + * Virtual memory allocation. + * C or C++ heap allocations. + * Disk I/O. + * File I/O (whether it hits the disk or not). + * Registry access. + * Network I/O. + * Every packet (with compete data) that comes on or off the network (network sniffer). + * Every system call. + * Sampling of processor CPU counters (instructions executed, branch mispredicts, cache misses, ...) (Windows 8 only). + * Remote procedure calls. + * How the machine is configured (disk, memory, CPUs, ...). +* Access CLR (.NET Runtime) events, including: + * When GCs happen. + * When allocations are made (sampling and non-sampling). + * When objects are moved during a GC. + * When methods are Just In Time (JIT) compiled. + * When exceptions are thrown and the stack at which it was thrown. + * When `System.Threading.Task.Task` instances are created and scheduled. + * Addition information on why a .NET assembly failed to load (to diagnose failures). + * Information to decode .NET frames in stack traces. +* Access ASP.NET events which log when request come in and when various stages of the pipeline complete. +* Access WCF events which log packets as the go through their pipeline. +* Access JScript runtime events, including: + * Garbage collection. + * Just-in-Time (JIT) compilation of methods. + * Information to decode JScript frames in stack traces. + +You can also get a reasonably good idea of what is possible by taking a look at the [PerfView](http://www.microsoft.com/en-us/download/details.aspx?id=28567) tool. PerfView was built on top of the TraceEvent library and all the ETW capabilities of that tool are surfaced in the TraceEvent library. + +## ETW Limitations + +Unfortunately, there are some limitations in ETW that sometimes block it from being used in scenarios where it would otherwise be a natural fit. They are listed here for emphasis. + +* You send commands to providers on a machine wide basis. Thus you can't target particular processes (however if you own the event provider code you can pass it extra information as arguments to 'enable' command to the provider and have your provider implement logic to ignore 'enable' commands not intended for it). (Fixed in Windows 8.1). +* Because commands are machine wide and thus give you access to all information on the system, you have to be Elevated (Admin) to turn an ETW session on or off. +* By design the communication between the controllers and the providers is 'fire and forget'. Thus ETW is not intended to be a general purpose cross process communication mechanism. Don't try to use it as such. +* In real time mode, events are buffered and there is at least a second or so delay (typically 3 sec) between the firing of the event and the reception by the session (to allow events to be delivered in efficient clumps of many events). +* Before Windows 8, there could only one kernel session. Thus using kernel mode events for 'monitoring' scenarios was problematic because any other tools that used kernel sessions were likely to interfere by overriding the single Kernel model event logging session. +* In general scenarios having multiple controllers (sessions) controlling the same providers is dangerous. It can be done in some cases, but there is a significant potential for interference between the sessions. +* The file format is private, and before Windows 8 could be quite space inefficient (it compresses 8-to-1). Files can get big fast. +* Logging more than 10K events/sec will load the system noticeably (5%). Logging more frequently than 10K/sec should be avoided if possible. Logging 1M events/sec will completely swamp a typical machine. + +## Next Step: Code Samples + +The best way to take the next step in learning about the TraceEvent library is to experiment with the [TraceEvent code samples](http://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent.Samples). This is a [NuGet](http://www.nuget.org/packages) package that shows some simple but common scenarios. These samples are well commented with discussions on potential pitfalls and potential subtle design issues associated with the scenarios. They are worth the read. The Samples are in the TraceEvent Library Samples Package. A simple way of trying them out using Visual Studio is to: + +1. Create a new Console program project. +1. Right click on the 'References' icon under the new project's XXXX.*Proj file. In solution explorer. +1. Select 'Managed NuGet Pacakges'. +1. Search for 'TraceEvent' in the dialog that comes up. +1. Select 'TraceEvent Library Samples'. + +This will download the sample source code into your console application. The samples are in the **TraceEventSamples** directory. Take a look at them. There is a **README.TXT** file to get you going, which will tell you to modify your program to call: + +```csharp +TraceEventSamples.AllSamples.Run(); +``` + +To run all the samples. They should be self-explanatory. + +## Diagnostic Techniques: Using PerfView + +One prominent program that uses the TraceEvent library extensively is the [PerfView](http://www.microsoft.com/en-us/download/details.aspx?id=28567) tool. As its name suggests, this tool's primary purpose is the collection, aggregation, and display of data useful for performance investigation, however it also is a valuable tool for simply enabling and controlling ETW event providers like `EventSource` sources as well as displaying ETW events in a human readable fashion. + +In particular you can log the data from the **Microsoft-Demos-MySource** `EventSource` we defined to a file with the PerfView command: + +``` +PerfView collect /OnlyProviders=*Microsoft-Demos-MySource +``` + +Please note the `*`. This is PerfView's way of indicating that the name should be converted to a GUID in the standard way that `EventSource` sources define. Once you have the data you can view it using the PerfView **Events** view. It is very easy to filter by process, time, event name or text in the events, as well as export the data to Excel or XML. The following PerfView videos are especially relevant. + +* [Event Viewer Basics](http://channel9.msdn.com/Series/PerfView-Tutorial/Perfview-Tutorial-6-The-Event-Viewer-Basics) +* [Generating your own Events with EventSources](http://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-8-Generating-Your-Own-Events-with-EventSources) + +You will find having PerfView to be very handy when debugging your own ETW processing. + +### Full dumps of ETW events in PerfView + +Normally PerfView's event view does not show all the data in an ETW file. Things like the Provider GUID, EventID, Opcode and payload bytes are not shown because they typically are not relevant. However when you are debugging ETW processing of your own, these low level details can be critical so you would like to be able to see them. You can do this selectively in PerfView by doing the following: + +1. Find the Event that you are interested in (typically by looking at the timestamp). +1. Select the time cell of that event. +1. Right click and select → Dump Event. + +It will then open PerfView's log that will contain a XML dump of the event, including all low level information (including the raw payload bytes). + +### PerfView's `/keepAllEvents` feature + +By default PerfView filters out some kernel and CLR events that it does not believe are of interest to you. These events happen in the beginning and end of the file (so called DC (data collection) start and stop events). Most of the time this is a good thing, but if there is a problem you are trying to debug with these events this filtering is a problem. It can be disabled by starting PerfView with the `/keepAllEvents` option. Also you may also have to use the File → Clear Temp Files, GUI command if PerfView had already opened that particular ETL file. Otherwise it will simply use the old (filtered) data in a temp file. + +### Debugging EventSource Authoring + +While this document is really about TraceEvent, there is a good chance you will be authoring `EventSource` sources along the way. One pitfall of `EventSource` sources is that while they generate good diagnostic information when you make mistakes (like using the same event ID twice), these diagnostics only occur when the provider is actually enabled, and even then the exceptions that are thrown are swallowed by the runtime itself. The end effect is that the event source does not log events and it is not obvious why. + +There are number of ways to diagnose error when authoring a new `EventSource`: + +1. Develop the `EventSource` module using the [EventSource NuGet package](https://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.EventSource). This package as a compile time rule that will look for errors in your `EventSource` and warn you about them at compile time. This produces the best experience. +1. You should do all your development with the `EventSource` turned on. You can do this with the following command: + + ``` + PerfView /CircularMB=10 /OnlyProviders:*Microsoft-Demos-MySource start + ``` + + Which starts a circular logging session and leaves it on until you explicitly turn it off. Now you will get exceptions whenever your code runs, however they will still be swallowed. To fix that go to your Debug→Exceptions dialog and enable stopping on any thrown CLR exception. Any authoring mistakes will now be very obvious. +1. Use the `ConstructionException` property. By default `EventSource` sources NEVER throw exceptions (so that turning on logging will not induce an error). However in DEBUG code you should have logic like this in your program that explicitly looks for errors during construction + + ```csharp + if (MySource.ConstructionException != null) + throw MySource.ConstructionException; + ``` + + This technique, along with (2) above (turning on your `EventSource` constantly during development) will ensure that you find errors in your `EventSource` promptly error. + +1. Look at the `Exceptions` events in PerfView when you attempt to use your `EventSource` (see [this blog entry](http://blogs.msdn.com/b/vancem/archive/2012/12/21/why-my-doesn-t-my-eventsource-produce-any-events.aspx) for more). Basically even though the `EventSource` does suppress exceptions during construction, they are actually occurring (but being swallowed). PerfView can see these exceptions and display them to debug the issue. + +## Real Time Processing of Events + +In the examples so far, we have seen how to collect events to a file, and read the events from a file. It is also possible to do this skipping the creating of the file altogether by using what are called 'Real Time' source. Here is what one looks like that watches in real time for processes to start. + +```csharp +using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Diagnostics.Tracing.Parsers.Kernel; +using Microsoft.Diagnostics.Tracing.Session; +using System; + +class Program { + static void Main() { + // create a real time user mode session + using (var session = new TraceEventSession("ObserveProcs")) { + // Set up Ctrl-C to stop the session + Console.CancelKeyPress += (object s, ConsoleCancelEventArgs args) => session.Stop(); + + // Subscribe to a callback that prints the information we wish + session.Source.Kernel.ProcessStart += delegate(ProcessTraceData data) { + Console.WriteLine("Process {0} Command Line {1}", + data.ProcessName, data.CommandLine); + }; + + // Turn on the process events (includes starts and stops). + session.EnableKernelProvider(KernelTraceEventParser.Keywords.Process); + + session.Source.Process(); // Listen (forever) for events + } + } +} +``` + +You can see a few key differences between this code and the code that processes a file. + +1. It combines both the collection and processing together, so you have both a `TraceEventSession` and a `TraceEventSource`. +2. When the `TraceEventSession` is created it takes only the session name, a filename parameter is not needed since there is no file generated. +3. We set up a handler to call `Stop()` on the session when Ctrl+C is pressed. This stops what would otherwise be a infinite program. +4. You can get the `TraceEventSource` you need by accessing the `Source` property on a `TraceEventSession`. +5. From here you subscribe to events in the same way (finding the desired parser and registering a callback). +6. Once you are set up, you need to turn on providers. In this case we turn on **Kernel** providers that generate events for processes. Note that the **Kernel** provider is special and you need to call a special `EnableKernelProvider` API. User mode ETW provider (e.g. `EventSource` sources) would use the `EnableProvider` API as before. Here we are also showing the use of 'keywords' which are bitsets that indicate which events a provider CAN log should actually be logged. In our case we ask only for the **ProcessStart** events and not the many other events the **Kernel** source can provide. +7. Once you are set up, you call `Process()` just before. For real time sessions this call will wait forever until another thread calls `session.Stop()` (which is what the Ctrl+C handler does). + +When you run this program you will see that there is a noticeable delay of a few seconds between a process starting and the event callback being called. This is because ETW does not flush aggressively but waits a second or more before flushing. This is more efficient, but does mean a slight delay. Note that the events do have the very accurate timestamp that indicates exactly when the event occurred, so correlating events in time is still easy, there is just a delay before you get the data. + +## Real Time Processing with `IObservable` + +The [LINQ](http://msdn.microsoft.com/en-us/library/bb397926.aspx) library is a set of data-base like operators for manipulating any collection of objects (more formally any [`IEnumerable`](http://msdn.microsoft.com/en-us/library/9eekhta0.aspx)). It allows you to filter, map, select, group or sort the collection. However library does assume a 'Pull model' where the data object are passive, and the client is the master and 'pulls' the data from the collection one element at a time. The [Reactive Extensions](http://msdn.microsoft.com/en-us/data/gg577609.aspx) library is a .NET NuGet package that allows you do something very similar to LINQ but for a 'Push model' stream. In the push model the client registers callback functions and the send data source is the master that 'pushes' the data one object at a time to the client on its schedule. + +We have been using the push model in all the TraceEvent examples so far. It is characterized by having the user code register a callback and then having thread call a `Process()` method to wait for incoming data. This model is forced upon you when you are doing real time monitoring, since the collection of event never ends since more events can come in at any point. + +To support LINQ-like query operators for 'push style' scenarios, we need something like `IEnumerable` but set up for a push model. That is what [`IObservable`](http://msdn.microsoft.com/en-us/library/dd990377.aspx) is designed to do. The TraceEvent library exposes its streams of events as `IObservable` objects, and this allows you to use the LINQ-like query operators that the [Reactive Extensions](http://msdn.microsoft.com/en-us/data/gg577609.aspx) library defines to manipulate the data. It can be quite powerful. + +Here is an example of using TraceEvent's `IObservable` support to print out a line to the console every time a process starts. + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Diagnostics.Tracing.Parsers.Kernel; +using Microsoft.Diagnostics.Tracing.Session; +using System; + +class Program { + static void Main() { + // create a real time user mode session + using (var session = new TraceEventSession("ObserveProcs")) { + // Set up Ctrl-C to stop the session + Console.CancelKeyPress += + (object s, ConsoleCancelEventArgs args) => session.Stop(); + + // Create a stream of process start events. + var procStream = session.Source.Kernel.Observe("ProcessStart"); + + // Subscribe to the stream, sending data to the console in real time. + procStream.Subscribe(data => + Console.WriteLine("Process Started: Name {0} CmdLine {1}", + data.ProcessName, data.CommandLine)); + + // Turn on the process events (includes starts and stops). + session.EnableKernelProvider(KernelTraceEventParser.Keywords.Process); + + session.Source.Process(); // Listen (forever) for events + } + } +} +``` + +As you can see this example is VERY similar to the previous example that used c# events to subscribe to the real time events. The only differences are: + +1. Instead of using the C# `ProcessStart` event to register the callback you use the `Observe` method on a `TraceEventParser` to create an `IObservable` for specific events. +2. Once you have a `IObservable`, you call its `Subscribe` method to actually register the callback. + +In the example above there is not a lot of value in using `IObservable`. The value would come into play if you wish to use the [Reactive Extensions](http://msdn.microsoft.com/en-us/data/gg577609.aspx) LINQ-like operators to form complex transformations on the events. + +Note that UNLIKE the `IEnumerable` (`TraceEvents`) interface, the `IObservable` interfaces by default ALREADY do a `Clone()` of the `TraceEvent` object before returning it. Thus there is no need for you to call `Clone()` if the event came from an `IObservable` interface. + +The [TraceEvent code samples](http://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent.Samples) NuGet package has several examples of using the `IObservable` support. + +## Best Practices for Versioning ETW Events + +This section is really more about EventSource (production) than TraceEvent (consumption), but is likely relevant to users of TraceEvent as well. + +At some point you are going to have deployed EventSource that generate events and parsers built on TraceEvent for processing the events. Inevitably you will wish to update the events to include more data or otherwise change things. It is likely however that you do not wish to break things and you will not be able to update all event generators and consumers atomically. This is where versioning is important. + +The key to making this work is compatibility, and that is not hard to achieve if a few simple rules are followed. + +1. Events can never remove or change the meaning of existing fields. If you need to so this, you need to make new events that are logically independent from the old events. +2. If you wish to add new data to an existing event (the most common versioning operation), make sure you add it to the END of the existing arguments. This way the serialized format for the old fields is IDENTICAL and can be parsed by logic that has no understanding of the new data. +3. When you add data in this way, you should increment the version number for the event. You can do this for an `EventSource` by adding an attribute like `[Event(ID, Version=1)]`. When you don't provide a version number `EventSource` defaults it to 0, so you can start with `Version=1` for the first update. You can have at most 255 versions (so don't version unless you need to). + +If you follow these rules, TraceEvent can sort everything out for both old and new events. Old processing code will continue to see all the old properties even when the data was generated with an updated `EventSource` (because of rules (1) and (2)), and new code accessing old fields can use the payload length to notice that old `EventSource` sources have not emitted a field and thus can return a default value (e.g. 0 or an empty string). Higher level logic that uses TraceEvent can always probe the `Version` fields associated with an event and do special handling but often the defaults provided by TraceEvent's parsers are sufficient. + +## Higher level Processing: `TraceLog` + +So far the only way to process data in the TraceEvent library is using the 'push' model where you subscribe to events and get a callback when they arrive (either through C# events or IObservables). There are two reasons that the push model is the 'fundamental' mechanism in TraceEvent: + +1. The push model works for real time scenarios. The pull model (e.g. `foreach`) simply does not work in the real time case since real time lists have no end. +2. The push model naturally handles a heterogeneous list of events. Each callback gets a strongly typed data specific for that event. In a pull model (e.g. `foreach`), as each event is processed it must be cast to the correct type to get at its event-specific fields. This is clumsy and inefficient. + +Thus the push (callback) model is encouraged, but there are definitely cases where a pull model is convenient (e.g. iterating over all events of a particular type in an ETL file) where the pull model (`foreach`) is not problematic and the library should support. + +Perhaps more importantly, the `TraceEventSource` model's simplicity can also be a problem. It is not uncommon to have millions of events and the callback model really only understand one way of accessing the data - enumerating it from start to finish (well you can abort part way). For many situation you would like to organize the data in a way that is closer to how the data will be used. For example it would be useful to able to find all the process, or threads, or modules or other things without having to read every last event in the file. It would also be useful to have these things be in 'tables' of their own (that are homogeneous), and many ways of accessing them (by name, by time, etc.). + +Solving these problems is what the `Microsoft.Diagnostics.Tracing.TraceLog` class is all about. Unlike `ETWTraceEventSource` (which only supports the 'push' (callback) model) and supports real time streams. `TraceLog` ONLY deals with files, and can provide both a push (callback) model as well as a 'pull' (`foreach`) model. It also contains a rich object model that allows you to: + +1. Efficiently access a range of events in time without having to read through from the beginning (random access). +2. Query the set of processes, threads, and modules mentioned in the trace. +3. It gives every item an index (small integer with a known bound) that uniquely identifies this. This allows you to create 'side' arrays that allow you to 'hand' additional information on the item. +4. Processes the raw stack trace information (which is a list of physical addresses) with the module load events and JIT compile events to form symbolic stack traces. + +In short, the `TraceLog` class preforms the next level of common semantic interpretation of the event data, as well preserving the ability to access the raw event data. + +### Creating a `TraceLog` (an ETLX file) + +`TraceLog` needs to remember not only the even information but also the processed form for the process, threads, modules, and call stacks in the trace. It would have been nice to 'extend' the ETL file format but that format is private and tuned for event logging, not lookup. Thus a new format was needed, which is called ETLX. Thus the basic architecture of processing is to take a ETL file and 'convert' it to a ETLX file. The `TraceLog` class is then simply the programmatic interface to this ETLX data. Because users typically begin with a ETL file, the `TraceLog` class has a `OpenOrConvert` method that makes starting with an ETL file easy. Here is a simple program that prints out every event in an ETL file as XML. + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Etlx; +using System; + +class Program { + static void Main() { + using (var traceLog = TraceLog.OpenOrConvert("MyFile.etl")) + { + foreach (TraceEvent data in traceLog.Events) { + Console.WriteLine("Got Event {0}", data); + } + } + } +} +``` + +The way this works is that `OpenAndConvert` assumes that every ETL file has an ETLX file associated with it (by changing the extension). You can give either and it will check if the ETLX file is up to date (newer than the corresponding ETL file). If it is it uses it, otherwise it generates it from the ETL file. In either case it returns the `TraceLog` that represents the up-to-date ETLX file data. + +Once we have a `TraceLog` we can get at the original events using the `Events` property that returns an `IEnumerable`. Thus you can do a `foreach` on this and in our case, print (`ToString`) each event to get the XML. + +But the power of the `TraceLog` file is that is has also computed summaries of useful information like the processes, and has integrate this all into a convenient object model. Here is code that prints the XML events but only for process of a given name and rolls it up by thread. + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Etlx; +using System; + +class Program { + static void Main() { + using (var traceLog = TraceLog.OpenOrConvert("MyFile.etl")) + { + var process = traceLog.Processes.FirstProcessWithName("PerfView"); + Console.WriteLine("Process devenv Start {0:f3} end: {0:f3}", + process.StartTimeRelativeMsec, process.EndTimeRelativeMsec); + foreach (var thread in process.Threads) + { + Console.WriteLine("Thread {0}", thread.ThreadID); + foreach (var data in thread.EventsInThread) + Console.WriteLine(" Event {0}", data); + } + } + } +} +``` + +Notice that it was trivial to find all the data associated with a particular process (a common operation) and filter to just that. Further find the thread, and look at events only on those particular threads. Notice that it could print the start and end time (information that can only be formed by combining data from two events) trivially. Also you effectively are passing over the data multiple times (for each thread) and each time only getting the filtered data. `Tracelog` gives you random access to the data. + +One useful way to exploit the random access capability is to enumerate events backwards in time. This may seem like a strange thing to do, but it is quite useful because it is often the case that after you find a 'bad event' you need to search backwards for its cause. Doing this we the callback model is simply problematic, but with `TraceLog`'s object model it is pretty straightforward. In the example below we have reason to believe that an exception might be caused by the JIT compilation that occurred earlier in the trace. This code could be written to find interesting cases of this bug. + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Etlx; +using Microsoft.Diagnostics.Tracing.Parsers.Clr; +using System; + +class Program { + static void Main() { + using (var traceLog = TraceLog.OpenOrConvert("MyFile.etl")) { + // For a particular process + var p = traceLog.Processes.FirstProcessWithName("PerfView"); + + // Find all the exceptions. + foreach (var e in p.EventsInProcess.ByEventType()) { + Console.WriteLine("Exception {0}", e.ExceptionMessage); + + // See what method was JIT compiled just before it. + var prevInproc = p.EventsInProcess.FilterByTime(p.StartTime, e.TimeStamp); + foreach (var j in prevInproc.Backwards().ByEventType()) + { + Console.WriteLine("Last Jit {0}", j.MethodName); + break; + } + } + } + } +} +``` + +In the code above we first find all the events in the **PerfView** process and look for exception events (all pretty straightforward so far). When we find an exception we use the `FilterByTime` operation to isolate just the events up to that point. We then apply (the rather magical), `Backwards` operator that returns a collection that is the reversed time image of those events, and filter them to just the JIT events. We find the first such event and print the information we need. + +What is amazing about this is that it is efficient. All the intermediate collections are never actually formed, so what actually happens at runtime is that you start with the exception event walking backwards until you find the JIT event. Typically you find the event you are looking for very quickly (it is nearby, and you can always place a limit on how far you look back), and everything finishes quickly. It is handy. + +### Using Call Stacks with the TraceEvent library + +Perhaps the most compelling reason to use the `TraceLog` class is that it support symbolic resolution of stack information associated with events. ETW has the ability to collect stack traces associated with most events, but what actually gets logged are arrays of method return addresses. In addition some stacks are decoupled from the event they are associated with and may even be in two pieces (a kernel piece and a user mode piece) In addition these addresses need to be resolved to the module or JIT compiled method they belong to and the physical address needs to be resolved to a symbolic name. All this complexity make it infeasible use the raw stack events 'on the fly' but the ETLX conversion does all the necessary computation to make getting these stacks relatively easy. At least currently this functionality is only available via the `TraceLog` class. When an ETL file is converted to ETLX the stack events are processed into an efficient and compact form and wired up to the appropriate events. + +There is a complete example of using the `TraceLog` class to access stack traces in the [TraceEvent code samples](http://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent.Samples) but the actual API is pretty straightforward. Here is some code that opens an ETL file finds all the exception events in the **PerfView** process in the trace, and prints each method name + +```csharp +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Etlx; +using Microsoft.Diagnostics.Tracing.Parsers.Clr; +using System; + +class Program { + static void Main() { + using (var traceLog = TraceLog.OpenOrConvert("MyFile.etl")) { + var p = traceLog.Processes.FirstProcessWithName("perfView"); + foreach (var ex in p.EventsInProcess.ByEventType()) { + Console.WriteLine("Exception {0}", ex.ExceptionMessage); + + var cs = ex.CallStack(); + if (cs != null) { + Console.WriteLine(" Stack: ", cs); + while (cs != null) { + Console.WriteLine(" Method: {0}", + cs.CodeAddress.FullMethodName); + cs = cs.Caller; + } + } + } + } + } +} +``` + +As you can see the basic logic is pretty simple. `TraceEvent` has a `CallStack()` method that returns a callstack (`null` if there is no stack), and each callstack has among other things a `FullMethodName` property and a `Caller` property, and you can keep calling `Caller` until you have enumerate the complete stack up to the top of the thread. The model is significantly richer than is outlined here (you can actually get at line number and source file information), but you get the idea, it is pretty useful. + +### The Ugly Details of Stack Resolution + +While the user model for dealing with stack capture is pretty straightforward, unfortunately the underlying mechanism that enables it is pretty complex and fragile so it is easy for it to not work or only work partially. This is why it is a VERY good idea to start with working example (like the example in the [TraceEvent code samples](http://www.nuget.org/packages/Microsoft.Diagnostics.Tracing.TraceEvent.Samples)) and make sure that you have done all the required steps. PerfView is also useful here, because it is also an application that is doing 'all the right things' so it is good to confirm that it is working for PerfView before you start trying to debug why your code is not working properly. + +Below are the steps in converting logging an event with a stack to a resolved symbolic name annotated with some things that can go wrong along the way. + +1. When the event is logged the ETW system tries to crawl the stack at runtime. However this can fail for various reasons: + + 1. On 32-bit machines the crawler assumes the compiler stores unwinding information (EBP frames) on the stack. If the compile does not do this the stack 'breaks' (can't be unwound) and you lose any frames 'toward thread start'. + 2. On 64-bit processes on 64-bit machines the crawler needs 'unwind' information. For native code this is stored in the EXE, but for Just In Time (JIT) compiled code on Systems **before Windows 8 (or Win2012 server)** the ETW system did not know how to find this unwind information and break at the first frame with JIT compiled code. This is the most common reason for stack breakage, but will diminish machines are upgraded to new OSes. + + If either of these happen there is nothing wrong with your code as it is an issue with the APP or with the ETW infrastructure. PerfView should have the same problem. + +2. The raw addresses have to be associated with some entity that knows its symbolic name. At this point things work very differently for native code and code that is JIT compiled on the fly: + + 1. For native code, `TraceEvent` must find the DLL that includes the code, for this it needs information about all DLLs that where loaded in the process and what addresses they are loaded at. These are the kernel **ImageLoad** events. + 2. For JIT compiled code it needs to know the code ranges of all JIT compiled methods. For this it needs special .NET or Jscript events specifically designed for this purpose. + + If the necessary events are not present, the best that can be done is to show the address value as a hexadecimal number (which is not very helpful). **Thus it is critical that these events be present.** Complicating this is the fact that in many scenario of long running processes. If the process lives longer than the collection interval, then there can be image loads or JIT compilation that occurred before the trace started. We need these events as well. To get them the ETW providers involved support something called 'CAPTURE\_STATE' which causes them to emit events for all past image loads or JIT compilations. **The logic for capturing data must explicitly include logic for triggering this CAPTURE\_STATE.** + +3. For JIT compiled code, we are mostly done, however for native code, the symbolic name has only been resolved to the DLL level. To go further you need to get the mapping from DLL address to symbolic name. This is what the debugger PDB (program database) files do. For this you need to be able to find these PDB files. There are a number of things that can go wrong. + + 1. You must set your `_NT_SYMBOL_PATH` environment variable to locations where to search for the PDBS. If you do not you will only know the module and hex address. + 2. For operating system DLLs, the PDBS live on what is called a symbol server. To find these your `_NT_SYMBOL_PATH` must include the name for these symbol servers (the public Microsoft symbol server is `SRV*http://msdl.microsoft.com/download/symbols`). However to look up a DLL in the symbol server **you need a special GUID associated with the DLL, and a RAW ETL file does NOT INCLUDE this GUID**!. If you try to look up the DLL's PDB on the machine where the DLL exists, `TraceEvent` can fetch the necessary GUID from the DLL itself, but if the ETL file was copied to another machine this will not work and the PDB cannot be fetched. Running the `TraceEventSource.MergeInPlace` operation rewrites the raw ETL file so that it includes the necessary DLL GUIDs and thus is a requirement if you move the data off the collection machine (and you want symbolic information for native code stacks). + 3. For .NET code all the library code is precompiled (NGENed) and so is looked up using a PDB like the native case. However unlike native DLLs, the PDBs for the NGEN images are typically not saved on the Microsoft symbol server. Instead you must generate the PDBs for the NGEN images from the IL images as you need them. Again if you resolve the symbols on the machine where the collection happened, at the time you resolve the symbols `TraceEvent`'s `SymbolReader` class will automatically generate the NGEN image for you and cache it, however if you move the ETL file off the machine, you need to generate the NGEN PDBs as well as merge the ETL file to get the symbolic information for the .NET code in NGEN images. This is what the `SymbolReader.GenerateNGenSymbolsForModule` method can help you do. TODO MORE + +So in summary to get good stacks and have them work on any machine for any code you need to: + +1. Collect the necessary ImageLoad and JIT compile events (including CAPTURE\_STATE so you get information about events that preceded data collection start). +2. Merge the raw ETL files so that PDB signature information is incorporated into ETL file. +3. Generate the necessary NGEN PDBs and upload them along with the ETL file to the machine where symbolic resolution will happen. + +#### Source Code Support + +TODO + +## Building Compile-time `TraceEventParser` parsers using **TraceParserGen** + +If you have built your own `EventSource` so far the only way you have of accessing the data from your `EventSource` is to use the `DynamicTraceEventParser` class. As mentioned previously the experience coding against `DynamicTraceEventParser` is not great since each property of the event has to be fetched with the `PayloadByName` method and it is very easy to get the names wrong. What we want is a way of creating a specialized COMPILE TIME `TraceEventParser` that 'knows' about this ETW provider (`EventSource`). This is what the **TraceParserGen.exe** tool does. The process is really very simple: + +* All ETW providers, including `EventSource` sources, have a XML file called a 'manifest' that describes all the events and their properties. +* **TraceParserGen** takes a XML manifest and creates a C# file that defines a `TraceEventParser` for the provider described in the manifest. +* You can then include this C# file in your application and get a first class (and efficient) experience. + +In fact most of the parsers included in the TraceEvent library were generated using the **TraceParserGen** tool. + +### Getting the XML Manifest + +There are two main cases for ETW files that you may want `TraceEventParser` parsers for: + +1. An `EventSource` (which is not registered with the OS) +2. An ETW provider registered with the OS (something returned from `logman query providers`) + +In both cases, the [PerfView](http://www.microsoft.com/en-us/download/details.aspx?id=28567) tool is an excellent way of getting the manifest you need. + +#### Creating XML Manifests for `EventSource` Sources + +1. Collect an ETL file that events from the `EventSource` you want a manifest for. For example collect a trace for the **Microsoft-Demos-MySource** `EventSource` do + + ``` + PerfView /onlyProviders=*Microsoft-Demos-MySource EventSource collect + ``` + + which produces the file **PerfviewData.etl.zip** + +2. From this data file run the following command + + ``` + PerfView /noGui userCommand DumpEventSourceManifests PerfVIewData.etl.zip + ``` + + This command reads this data file and finds the manifests that the `EventSource` has logged to the ETL file and extracts them into a directory called **Etwmanifests**. You should find a file called **Microsoft-Demos-MySource.manifest.xml** in that directory which is the manifest you are trying to generate. + +#### Creating XML Manifests OS registered ETW providers + +The operating system provides a wealth of ETW providers. You can get an idea using the command + +``` +logman query providers +``` + +which gives a list. (See the section below on discovery for more). When you have found a provider you are interested in you can create its manifest by running the command: + +``` +PerfView /nogui userCommand DumpRegisteredManifest PROVIDER_NAME +``` + +For example running the command + +``` +PerfView /nogui userCommand DumpRegisteredManifest Microsoft-Windows-Kernel-File +``` + +will generate a manifest file **Microsoft-Windows-Kernel-File.manifest.xml** that describes the event for the OS ETW provider **Microsoft-Windows-Kernel-File**. + +### Converting to XML Manifest to a TraceEventParser for a Provider + +TODO details on getting **TraceParserGen.exe** + +Once you have the XML manifest file, the rest is trivial simply run + +``` +TraceParserGen ManifestFileName +``` + +And it will generate a corresponding C# file, which you can include in your application. + +TODO EXAMPLE + +## Event Provider Discovery + +One interesting aspect of the lifecycle of an event logging session is Event Provider discovery. Simply put, if you don't already 'know' that a provider exists, how do you find out? This is what the `TraceEventProviders` class is about. + +The first problem that hits almost immediately is the fact that the fundamental ID associated with a provider is a GUID not a name. Clearly humans would prefer a name, but how to do you get from a name to the GUID (which is what the OS APIs want). There is another problem in that each provider has 64-bit bit-vector of 'keywords' which define groups of events that you can turn on and off independently. How do we discover what our 'keyword' possibilities are for any particular provider? + +Traditionally, this was solved by manifest publication. The idea is that a provider would compile its manifest to a binary form (using a tool called **MC.exe**), attach it to a DLL as a resource, and then run a utility called **wevtutil** that will publish the manifest to the operating system. Thus the OS has a list of every published event provider and this list includes its name and descriptions of all its keywords. You can use the command + +``` +logman query providers +``` + +To see a list of all registered providers and once you have the name of a particular provider (say **Microsoft-Windows-Kernel-Process**), you can get a description of its keywords by using the command + +``` +logman query providers Microsoft-Windows-Kernel-Process +``` + +The functionality of these two commands is also available in the `TraceEventProviders` class (see `GetPublishedProviders` and `GetProviderKeywords`). + +There are a couple of problems with ETW's registration scheme. The first is that it requires a step at 'install' time, which is problematic for programs that wish to keep an 'xcopy' deployment characteristic. Second, at least currently, publishing a manifest with **wevtutil** requires administrative permissions, which is even more problematic for many scenarios. + +It is possible publish the manifest for an `EventSource` using the **wevtutil** mechanism (this is what the **EventRegister** tool does), however this does not solve + +`EventSource` sources will not show up on the lists above. As mentioned previously, because `EventSource` sources use a standard way of generating its provider GUID from its name, you can get the GUID from the name, but you can't get the names and descriptions of the keywords for a particular `EventSource` (although you can turn them all on blindly which actually works pretty well). + +### Publication vs. Registration + +Publication is all putting provide schema information (the manifest) somewhere where event consumers can find it and is not really and is a very static activity (effectively some system wide database is updated). However when an EventProvider actually starts running (e.g. an `EventSource` is created), the provider needs to register itself with the operating system (using its provider ID). At this time the provider also registers a callback so that if at a later time a session enables a provider this callback is invoked to update the provider. + +The operating system keeps track of the providers that have been registered (even if they have not been enabled), as well as a list of all provider that have been enabled by some session (even if there are no processes that actually have register that providers. This list is useful because it is a much smaller list of 'interesting' providers (those that you could turn on right now). You can get this list with the `TraceEventProviders.GetRegisteredOrEnabledProviders` method. + +Perhaps more useful that this is to ask for a particular process what providers are actually registered in that process. You can get this information with the command line: + +``` +logman query providers -pid PROCESS_ID +``` + +or programmatically with the `TraceEventProviders.GetRegisteredProvidersInProcess(int)` method. + +Unfortunately when a provider registers with the operating system (the Win32 `EventRegister` API), it only registers its provider GUID, and not its name. Thus the command above and the API above cannot give the name of the provider, just its GUID. For providers registered with the OS, this is not a problem since the name can be looked up (`TraceEventProviders.GetProviderName`), however this will not work for `EventSource` since they do not register their manifest. Because the `EventSource` is active, it is possible to actually 'ask it' for its manifest by opening a session (it will dump its manifest as part of its activation). However this does require more work. TODO INCOMPLETE. + +## On the fly filtering AND Logging using `ETWReloggerTraceEventSource` + +TODO diff --git a/documentation/images/EventParsing.png b/documentation/images/EventParsing.png new file mode 100644 index 000000000..7485c35ca Binary files /dev/null and b/documentation/images/EventParsing.png differ diff --git a/documentation/images/LoggingArchitecture.png b/documentation/images/LoggingArchitecture.png new file mode 100644 index 000000000..3d940583e Binary files /dev/null and b/documentation/images/LoggingArchitecture.png differ diff --git a/documentation/publicationInstructions/UpdatingPerfViewDownload.md b/documentation/publicationInstructions/UpdatingPerfViewDownload.md new file mode 100644 index 000000000..69982dabb --- /dev/null +++ b/documentation/publicationInstructions/UpdatingPerfViewDownload.md @@ -0,0 +1,30 @@ +##Tools Needed: Get the Download management Studio application + + * http://downloadservice/managementconsole/ + +## Open download management studio, you should see "PerfView 1.0" under the list of all owned downloads. + 1. The Details node under this tree is for updating the content of the downloads page. + 2. The releases node is for updating the file which is available on the downloads page. + + +## Updating the details page + + 1. Update the long description (best practice is to add a few bullets every time you upload the download). + 2. Click save + 3. Right click on English - United States -> Publish Download Detail. + I tend to do this step after I have published the file. + +## Updating the file + + 1. Click on "en-us", in the right hand pane there is a general tab and a files tab. + 2. In the general tab: make sure there are three signers, where two of the signers + must have a manager -> employee relationship (Lorenzo -> BrianRob would suffice ;)) + Lee Coward can also be a signer but from what I can tell it does not help. + 3. In the files tab, right click on PerfView.zip and select "Delete Selected Files" + 4. Click Add Files -> browse to the PerfView.Zip you want to upload. + 5. Click the 'save' icon on the toolbar + 6. From the menu bar, Click Download -> Activate to prepare the file to be updated. + This will send out a request for everyone to sign off on the download, and it will + take ~15 minutes for the process to run its course. + 7. Once the download is ready to publish, you can click Download -> Publish. This + should send the updated file out to the web fairly quickly. diff --git a/documentation/publicationInstructions/codeSignInstructions.md b/documentation/publicationInstructions/codeSignInstructions.md new file mode 100644 index 000000000..e60eb20f5 --- /dev/null +++ b/documentation/publicationInstructions/codeSignInstructions.md @@ -0,0 +1,30 @@ + +To get code signed, go to + +https://codesign.gtm.microsoft.com/ + +You need to run codeSignSetup\setup.exe once on the machine. + +The interface is not Very friendly. + +You will need 2 approvers (you can give more and the first two that approve unblockes the job) + +Here are the approvers that I have used in the past + +tlai +andrehal +dantaylo +leecow + +It will ask for the kind of signing, You want authenticode (not strong name). + + +10006 Certificate +You also want the Sha256 for Win 10 (how exactly to you ask for it to be signed both ways)? + + +Use the name PerfView + +And the URL http://www.microsoft.com/download/en/details.aspx?id=28567 + +You will add just the PerfVIew.exe exe to be signed. diff --git a/documentation/publicationInstructions/readme.md b/documentation/publicationInstructions/readme.md new file mode 100644 index 000000000..e96242349 --- /dev/null +++ b/documentation/publicationInstructions/readme.md @@ -0,0 +1,14 @@ +Docs on how to sign and publish PerfView. + +[codeSignInstructions.md](codeSignInstructions.md) are notes on code signing. + +[UpdatingPerfViewDownload.md](UpdatingPerfViewDownload.md) on how to upload to download center. + +When there is more than a bug-fix, you should re-run these scans. + + *Policheck + *APIScan + *Privacy review + +Note that this whole directory could be cleaned up. This is just to capture +what we happen to have in docs right now. diff --git a/src/CSVReader/CSVReader.csproj b/src/CSVReader/CSVReader.csproj index a9a6d406e..1a8c78aac 100644 --- a/src/CSVReader/CSVReader.csproj +++ b/src/CSVReader/CSVReader.csproj @@ -1,91 +1,16 @@  - + + - Debug - AnyCPU - 8.0.30703 - 2.0 - {F7D0F851-9B0D-4224-91AB-7FC12477F206} - Library - Properties - CSVReader - CSVReader - v4.0 - 512 - - SAK - SAK - SAK - SAK + net45 + + CSVReader + Microsoft + Copyright © Microsoft 2010 - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - {B68F4968-A7CF-41CC-AD6E-373DB5E67944} - TraceEvent - + - - - \ No newline at end of file + + diff --git a/src/CSVReader/CSVReader.sln b/src/CSVReader/CSVReader.sln deleted file mode 100644 index 93e552b4c..000000000 --- a/src/CSVReader/CSVReader.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSVReader", "CSVReader.csproj", "{F7D0F851-9B0D-4224-91AB-7FC12477F206}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TraceEvent", "..\traceEvent\TraceEvent.csproj", "{B68F4968-A7CF-41CC-AD6E-373DB5E67944}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F7D0F851-9B0D-4224-91AB-7FC12477F206}.Release|Any CPU.Build.0 = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/CSVReader/ETLStackBrowse/ZL/DeflateStreamAsyncResult.cs b/src/CSVReader/ETLStackBrowse/ZL/DeflateStreamAsyncResult.cs index 62c416307..d52ce55fd 100644 --- a/src/CSVReader/ETLStackBrowse/ZL/DeflateStreamAsyncResult.cs +++ b/src/CSVReader/ETLStackBrowse/ZL/DeflateStreamAsyncResult.cs @@ -119,9 +119,7 @@ private void Complete(object result) { } if (Interlocked.Increment(ref m_InvokedCallback) == 1) { - if (m_AsyncCallback != null) { - m_AsyncCallback(this); - } + m_AsyncCallback?.Invoke(this); } } diff --git a/src/CSVReader/Properties/AssemblyInfo.cs b/src/CSVReader/Properties/AssemblyInfo.cs index f79c725c9..01b9ed42e 100644 --- a/src/CSVReader/Properties/AssemblyInfo.cs +++ b/src/CSVReader/Properties/AssemblyInfo.cs @@ -1,18 +1,4 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("CSVReader")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("CSVReader")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] +using System.Runtime.InteropServices; // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from @@ -21,16 +7,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("d7d9679b-df85-4c21-ab42-ba95efb4acd9")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Directory.Build.props b/src/Directory.Build.props new file mode 100644 index 000000000..68d42c46c --- /dev/null +++ b/src/Directory.Build.props @@ -0,0 +1,48 @@ + + + + + False + + + + 6 + strict + + + + full + true + + + + pdbonly + true + + + + 1.9.68.0 + + + + + 1.0.5 + 1.0.8 + 0.8.31-beta + 2.3.0 + 2.3.0 + + + + + True + $(NoWarn),1573,1591 + + + diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets new file mode 100644 index 000000000..4f9bec1bd --- /dev/null +++ b/src/Directory.Build.targets @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/EtwClrProfiler/CorProfilerTracer.cpp b/src/EtwClrProfiler/CorProfilerTracer.cpp index 7b96ee103..773e35721 100644 --- a/src/EtwClrProfiler/CorProfilerTracer.cpp +++ b/src/EtwClrProfiler/CorProfilerTracer.cpp @@ -168,7 +168,7 @@ void __declspec(naked) __stdcall TailcallMethodNaked(FunctionID funcID) //========================================================================== // The constructor does almost nothing because we need the ability to call -// back to the runtime. Thus the 'real' inintialization happens in +// back to the runtime. Thus the 'real' initialization happens in // this routine. In particular we register ProfilerControlCallback with // ETW. // We make Initialize call this routine with pvClientData = NULL, cbClientData = -1; diff --git a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj index c2aed2fad..3b3be4c81 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj +++ b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj @@ -1,18 +1,10 @@  - - Debug - Win32 - Debug x64 - - Release - Win32 - Release x64 @@ -21,151 +13,78 @@ {E9980619-4016-4A4A-B7CC-F8B0E483BDB9} AtlProj - SAK - SAK - SAK - SAK - - DynamicLibrary - true - Unicode - DynamicLibrary true Unicode - - DynamicLibrary - false - Unicode - DynamicLibrary false Unicode - - v140 - v140 - - - v120 - v120 - - - v110 - v110 - - - v100 - v100 + + v141 + v141 - - - - - - - - true - true $(ProjectDir)$(Configuration)\amd64\ ETWClrProfiler $(Configuration)\amd64\ - - false - $(ProjectDir)$(Configuration)\$(PlatformShortName)\ - $(Configuration)\$(PlatformShortName)\ - false $(ProjectDir)$(Configuration)\amd64\ $(Configuration)\amd64\ ETWClrProfiler - - - Level3 - Disabled - WIN32;NDEBUG;%(PreprocessorDefinitions) - Use - MultiThreaded - false - false - - - Windows - true - .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - DllMain - - Level3 Disabled - WIN32;NDEBUG;%(PreprocessorDefinitions) - Use - MultiThreaded - false - false - - - Windows - true - .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - - - - - Level3 - WIN32;NDEBUG;%(PreprocessorDefinitions) + WIN32;NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) Use MultiThreaded false false + $(NetFxKitsDir)\include\um;%(AdditionalIncludeDirectories) Windows true .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - DllMain + %(AdditionalDependencies) Level3 - WIN32;NDEBUG;%(PreprocessorDefinitions) + WIN32;NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) Use MultiThreaded false false + $(NetFxKitsDir)\include\um;%(AdditionalIncludeDirectories) Windows true .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -179,11 +98,10 @@ + - Create Create - Create Create diff --git a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj.filters b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj.filters index c3a6d895b..23c77245e 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj.filters +++ b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj.filters @@ -47,6 +47,9 @@ Source Files + + Source Files + diff --git a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj index af8aab307..1465bd309 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj +++ b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj @@ -5,65 +5,29 @@ Debug Win32 - - Debug - x64 - Release Win32 - - Release - x64 - {E9980619-4016-4A4A-B7CC-F8B0E483BDB8} AtlProj - SAK - SAK - SAK - SAK DynamicLibrary true Unicode - v140 - - - DynamicLibrary - true - Unicode - v140 DynamicLibrary false Unicode - - DynamicLibrary - false - Unicode - - - v140 - v140 - - - v120 - v120 - - - v110 - v110 - - - v100 - v100 + + v141 + v141 @@ -71,15 +35,9 @@ - - - - - - true @@ -87,87 +45,46 @@ EtwClrProfiler $(Configuration)\$(PlatformShortName)\ - - true - false $(ProjectDir)$(Configuration)\$(PlatformShortName)\ $(Configuration)\$(PlatformShortName)\ ETWClrProfiler - - false - $(ProjectDir)$(Configuration)\$(PlatformShortName)\ - $(Configuration)\$(PlatformShortName)\ - Level3 Disabled - WIN32;NDEBUG;%(PreprocessorDefinitions) + WIN32;NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) Use MultiThreaded false false false + $(NetFxKitsDir)\include\um;%(AdditionalIncludeDirectories) Windows true .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - - - - - Level3 - Disabled - WIN32;NDEBUG;%(PreprocessorDefinitions) - Use - MultiThreaded - false - false - - - Windows - true - .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - DllMain + %(AdditionalDependencies) Level3 - WIN32;NDEBUG;%(PreprocessorDefinitions) - Use - MultiThreaded - false - false - - - Windows - true - .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - - - - - Level3 - WIN32;NDEBUG;%(PreprocessorDefinitions) + WIN32;NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions) Use MultiThreaded false false + $(NetFxKitsDir)\include\um;%(AdditionalIncludeDirectories) Windows true .\ETWClrProfiler.def - advapi32.lib;corguids.lib;%(AdditionalDependencies) - DllMain + %(AdditionalDependencies) @@ -180,12 +97,11 @@ + Create - Create Create - Create diff --git a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj.filters b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj.filters index 7d5317515..7131e6725 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj.filters +++ b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj.filters @@ -44,6 +44,9 @@ Source Files + + Source Files + diff --git a/src/EtwClrProfiler/Guids.cpp b/src/EtwClrProfiler/Guids.cpp new file mode 100644 index 000000000..53fb61d34 --- /dev/null +++ b/src/EtwClrProfiler/Guids.cpp @@ -0,0 +1,8 @@ +#include "Stdafx.h" + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} + +MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback, 0x176FBED1, 0xA55C, 0x4796, 0x98, 0xCA, 0xA9, 0xDA, 0x0E, 0xF8, 0x83, 0xE7); +MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback2, 0x8A8CC829, 0xCCF2, 0x49fe, 0xBB, 0xAE, 0x0F, 0x02, 0x22, 0x28, 0x07, 0x1A); +MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback3, 0x4FD2ED52, 0x7731, 0x4b8d, 0x94, 0x69, 0x03, 0xD2, 0xCC, 0x30, 0x86, 0xC5); diff --git a/src/EtwClrProfiler/MC.Exe b/src/EtwClrProfiler/MC.Exe deleted file mode 100644 index 3156d7016..000000000 Binary files a/src/EtwClrProfiler/MC.Exe and /dev/null differ diff --git a/src/EtwHeapDump/DotNetHeapDumper.cs b/src/EtwHeapDump/DotNetHeapDumper.cs index 3ecd5d186..098127b24 100644 --- a/src/EtwHeapDump/DotNetHeapDumper.cs +++ b/src/EtwHeapDump/DotNetHeapDumper.cs @@ -24,27 +24,35 @@ static public bool DumpAsEtlFile(int processID, string etlFileName, TextWriter l { bool success = false; - log.WriteLine("Starting ETW logging on File {0}", etlFileName); - using (var session = new TraceEventSession("PerfViewGCHeapETLSession", etlFileName)) - { - session.EnableKernelProvider(KernelTraceEventParser.Keywords.Process | KernelTraceEventParser.Keywords.Thread | KernelTraceEventParser.Keywords.ImageLoad); + log.WriteLine("Starting ETW logging on File {0}", etlFileName); + using (var session = new TraceEventSession("PerfViewGCHeapETLSession", etlFileName)) + { + session.BufferSizeMB = 256; + session.EnableKernelProvider(KernelTraceEventParser.Keywords.Process | KernelTraceEventParser.Keywords.Thread | KernelTraceEventParser.Keywords.ImageLoad); - // Isolate this to a single process. - var options = new TraceEventProviderOptions() { ProcessIDFilter = new List() { processID } }; + // Isolate this to a single process. + var options = new TraceEventProviderOptions() { ProcessIDFilter = new List() { processID } }; - // For non-project N we need module rundown to figure out the correct module name - session.EnableProvider(ClrRundownTraceEventParser.ProviderGuid, TraceEventLevel.Verbose, + // There is a bug in the runtime 4.6.2 and earlier where we only clear the table of types we have already emitted when you ENABLE + // the Clr Provider WITHOUT the ClrTraceEventParser.Keywords.Type keyword. We achieve this by turning on just the GC events, + // (which clears the Type table) and then turn all the events we need on. + // Note we do this here, as well as in Dump() because it only works if the CLR Type keyword is off (and we turn it on below) + session.EnableProvider(ClrTraceEventParser.ProviderGuid, TraceEventLevel.Informational, (ulong) ClrTraceEventParser.Keywords.GC, options); + System.Threading.Thread.Sleep(50); // Wait for it to complete (it is async) + + // For non-project N we need module rundown to figure out the correct module name + session.EnableProvider(ClrRundownTraceEventParser.ProviderGuid, TraceEventLevel.Verbose, (ulong)(ClrRundownTraceEventParser.Keywords.Loader | ClrRundownTraceEventParser.Keywords.ForceEndRundown), options); - session.EnableProvider(ClrTraceEventParser.ProviderGuid, TraceEventLevel.Informational, - (ulong)(ClrTraceEventParser.Keywords.GCHeapDump | ClrTraceEventParser.Keywords.GC | ClrTraceEventParser.Keywords.Type | ClrTraceEventParser.Keywords.Type | ClrTraceEventParser.Keywords.GCHeapAndTypeNames), options); - // Project N support. - session.EnableProvider(ClrTraceEventParser.NativeProviderGuid, TraceEventLevel.Informational, - (ulong)(ClrTraceEventParser.Keywords.GCHeapDump | ClrTraceEventParser.Keywords.GC | ClrTraceEventParser.Keywords.Type | ClrTraceEventParser.Keywords.Type | ClrTraceEventParser.Keywords.GCHeapAndTypeNames), options); + session.EnableProvider(ClrTraceEventParser.ProviderGuid, TraceEventLevel.Informational, + (ulong)(ClrTraceEventParser.Keywords.GCHeapDump | ClrTraceEventParser.Keywords.GC | ClrTraceEventParser.Keywords.Type | ClrTraceEventParser.Keywords.GCHeapAndTypeNames), options); + // Project N support. + session.EnableProvider(ClrTraceEventParser.NativeProviderGuid, TraceEventLevel.Informational, + (ulong)(ClrTraceEventParser.Keywords.GCHeapDump | ClrTraceEventParser.Keywords.GC | ClrTraceEventParser.Keywords.Type | ClrTraceEventParser.Keywords.GCHeapAndTypeNames), options); - success = Dump(processID, memoryGraph, log, dotNetInfo); - log.WriteLine("Stopping ETW logging on {0}", etlFileName); - } + success = Dump(processID, memoryGraph, log, dotNetInfo); + log.WriteLine("Stopping ETW logging on {0}", etlFileName); + } log.WriteLine("DumpAsETLFile returns. Success={0}", success); return success; @@ -82,7 +90,7 @@ static public bool Dump(int processID, MemoryGraph memoryGraph, TextWriter log, // Have to turn on Kernel provider first (before touching Source) so we do it here. session.EnableKernelProvider(KernelTraceEventParser.Keywords.Process | KernelTraceEventParser.Keywords.ImageLoad); - session.Source.Clr.GCStart += delegate(GCStartTraceData data) + session.Source.Clr.GCStart += delegate (GCStartTraceData data) { if (data.ProcessID != processID) return; @@ -95,7 +103,7 @@ static public bool Dump(int processID, MemoryGraph memoryGraph, TextWriter log, } }; - session.Source.Clr.GCStop += delegate(GCEndTraceData data) + session.Source.Clr.GCStop += delegate (GCEndTraceData data) { if (data.ProcessID != processID) return; @@ -107,7 +115,7 @@ static public bool Dump(int processID, MemoryGraph memoryGraph, TextWriter log, } }; - session.Source.Clr.GCBulkNode += delegate(GCBulkNodeTraceData data) + session.Source.Clr.GCBulkNode += delegate (GCBulkNodeTraceData data) { if (data.ProcessID != processID) return; @@ -134,6 +142,12 @@ static public bool Dump(int processID, MemoryGraph memoryGraph, TextWriter log, // Request the heap dump. We try to isolate this to a single process. var options = new TraceEventProviderOptions() { ProcessIDFilter = new List() { processID } }; + // There is a bug in the runtime 4.6.2 and earlier where we only clear the table of types we have already emitted when you ENABLE + // the Clr Provider WITHOUT the ClrTraceEventParser.Keywords.Type keyword. we achive this by turning on just the GC events, + // (which clears the Type table) and then turn all the events we need on. + session.EnableProvider(ClrTraceEventParser.ProviderGuid, TraceEventLevel.Informational, (ulong)ClrTraceEventParser.Keywords.GC, options); + System.Threading.Thread.Sleep(50); // Wait for it to complete (it is async) + // For non-project N we need module rundown to figure out the correct module name session.EnableProvider(ClrRundownTraceEventParser.ProviderGuid, TraceEventLevel.Verbose, (ulong)(ClrRundownTraceEventParser.Keywords.Loader | ClrRundownTraceEventParser.Keywords.ForceEndRundown), options); @@ -142,7 +156,7 @@ static public bool Dump(int processID, MemoryGraph memoryGraph, TextWriter log, // Project N support. session.EnableProvider(ClrTraceEventParser.NativeProviderGuid, TraceEventLevel.Informational, (ulong)ClrTraceEventParser.Keywords.GCHeapSnapshot, options); - for (; ; ) + for (;;) { if (readerTask.Wait(100)) break; diff --git a/src/EtwHeapDump/EtwHeapDump.sln b/src/EtwHeapDump/EtwHeapDump.sln deleted file mode 100644 index 9116c67d9..000000000 --- a/src/EtwHeapDump/EtwHeapDump.sln +++ /dev/null @@ -1,90 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EtwHeapDump", "EtwHeapDump.csproj", "{1F2635F5-FD7E-4C06-B23C-A93E97389FDF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FastSerialization", "..\FastSerialization\FastSerialization.csproj", "{E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MemoryGraph", "..\MemoryGraph\MemoryGraph.csproj", "{F1032B5C-568A-4BAD-B253-1B4548389063}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utilities", "..\Utilities\Utilities.csproj", "{E32C9FC3-8524-4511-8ACB-235AC136DC22}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TraceEvent", "..\traceEvent\TraceEvent.csproj", "{B68F4968-A7CF-41CC-AD6E-373DB5E67944}" -EndProject -Global - GlobalSection(TeamFoundationVersionControl) = preSolution - SccNumberOfProjects = 5 - SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccTeamFoundationServer = http://vstfdevdiv.redmond.corp.microsoft.com:8080/devdiv2 - SccProjectUniqueName0 = ..\\FastSerialization\\FastSerialization.csproj - SccProjectName0 = ../FastSerialization - SccAuxPath0 = http://vstfdevdiv.redmond.corp.microsoft.com:8080/devdiv2 - SccLocalPath0 = ..\\FastSerialization - SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccProjectUniqueName1 = ..\\MemoryGraph\\MemoryGraph.csproj - SccProjectName1 = ../MemoryGraph - SccAuxPath1 = http://vstfdevdiv.redmond.corp.microsoft.com:8080/devdiv2 - SccLocalPath1 = ..\\MemoryGraph - SccProvider1 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccProjectUniqueName2 = EtwHeapDump.csproj - SccProjectName2 = . - SccAuxPath2 = http://vstfdevdiv.redmond.corp.microsoft.com:8080/devdiv2 - SccLocalPath2 = . - SccProvider2 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccProjectUniqueName3 = ..\\Utilities\\Utilities.csproj - SccProjectName3 = ../Utilities - SccAuxPath3 = http://vstfdevdiv.redmond.corp.microsoft.com:8080/devdiv2 - SccLocalPath3 = ..\\Utilities - SccProvider3 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccProjectUniqueName4 = ..\\traceEvent\\TraceEvent.csproj - SccProjectName4 = ../traceEvent - SccAuxPath4 = http://vstfdevdiv.redmond.corp.microsoft.com:8080/devdiv2 - SccLocalPath4 = ..\\traceEvent - SccProvider4 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1F2635F5-FD7E-4C06-B23C-A93E97389FDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDF}.Debug|x86.ActiveCfg = Debug|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDF}.Release|Any CPU.Build.0 = Release|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDF}.Release|x86.ActiveCfg = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|x86.ActiveCfg = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.Build.0 = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|x86.ActiveCfg = Release|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|x86.ActiveCfg = Debug|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|Any CPU.Build.0 = Release|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|x86.ActiveCfg = Release|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|x86.ActiveCfg = Debug|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|Any CPU.Build.0 = Release|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|x86.ActiveCfg = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|x86.ActiveCfg = Debug|x86 - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|x86.Build.0 = Debug|x86 - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.Build.0 = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|x86.ActiveCfg = Release|x86 - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/FastSerialization/FastSerialization.cs b/src/FastSerialization/FastSerialization.cs index 6de919d9e..fea5d8584 100644 --- a/src/FastSerialization/FastSerialization.cs +++ b/src/FastSerialization/FastSerialization.cs @@ -419,11 +419,26 @@ sealed class Serializer : IDisposable /// Create a serializer writes 'entryObject' to a file. /// public Serializer(string filePath, IFastSerializable entryObject) : this(new IOStreamStreamWriter(filePath), entryObject) { } + + /// + /// Create a serializer that writes to a . The serializer + /// will close the stream when it closes. + /// + public Serializer(Stream outputStream, IFastSerializable entryObject) + : this(outputStream, entryObject, false) + { + } + /// - /// TODO FIX NOW, do we want the serializer to close the stream? - /// Create a serializer that writes 'entryObject' to a System.IO.Stream. The serializer will close the stream when it closes. + /// Create a serializer that writes to a . The + /// parameter determines whether the serializer will close the stream when it + /// closes. /// - public Serializer(Stream outputStream, IFastSerializable entryObject) : this(new IOStreamStreamWriter(outputStream), entryObject) { } + public Serializer(Stream outputStream, IFastSerializable entryObject, bool leaveOpen) + : this(new IOStreamStreamWriter(outputStream, leaveOpen: leaveOpen), entryObject) + { + } + /// /// Create a serializer that writes 'entryObject' another IStreamWriter /// @@ -893,10 +908,25 @@ sealed class Deserializer : IDisposable /// Create a Deserializer that reads its data from a given file /// public Deserializer(string filePath) : this(new IOStreamStreamReader(filePath), filePath) { } + /// /// Create a Deserializer that reads its data from a given System.IO.Stream. The stream will be closed when the Deserializer is done with it. /// - public Deserializer(Stream inputStream, string streamName) : this(new IOStreamStreamReader(inputStream), streamName) { } + public Deserializer(Stream inputStream, string streamName) + : this(new IOStreamStreamReader(inputStream), streamName) + { + } + + /// + /// Create a Deserializer that reads its data from a given System.IO.Stream. The + /// parameter determines whether the deserializer will close the stream when it + /// closes. + /// + public Deserializer(Stream inputStream, string streamName, bool leaveOpen) + : this(new IOStreamStreamReader(inputStream, leaveOpen: leaveOpen), streamName) + { + } + /// /// Create a Deserializer that reads its data from a given IStreamReader. The stream will be closed when the Deserializer is done with it. /// @@ -1715,8 +1745,6 @@ internal Func GetFactory(string fullName) if (factories.TryGetValue(fullName, out ret)) return ret; - var assemblies = AppDomain.CurrentDomain.GetAssemblies(); - Type type; if (TypeResolver != null) type = TypeResolver(fullName); @@ -2114,7 +2142,6 @@ interface IFastSerializableVersion /// /// Thrown when the deserializer detects an error. /// - [Serializable] #if FASTSERIALIZATION_PUBLIC public #endif diff --git a/src/FastSerialization/FastSerialization.csproj b/src/FastSerialization/FastSerialization.csproj index b1350e513..99df3bb4a 100644 --- a/src/FastSerialization/FastSerialization.csproj +++ b/src/FastSerialization/FastSerialization.csproj @@ -1,57 +1,19 @@ - - + + + - $(MSBuildThisFileDirectory)\.. - - - - true - v4.0 - - - - - - true - true - Inter - - - false - - - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5} - Library + net45;netstandard1.3 Microsoft.Diagnostics.FastSerialization Microsoft.Diagnostics.FastSerialization - false true - GROWABLEARRAY_PUBLIC;STREAMREADER_PUBLIC;FASTSERIALIZATION_PUBLIC;$(DefineConstants) + + Microsoft + Serialization library for TraceEvent. + Copyright © Microsoft 2010 - - true - full - false - TRACE;DEBUG;$(DefineConstants) - bin\Debug\ - - - pdbonly - true - TRACE;$(DefineConstants) - bin\release\ + + + $(DefineConstants);GROWABLEARRAY_PUBLIC;STREAMREADER_PUBLIC;FASTSERIALIZATION_PUBLIC - - - - - - - - - - - - - + diff --git a/src/FastSerialization/FastSerialization.sln b/src/FastSerialization/FastSerialization.sln deleted file mode 100644 index 789dcaf47..000000000 --- a/src/FastSerialization/FastSerialization.sln +++ /dev/null @@ -1,34 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FastSerialization", "FastSerialization.csproj", "{E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}" -EndProject -Global - GlobalSection(TeamFoundationVersionControl) = preSolution - SccNumberOfProjects = 1 - SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccTeamFoundationServer = http://vstfdevdiv:8080/devdiv2 - SccProjectUniqueName0 = FastSerialization.csproj - SccProjectName0 = . - SccAuxPath0 = http://vstfdevdiv:8080/devdiv2 - SccLocalPath0 = . - SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|x86.ActiveCfg = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.Build.0 = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|x86.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/FastSerialization/GrowableArray.cs b/src/FastSerialization/GrowableArray.cs index fd5f26d9e..0631e5b2c 100644 --- a/src/FastSerialization/GrowableArray.cs +++ b/src/FastSerialization/GrowableArray.cs @@ -14,7 +14,8 @@ namespace System.Collections.Generic /// an int which represents the logical charCount. It is a struct to avoid an extra pointer dereference, so this /// is really meant to be embedded in other structures. /// -#if GROWABLEARRAY_PUBLIC + [DebuggerDisplay("Count = {Count}")] +#if GROWABLEARRAY_PUBLIC public #endif struct GrowableArray @@ -224,11 +225,7 @@ public override string ToString() sb.Append(" ])"); return sb.ToString(); } - /// - /// Should return -1 if x is less than elem. - /// TODO FIX NOW use Func instead. - /// - public delegate int Comparison(Key x, T elem); + /// /// Sets 'index' to the the smallest index such that all elements with index > 'idx' are > key. If /// index does not match any elements a new element should always be placed AFTER index. Note that this @@ -238,7 +235,7 @@ public override string ToString() /// /// TODO FIX NOW harmonize with List.BinarySearch /// - public bool BinarySearch(Key key, out int index, Comparison comparison) + public bool BinarySearch(Key key, out int index, Func comparison) { // binary search int low = 0; @@ -288,7 +285,7 @@ public bool BinarySearch(Key key, out int index, Comparison comparison /// /// Sort the range starting at 'index' of length 'count' using 'comparision' in assending order /// - public void Sort(int index, int count, System.Comparison comparison) + public void Sort(int index, int count, Comparison comparison) { Debug.Assert(index + count <= arrayLength); if (count > 0) @@ -297,7 +294,7 @@ public void Sort(int index, int count, System.Comparison comparison) /// /// Sort the whole array using 'comparison' in ascending order /// - public void Sort(System.Comparison comparison) + public void Sort(Comparison comparison) { if (array != null) Array.Sort(array, 0, arrayLength, new FunctorComparer(comparison)); @@ -322,7 +319,7 @@ public GrowableArray Foreach(Func func) /// It is legal that 'startIndex' is greater than the charCount, in which case, the search returns false /// immediately. This allows a nice loop to find all items matching a pattern. /// - public bool Search(Key key, int startIndex, Comparison compare, ref int index) + public bool Search(Key key, int startIndex, Func compare, ref int index) { for (int i = startIndex; i < arrayLength; i++) { diff --git a/src/FastSerialization/StreamReaderWriter.cs b/src/FastSerialization/StreamReaderWriter.cs index 5bf172d73..529ba781a 100644 --- a/src/FastSerialization/StreamReaderWriter.cs +++ b/src/FastSerialization/StreamReaderWriter.cs @@ -360,6 +360,10 @@ public void Dispose() protected virtual void Dispose(bool disposing) { } #endregion #region private + + /// + /// Makespace makes at least sizeof(long) bytes available (or throws OutOfMemory) + /// internal /* protected */ virtual void MakeSpace() { const int maxLength = 0x7FFFFFC7; // Max array length for byte[] @@ -368,11 +372,12 @@ protected virtual void Dispose(bool disposing) { } // Make sure we don't exceed max possible size if (bytes.Length < (maxLength / 3) * 2) newLength = (bytes.Length / 2) * 3; - else if (bytes.Length < maxLength) - newLength = maxLength; + else if (bytes.Length < maxLength - sizeof(long)) // Write(long) expects Makespace to make at 8 bytes of space. + newLength = maxLength; // If we can do this, use up the last available length else - throw new OutOfMemoryException(); // Can't make space anymore + throw new OutOfMemoryException(); // Can't make space anymore + Debug.Assert(bytes.Length + sizeof(long) <= newLength); byte[] newBytes = new byte[newLength]; Array.Copy(bytes, newBytes, bytes.Length); bytes = newBytes; @@ -557,11 +562,12 @@ public IOStreamStreamReader(string fileName) /// Create a new IOStreamStreamReader from the given System.IO.Stream. Optionally you can specify the size of the read buffer /// The stream will be closed by the IOStreamStreamReader when it is closed. /// - public IOStreamStreamReader(Stream inputStream, int bufferSize = defaultBufferSize) + public IOStreamStreamReader(Stream inputStream, int bufferSize = defaultBufferSize, bool leaveOpen = false) : base(new byte[bufferSize + align], 0, 0) { Debug.Assert(bufferSize % align == 0); this.inputStream = inputStream; + this.leaveOpen = leaveOpen; } /// @@ -610,7 +616,11 @@ public override void Goto(StreamLabel label) protected override void Dispose(bool disposing) { if (disposing) - inputStream.Dispose(); + { + if (!leaveOpen) + inputStream.Dispose(); + } + base.Dispose(disposing); } @@ -651,9 +661,11 @@ protected override void Dispose(bool disposing) lock (inputStream) { inputStream.Seek(positionInStream + endPosition, SeekOrigin.Begin); - for (;;) + for (; ; ) { +#if !NETSTANDARD1_3 System.Threading.Thread.Sleep(0); // allow for Thread.Interrupt +#endif int count = inputStream.Read(bytes, endPosition, bytes.Length - endPosition); if (count == 0) break; @@ -667,6 +679,7 @@ protected override void Dispose(bool disposing) throw new Exception("Read past end of stream."); } internal /*protected*/ Stream inputStream; + private bool leaveOpen; internal /*protected*/ uint positionInStream; #endregion } @@ -853,13 +866,15 @@ class IOStreamStreamWriter : MemoryStreamWriter, IDisposable /// /// public IOStreamStreamWriter(string fileName) : this(new FileStream(fileName, FileMode.Create)) { } + /// /// Create a IOStreamStreamWriter that writes its data to a System.IO.Stream /// - public IOStreamStreamWriter(Stream outputStream, int bufferSize = defaultBufferSize + sizeof(long)) + public IOStreamStreamWriter(Stream outputStream, int bufferSize = defaultBufferSize + sizeof(long), bool leaveOpen = false) : base(bufferSize) { this.outputStream = outputStream; + this.leaveOpen = leaveOpen; streamLength = outputStream.Length; } @@ -943,13 +958,15 @@ protected override void Dispose(bool disposing) if (disposing) { Flush(); - outputStream.Dispose(); + if (!leaveOpen) + outputStream.Dispose(); } base.Dispose(disposing); } const int defaultBufferSize = 1024 * 8 - sizeof(long); Stream outputStream; + bool leaveOpen; long streamLength; #endregion diff --git a/src/HeapDump/CrossGenerationLiveness/CrossGenerationLivenessCollector.cs b/src/HeapDump/CrossGenerationLiveness/CrossGenerationLivenessCollector.cs index 8dcbeaf5e..e9dddaeff 100644 --- a/src/HeapDump/CrossGenerationLiveness/CrossGenerationLivenessCollector.cs +++ b/src/HeapDump/CrossGenerationLiveness/CrossGenerationLivenessCollector.cs @@ -2,6 +2,7 @@ using System; using System.Diagnostics; using System.IO; +using System.Reflection; using System.Runtime.InteropServices; using Microsoft.Diagnostics.HeapDump; using Microsoft.Diagnostics.Runtime; @@ -19,7 +20,7 @@ internal sealed class CrossGenerationLivenessCollector private const int AttachTimeoutInMsec = 60000; private const int WaitForEventTimeoutInMsec = 5000; - private static string s_ProcessArch; + private static string s_ProcessArchDirectory; private int _PID; private int _GenerationToTrigger; @@ -212,7 +213,7 @@ private void HandleException(object sender, HandleExceptionEventArgs eventArgs) /// public static void LoadNative(string relativePath) { - var fullPath = Path.Combine(RootDir, ProcessArch, relativePath); + var fullPath = Path.Combine(RootDir, ProcessArchitectureDirectory, relativePath); var ret = LoadLibrary(fullPath); if (ret == IntPtr.Zero) { @@ -223,19 +224,28 @@ public static void LoadNative(string relativePath) /// /// Get the name of the architecture of the current process. /// - private static string ProcessArch + private static ProcessorArchitecture ProcessArch { get { - if (s_ProcessArch == null) + return Environment.Is64BitProcess ? ProcessorArchitecture.Amd64 : ProcessorArchitecture.X86; + } + } + + /// + /// Gets the name of the directory containing compiled binaries (DLLs) which have the same architecture as the + /// currently executing process. + /// + public static string ProcessArchitectureDirectory + { + get + { + if (s_ProcessArchDirectory == null) { - s_ProcessArch = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); - // This should not be needed, but when I run PerfView under VS from an extension on an X64 machine - // the environment variable is wrong. - if (s_ProcessArch == "AMD64" && System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 4) - s_ProcessArch = "x86"; + s_ProcessArchDirectory = ProcessArch.ToString().ToLowerInvariant(); } - return s_ProcessArch; + + return s_ProcessArchDirectory; } } diff --git a/src/HeapDump/Debugger/Debugger.cs b/src/HeapDump/Debugger/Debugger.cs index 85f882ca8..586caef6a 100644 --- a/src/HeapDump/Debugger/Debugger.cs +++ b/src/HeapDump/Debugger/Debugger.cs @@ -345,12 +345,12 @@ public IEnumerable EnumerateLoadedRuntimes(Int32 processId) IEnumUnknown enumRuntimes; using (ProcessSafeHandle hProcess = NativeMethods.OpenProcess( - /** + /* (int)(NativeMethods.ProcessAccessOptions.ProcessVMRead | NativeMethods.ProcessAccessOptions.ProcessQueryInformation | NativeMethods.ProcessAccessOptions.ProcessDupHandle | NativeMethods.ProcessAccessOptions.Synchronize), - **/ + */ // TODO FIX NOW for debugging. 0x1FFFFF, // PROCESS_ALL_ACCESS false, // inherit handle @@ -788,7 +788,7 @@ public interface ICLRDebuggingLibraryProvider /// in the PE header /// The SizeOfImage of the library being requested as specified /// in the PE header - /// An OS handle to the requested library + /// An OS handle to the requested library /// HResults.S_OK if the library was located, otherwise any appropriate /// error hresult [PreserveSig] diff --git a/src/HeapDump/Debugger/DumpDebugging/DumpReader.cs b/src/HeapDump/Debugger/DumpDebugging/DumpReader.cs index bcc306fc7..c72c68db3 100644 --- a/src/HeapDump/Debugger/DumpDebugging/DumpReader.cs +++ b/src/HeapDump/Debugger/DumpDebugging/DumpReader.cs @@ -190,12 +190,12 @@ static void RawCopy(IntPtr src, IntPtr dest, uint numBytes) } /// - /// Copy numberBytesToCopy from the DumpPointer into &destinationBuffer[indexDestination]. + /// Copy numberBytesToCopy from the DumpPointer into &destinationBuffer[indexDestination]. /// /// /// /// - /// + /// public void Copy(IntPtr destinationBuffer, uint destinationBufferSizeInBytes, uint indexDestination, uint numberBytesToCopy) { // Esnure that both source and destination are large enough. @@ -214,7 +214,7 @@ public void Copy(IntPtr destinationBuffer, uint destinationBufferSizeInBytes, ui /// Copy raw bytes to buffer /// /// buffer to copy to. - /// number of bytes to copy. Caller ensures the destinationBuffer + /// number of bytes to copy. Caller ensures the destinationBuffer /// is large enough public void Copy(IntPtr destinationBuffer, uint numberBytesToCopy) { @@ -345,7 +345,6 @@ void EnsureSizeRemaining(uint requestedSize) /// OS debugging code sign extends 32 bit wide addresses into 64 bit wide addresses. /// The CLR does not sign extend, thus you cannot round-trip target addresses exposed by this class. /// Currently we read these addresses once and don't hand them back, so it's not an issue. - /// public class DumpReader : IDisposable { @@ -1275,7 +1274,7 @@ protected internal String GetString(NativeMethods.RVA rva) /// /// Gets a MINIDUMP_STRING at the given DumpPointer as an System.String. /// - /// DumpPointer to a MINIDUMP_STRING + /// DumpPointer to a MINIDUMP_STRING /// System.String representing contents of MINIDUMP_STRING at the given location /// in the dump protected internal String GetString(DumpPointer ptr) @@ -1882,7 +1881,7 @@ public DumpModule LookupModule(string nameModule) /// Null if no match. Else a DumpModule such that the target address is in between the range specified /// by the DumpModule's .BaseAddress and .Size property /// This can be useful for symbol lookups or for using module images to - /// supplement memory read requests for minidumps. public DumpModule TryLookupModuleByAddress(ulong targetAddress) { // This is an optimized lookup path, which avoids using IEnumerable or creating @@ -2100,7 +2099,7 @@ public INativeContext GetThreadContext() /// Get the raw thread context as a buffer or bytes. This is dangerous. /// /// pointer to buffer to get the context - /// size of the buffer in bytes. Must be large enough to hold the + /// size of the buffer in bytes. Must be large enough to hold the /// context. For variable-size contexts, caller may need to check context flags afterwards /// to determine how large the context really is. /// Context may not be available in the dump. @@ -2184,7 +2183,7 @@ struct IMAGE_NT_HEADERS } /// - /// Marshal a structure from the given buffer. Effectively returns ((T*) &buffer[offset]). + /// Marshal a structure from the given buffer. Effectively returns ((T*) &buffer[offset]). /// /// type of structure to marshal /// array of bytes representing binary buffer to marshal diff --git a/src/HeapDump/Debugger/DumpDebugging/LibraryProvider.cs b/src/HeapDump/Debugger/DumpDebugging/LibraryProvider.cs index 996c9d50e..c2bdb22dc 100644 --- a/src/HeapDump/Debugger/DumpDebugging/LibraryProvider.cs +++ b/src/HeapDump/Debugger/DumpDebugging/LibraryProvider.cs @@ -20,6 +20,10 @@ public int ProvideLibrary(string fileName, int timestamp, int sizeOfImage, out I CLRMetaHost mh = new CLRMetaHost(); foreach (CLRRuntimeInfo rti in mh.EnumerateInstalledRuntimes()) { + string versionString = rti.GetVersionString(); + if (versionString.StartsWith("v2.")) + continue; + string libPath = Path.Combine(rti.GetRuntimeDirectory(), fileName); if (DoesFileMatch(libPath, timestamp, sizeOfImage)) { diff --git a/src/HeapDump/Debugger/DumpDebugging/utility.cs b/src/HeapDump/Debugger/DumpDebugging/utility.cs index 1f71720c9..84c5ce1b2 100644 --- a/src/HeapDump/Debugger/DumpDebugging/utility.cs +++ b/src/HeapDump/Debugger/DumpDebugging/utility.cs @@ -82,7 +82,7 @@ public void Dispose() /// /// Implementation of ICorDebugDataTarget.GetPlatform /// - /// platform that the process in this dump was executing on + /// platform that the process in this dump was executing on public CorDebugPlatform GetPlatform() { // Infer platform based off CPU architecture @@ -199,7 +199,7 @@ static class NativeMethods /// Constructor to load a dll and be responible for freeing it. /// /// full path name of dll to load - /// if fileName can't be found + /// if fileName can't be found /// Throws exceptions on failure. Most common failure would be file-not-found, or /// that the file is not a loadable image. public UnmanagedLibraryLeak(string fileName) diff --git a/src/HeapDump/Debugger/MetaDataReader.cs b/src/HeapDump/Debugger/MetaDataReader.cs deleted file mode 100644 index f6285dfed..000000000 --- a/src/HeapDump/Debugger/MetaDataReader.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Microsoft.Samples.Debugging.CorMetadata.NativeApi; -using Profiler; -using System; -using System.IO; - -#if false - // TODO FIX NOW experimental - - /// - /// A simple wrapper that lets you resolve tokens to names. - /// - class MetaDataReader - { - MetaDataReader(string moduleName) - { - CLRMetaHost mh = new CLRMetaHost(); - CLRRuntimeInfo highestInstalledRuntime = null; - foreach (CLRRuntimeInfo runtime in mh.EnumerateInstalledRuntimes()) - { - if (highestInstalledRuntime == null || - string.Compare(highestInstalledRuntime.GetVersionString(), runtime.GetVersionString(), StringComparison.OrdinalIgnoreCase) < 0) - highestInstalledRuntime = runtime; - } - if (highestInstalledRuntime == null) - throw new ApplicationException("Could not enumerate .NET runtimes on the system."); - - IMetaDataDispenser metaDataDispenser = highestInstalledRuntime.GetIMetaDataDispenser(); - - Guid IMetaDataImport2_Guid = Guid("7DAC8207-D3AE-4c75-9B67-92801A497D44"); - object metaDataImportObj; - metaDataDispenser.OpenScope(moduleName, 0, ref IMetaDataImport2_Guid, out metaDataImportObj); - m_metaDataImport = metaDataImportObj as IMetadataImport2; - } - - IMetadataImport2 m_metaDataImport; - } - -#endif \ No newline at end of file diff --git a/src/HeapDump/GCHeapDumper.cs b/src/HeapDump/GCHeapDumper.cs index 0d7ffc937..b4be82d44 100644 --- a/src/HeapDump/GCHeapDumper.cs +++ b/src/HeapDump/GCHeapDumper.cs @@ -45,13 +45,10 @@ public class GCHeapDumper /// public GCHeapDumper(TextWriter log) { + m_origLog = log; m_copyOfLog = new StringWriter(); - m_log = new TeeTextWriter(m_copyOfLog, log); -#if DEPENDENT_HANDLE - m_handles = new Dictionary(100); -#endif - m_children = new GrowableArray(2000); - m_graphTypeIdxForArrayType = new Dictionary(100); + m_log = new TeeTextWriter(m_copyOfLog, m_origLog); + MaxDumpCountK = 250; } @@ -662,7 +659,8 @@ private void TriggerAllGCs(TraceEventSession session, Stopwatch sw, int processI session.CaptureState(ClrTraceEventParser.NativeProviderGuid, (long)(ClrTraceEventParser.Keywords.GCHeapCollect)); } - catch { + catch + { m_log.WriteLine("{0,5:n1}s: .NET Native Capture state failed. OK if this is not a .NET Native scenario.", sw.Elapsed.TotalSeconds); }; @@ -1022,7 +1020,7 @@ private bool TryGetDotNetDump(int processID) if (iCorDebug != null) { m_log.WriteLine("Attaching to silverlight process {0} from a {1} process.", processID, - Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")); + Environment.Is64BitProcess ? ProcessorArchitecture.Amd64 : ProcessorArchitecture.X86); iCorDebug.DebugActiveProcess((uint)processID, 0, out proc); } if (proc == null) @@ -1059,323 +1057,355 @@ private bool TryGetDotNetDump(int processID) /// Dump tries to aggressively Detach from debugProcess (so if we are killed, it does /// not bring down the debuggee). When we have detached, we also null out debugProcess, /// since it is now pretty useless. + /// + /// The resulting heap dump is in the m_gcHeapDump.MemoryGraph variable. /// private void DumpDotNetHeapData(ClrHeap heap, ref ICorDebugProcess debugProcess, bool isDump) { // We retry if we run out of memory with smaller MaxNodeCount. - for (int retryScale = 1; ; retryScale = retryScale * 2) + for (double retryScale = 1; ; retryScale = retryScale * 1.5) { try { - m_gotDotNetData = true; - m_copyOfLog.GetStringBuilder().Length = 0; // Restart the copy + var curHeapSize = GC.GetTotalMemory(false); + m_log.WriteLine("DumpDotNetHeapData: Heap Size {0:n0} MB", curHeapSize/1000000.0); + DumpDotNetHeapDataWorker(heap, ref debugProcess, isDump, retryScale); + return; + } + catch (OutOfMemoryException e) + { + // Give up after trying a few times. + if (retryScale > 10) + throw; + // Thow away the log that we will put into the .gcdump file for this first round. + m_copyOfLog = new StringWriter(); + m_log = new TeeTextWriter(m_copyOfLog, m_origLog); - m_log.WriteLine("Dumping GC heap, This process is a {0} bit process on a {1} bit OS", - EnvironmentUtilities.Is64BitProcess ? "64" : "32", - EnvironmentUtilities.Is64BitOperatingSystem ? "64" : "32"); - m_dotNetHeap = heap; + long beforeGCMemSize = GC.GetTotalMemory(false); + m_gcHeapDump.MemoryGraph = null; // Free most of the memory. + GC.Collect(); + long afterGCMemSize = GC.GetTotalMemory(false); + m_log.WriteLine("{0,5:f1}s: WARNING: Hit and Out of Memory Condition, retrying with a smaller MaxObjectCount", m_sw.Elapsed.TotalSeconds); + m_log.WriteLine("Stack: {0}", e.StackTrace); - if (debugProcess != null && Freeze && !isDump) - { - int isRunning; - debugProcess.IsRunning(out isRunning); - if (isRunning != 0) - { - m_log.WriteLine("freezing process."); - debugProcess.Stop(5000); - } - } + m_log.WriteLine("{0,5:f1}s: Dumper heap usage before {1:n0} MB after {2:n0} MB", + m_sw.Elapsed.TotalSeconds, beforeGCMemSize/1000000.0, afterGCMemSize/1000000.0); + } + } + } - ulong totalGCSize = m_dotNetHeap.TotalHeapSize; - if (MaxDumpCountK < 10) // Having fewer than 10K is probably wrong. - MaxDumpCountK = 10; - m_log.WriteLine("{0,5:f1}s: Size of heap = {1:f3} GB", m_sw.Elapsed.TotalSeconds, ((double)totalGCSize) / 1000000000.0); + private void DumpDotNetHeapDataWorker(ClrHeap heap, ref ICorDebugProcess debugProcess, bool isDump, double retryScale) + { +#if DEPENDENT_HANDLE + m_handles = new Dictionary(100); +#endif + m_children = new GrowableArray(2000); + m_graphTypeIdxForArrayType = new Dictionary(100); + m_typeIdxToGraphIdx = new GrowableArray(); + m_typeMayHaveHandles = new GrowableArray(); - /// We have an overhead of about 52 bytes per object (24 for the hash table, 28 for the rest) - /// we have 1GB in a 32 bit process - m_maxNodeCount = 1000000000 / 52; // 20 Meg objects; - if (EnvironmentUtilities.Is64BitOperatingSystem) - m_maxNodeCount *= 3; // We have 4GB instead of 2GB, so we 3GB instead of 1GB available for us to use in 32 bit processes = 60Meg objects + m_gotDotNetData = true; + m_copyOfLog.GetStringBuilder().Length = 0; // Restart the copy - // On 64 bit process we are limited by the fact that the graph node is in a MemoryStream and its byte array is limited to 2 gig. Most objects will - // be represented by 10 bytes in this array and we round this up to 16 = 128Meg - if (EnvironmentUtilities.Is64BitProcess) - { - m_maxNodeCount = int.MaxValue / 16 - 11; // Limited to 128Meg objects. (We are limited by the size of the stream) - m_log.WriteLine("In a 64 bit process. Increasing the max node count to {0:f1} Meg", m_maxNodeCount / 1000000.0); - } - m_log.WriteLine("Implicitly limit the number of nodes to {0:f1} Meg to avoid arrays that are too large", m_maxNodeCount / 1000000.0); + m_log.WriteLine("Dumping GC heap, This process is a {0} bit process on a {1} bit OS", + EnvironmentUtilities.Is64BitProcess ? "64" : "32", + EnvironmentUtilities.Is64BitOperatingSystem ? "64" : "32"); + m_log.WriteLine("{0,5:f1}s: Starting heap dump {1}", m_sw.Elapsed.TotalSeconds, DateTime.Now); + m_dotNetHeap = heap; - // Can force it smaller in case our estimate is not good enough. - var explicitMax = MaxNodeCountK * 1000; - if (0 < explicitMax) - { - m_maxNodeCount = Math.Min(m_maxNodeCount, explicitMax); - m_log.WriteLine("Explicit object count maximum {0:n0}, resulting max {1:n0}", explicitMax, m_maxNodeCount); - } + if (debugProcess != null && Freeze && !isDump) + { + int isRunning; + debugProcess.IsRunning(out isRunning); + if (isRunning != 0) + { + m_log.WriteLine("freezing process."); + debugProcess.Stop(5000); + } + } - if (retryScale != 1) - { - m_maxNodeCount = m_maxNodeCount / retryScale; - m_log.WriteLine("We are retrying the dump so we scale the max by {0} to the value {1}", retryScale, m_maxNodeCount); - } + ulong totalGCSize = m_dotNetHeap.TotalHeapSize; + if (MaxDumpCountK != 0 && MaxDumpCountK < 10) // Having fewer than 10K is probably wrong. + MaxDumpCountK = 10; + m_log.WriteLine("{0,5:f1}s: Size of heap = {1:f3} GB", m_sw.Elapsed.TotalSeconds, ((double)totalGCSize) / 1000000000.0); - // We assume that object on average are 8 object pointers. - int estimatedObjectCount = (int)(totalGCSize / ((uint)(8 * IntPtr.Size))); - m_log.WriteLine("Estimated number of objects = {0:n0}", estimatedObjectCount); + // We have an overhead of about 52 bytes per object (24 for the hash table, 28 for the rest) + // we have 1GB in a 32 bit process + m_maxNodeCount = 1000000000 / 52; // 20 Meg objects; + if (EnvironmentUtilities.Is64BitOperatingSystem) + m_maxNodeCount *= 3; // We have 4GB instead of 2GB, so we 3GB instead of 1GB available for us to use in 32 bit processes = 60Meg objects - // We force the node count to be this max node count if we are within a factor of 2. - // This insures that we don't have an issue where growing algorithms overshoot the amount - // of memory available and fail. Note we do this on 64 bit too - if (estimatedObjectCount >= m_maxNodeCount / 2) - { - m_log.WriteLine("Limiting object count to {0:n0}", m_maxNodeCount); - estimatedObjectCount = m_maxNodeCount + 2; - } + // On 64 bit process we are limited by the fact that the graph node is in a MemoryStream and its byte array is limited to 2 gig. Most objects will + // be represented by 10 bytes in this array and we round this up to 16 = 128Meg + if (EnvironmentUtilities.Is64BitProcess) + { + m_maxNodeCount = int.MaxValue / 16 - 11; // Limited to 128Meg objects. (We are limited by the size of the stream) + m_log.WriteLine("In a 64 bit process. Increasing the max node count to {0:f1} Meg", m_maxNodeCount / 1000000.0); + } + m_log.WriteLine("Implicitly limit the number of nodes to {0:f1} Meg to avoid arrays that are too large", m_maxNodeCount / 1000000.0); - // Allocate a memory graph if we have not already. - if (m_gcHeapDump.MemoryGraph == null) - m_gcHeapDump.MemoryGraph = new MemoryGraph(estimatedObjectCount); - m_gcHeapDump.MemoryGraph.Is64Bit = EnvironmentUtilities.Is64BitProcess; + // Can force it smaller in case our estimate is not good enough. + var explicitMax = MaxNodeCountK * 1000; + if (0 < explicitMax) + { + m_maxNodeCount = Math.Min(m_maxNodeCount, explicitMax); + m_log.WriteLine("Explicit object count maximum {0:n0}, resulting max {1:n0}", explicitMax, m_maxNodeCount); + } - var dotNetRoot = new MemoryNodeBuilder(m_gcHeapDump.MemoryGraph, "[.NET Roots]"); + if (retryScale != 1) + { + m_maxNodeCount = (int)(m_maxNodeCount / retryScale); + m_log.WriteLine("We are retrying the dump so we scale the max by {0} to the value {1}", retryScale, m_maxNodeCount); + } - ulong total = 0; - var ccwChildren = new GrowableArray(); - m_log.WriteLine("A total of {0} segments.", m_dotNetHeap.Segments.Count); + // We assume that object on average are 8 object pointers. + int estimatedObjectCount = (int)(totalGCSize / ((uint)(8 * IntPtr.Size))); + m_log.WriteLine("Estimated number of objects = {0:n0}", estimatedObjectCount); - // Get the GC Segments to dump - var gcHeapDumpSegments = new List(); - foreach (var seg in m_dotNetHeap.Segments) - { - var gcHeapDumpSegment = new GCHeapDumpSegment(); - gcHeapDumpSegment.Start = seg.Start; - gcHeapDumpSegment.End = seg.End; - if (seg.IsLarge) - { - // Everything is Gen3 (large objects) - gcHeapDumpSegment.Gen0End = seg.End; - gcHeapDumpSegment.Gen1End = seg.End; - gcHeapDumpSegment.Gen2End = seg.End; - gcHeapDumpSegment.Gen3End = seg.End; - } - else - { - gcHeapDumpSegment.Gen0End = seg.End; - gcHeapDumpSegment.Gen1End = seg.Gen0Start; - gcHeapDumpSegment.Gen2End = seg.Gen1Start; - gcHeapDumpSegment.Gen3End = seg.Start; - } - gcHeapDumpSegments.Add(gcHeapDumpSegment); + // We force the node count to be this max node count if we are within a factor of 2. + // This insures that we don't have an issue where growing algorithms overshoot the amount + // of memory available and fail. Note we do this on 64 bit too + if (estimatedObjectCount >= m_maxNodeCount / 2) + { + m_log.WriteLine("Limiting object count to {0:n0}", m_maxNodeCount); + estimatedObjectCount = m_maxNodeCount + 2; + } - total += seg.Length; - m_log.WriteLine("Segment: Start {0,16:x} Length: {1,16:x} {2,11:n3}M LOH:{3}", seg.Start, seg.Length, seg.Length / 1000000.0, seg.IsLarge); - } - m_log.WriteLine("Segment: Total {0,16} Length: {1,16:x} {2,11:n3}M", "", total, total / 1000000.0); + // Allocate a memory graph if we have not already. + if (m_gcHeapDump.MemoryGraph == null) + m_gcHeapDump.MemoryGraph = new MemoryGraph(estimatedObjectCount); + m_gcHeapDump.MemoryGraph.Is64Bit = EnvironmentUtilities.Is64BitProcess; - try - { - m_log.WriteLine("{0,5:f1}s: Scanning Named GC roots", m_sw.Elapsed.TotalSeconds); - // AddStaticAndLocalRoots(rootNode, debugProcess); + var dotNetRoot = new MemoryNodeBuilder(m_gcHeapDump.MemoryGraph, "[.NET Roots]"); - // From here we don't use proc unless we are frozen, so we can detach aggressively - if (debugProcess != null && !Freeze && !isDump) - { - m_log.WriteLine("{0,5:f1}s: Not frozen, Finished with roots. Detaching the process", m_sw.Elapsed.TotalSeconds); - TryDetach(ref debugProcess); - } + ulong total = 0; + var ccwChildren = new GrowableArray(); + m_log.WriteLine("DumpDotNetHeapDataWorker: Heap Size of dumper {0:n0} MB", GC.GetTotalMemory(false) / 1000000.0); - m_log.WriteLine("{0,5:f1}s: Scanning UNNAMED GC roots", m_sw.Elapsed.TotalSeconds); - var rootsStartTimeMSec = m_sw.Elapsed.TotalMilliseconds; - var getCCWDataNotImplemented = false; // THis happens on silverlight. - // Do the roots that don't have good names + m_log.WriteLine("A total of {0} segments.", m_dotNetHeap.Segments.Count); + // Get the GC Segments to dump + var gcHeapDumpSegments = new List(); + foreach (var seg in m_dotNetHeap.Segments) + { + var gcHeapDumpSegment = new GCHeapDumpSegment(); + gcHeapDumpSegment.Start = seg.Start; + gcHeapDumpSegment.End = seg.End; + if (seg.IsLarge) + { + // Everything is Gen3 (large objects) + gcHeapDumpSegment.Gen0End = seg.End; + gcHeapDumpSegment.Gen1End = seg.End; + gcHeapDumpSegment.Gen2End = seg.End; + gcHeapDumpSegment.Gen3End = seg.End; + } + else + { + gcHeapDumpSegment.Gen0End = seg.End; + gcHeapDumpSegment.Gen1End = seg.Gen0Start; + gcHeapDumpSegment.Gen2End = seg.Gen1Start; + gcHeapDumpSegment.Gen3End = seg.Start; + } + gcHeapDumpSegments.Add(gcHeapDumpSegment); - int numRoots = 0; - foreach (ClrRoot root in m_dotNetHeap.EnumerateRoots(true)) - { - // If there is a named root already then we assume that that root is the interesting one and we drop this one. - if (m_gcHeapDump.MemoryGraph.IsInGraph(root.Object)) - continue; + total += seg.Length; + m_log.WriteLine("Segment: Start {0,16:x} Length: {1,16:x} {2,11:n3}M LOH:{3}", seg.Start, seg.Length, seg.Length / 1000000.0, seg.IsLarge); + } + m_log.WriteLine("Segment: Total {0,16} Length: {1,16:x} {2,11:n3}M", "", total, total / 1000000.0); - // Skip weak roots. - if (root.Kind == Microsoft.Diagnostics.Runtime.GCRootKind.Weak) - continue; + try + { + m_log.WriteLine("{0,5:f1}s: Scanning Named GC roots", m_sw.Elapsed.TotalSeconds); + // AddStaticAndLocalRoots(rootNode, debugProcess); - numRoots++; - if (numRoots % 1024 == 0) - m_log.WriteLine("{0,5:f1}s: Scanned {1} roots.", m_sw.Elapsed.TotalSeconds, numRoots); + // From here we don't use proc unless we are frozen, so we can detach aggressively + if (debugProcess != null && !Freeze && !isDump) + { + m_log.WriteLine("{0,5:f1}s: Not frozen, Finished with roots. Detaching the process", m_sw.Elapsed.TotalSeconds); + TryDetach(ref debugProcess); + } - string name = root.Name; - if (name == "RefCount handle") - name = "COM/WinRT Objects"; - else if (name == "local var" || name.EndsWith("handle", StringComparison.OrdinalIgnoreCase)) - name += "s"; - MemoryNodeBuilder nodeToAddRootTo = dotNetRoot; + m_log.WriteLine("{0,5:f1}s: Scanning UNNAMED GC roots", m_sw.Elapsed.TotalSeconds); + var rootsStartTimeMSec = m_sw.Elapsed.TotalMilliseconds; + var getCCWDataNotImplemented = false; // THis happens on silverlight. + // Do the roots that don't have good names - var type = heap.GetObjectType(root.Object); - if (type != null && !getCCWDataNotImplemented) - { - // TODO FIX NOW, try clause is a hack because ccwInfo.* methods sometime throw. - // Also GetCCWData fails for silverlight - try - { - var ccwInfo = type.GetCCWData(root.Object); - if (ccwInfo != null) - { - // TODO FIX NOW for some reason IUnknown is always 0 - ulong comPtr = ccwInfo.IUnknown; - if (comPtr == 0) - { - var intfs = ccwInfo.Interfaces; - if (intfs != null && intfs.Count > 0) - comPtr = intfs[0].InterfacePointer; - } + int numRoots = 0; + foreach (ClrRoot root in m_dotNetHeap.EnumerateRoots(true)) + { + // If there is a named root already then we assume that that root is the interesting one and we drop this one. + if (m_gcHeapDump.MemoryGraph.IsInGraph(root.Object)) + continue; - // Create a CCW node that represents the COM object that has one child that points at the managed object. - var ccwNode = m_gcHeapDump.MemoryGraph.GetNodeIndex(comPtr); - var typeName = "[CCW"; - var targetType = m_dotNetHeap.GetObjectType(root.Object); - if (targetType != null) - typeName += " for " + targetType.Name; - // typeName += " " + comPtrName + ":[0x" + comPtr.ToString("x"); - typeName += " RefCnt: " + ccwInfo.RefCount + "]"; - var ccwTypeIndex = GetTypeIndexForName(typeName, null, 200); - ccwChildren.Clear(); - ccwChildren.Add(m_gcHeapDump.MemoryGraph.GetNodeIndex(root.Object)); - - if (comPtr != 0) - m_gcHeapDump.MemoryGraph.SetNode(ccwNode, ccwTypeIndex, 200, ccwChildren); - - nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[COM/WinRT Objects]"); - nodeToAddRootTo.AddChild(ccwNode); - continue; - } - } - catch (NotImplementedException) - { - // getCCWDataNoImplemented not implemented on Silverlight. don't keep trying. - getCCWDataNotImplemented = true; - } - catch (Exception e) - { - m_log.WriteLine("Caught exception {0} while fetching CCW information, treating as unknown root", - e.GetType().Name); - } - } + // Skip weak roots. + if (root.Kind == Microsoft.Diagnostics.Runtime.GCRootKind.Weak) + continue; - if (name.StartsWith("static var")) - nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[static vars]"); + numRoots++; + if (numRoots % 1024 == 0) + m_log.WriteLine("{0,5:f1}s: Scanned {1} roots.", m_sw.Elapsed.TotalSeconds, numRoots); - if (root.IsPinned && root.Kind == Microsoft.Diagnostics.Runtime.GCRootKind.LocalVar) - { - // Add pinned local vars to their own node - nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[Pinned local vars]"); - } - else - { - nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[" + name + "]"); - } - nodeToAddRootTo.AddChild(m_gcHeapDump.MemoryGraph.GetNodeIndex(root.Object)); - } + string name = root.Name; + if (name == "RefCount handle") + name = "COM/WinRT Objects"; + else if (name == "local var" || name.EndsWith(" handle", StringComparison.OrdinalIgnoreCase)) + name += "s"; + MemoryNodeBuilder nodeToAddRootTo = dotNetRoot; -#if DEPENDENT_HANDLE - var runtime = m_dotNetHeap.Runtime; - // Special logic to allow Dependent handles to look like nodes from source to target. - NodeTypeIndex typeIdxForDependentHandlePseudoNode = NodeTypeIndex.Invalid; - // Get all the dependent handles - foreach (var handle in runtime.EnumerateHandles()) + var type = heap.GetObjectType(root.Object); + if (type != null && !getCCWDataNotImplemented) + { + // TODO FIX NOW, try clause is a hack because ccwInfo.* methods sometime throw. + // Also GetCCWData fails for silverlight + try { - if (handle.HandleType == HandleType.Dependent) + var ccwInfo = type.GetCCWData(root.Object); + if (ccwInfo != null) { - var dependentHandle = handle.Address; - Debug.Assert(dependentHandle != 0); - var source = handle.Object; - if (source != 0) + // TODO FIX NOW for some reason IUnknown is always 0 + ulong comPtr = ccwInfo.IUnknown; + if (comPtr == 0) { - m_children.Clear(); - m_children.Add(m_gcHeapDump.MemoryGraph.GetNodeIndex(handle.DependentTarget)); - - if (typeIdxForDependentHandlePseudoNode == NodeTypeIndex.Invalid) - typeIdxForDependentHandlePseudoNode = GetTypeIndexForName("Dependent Handle", null, 0); - - NodeIndex nodeIdxForDependentHandlePseudoNode = m_gcHeapDump.MemoryGraph.GetNodeIndex(dependentHandle); - m_gcHeapDump.MemoryGraph.SetNode(nodeIdxForDependentHandlePseudoNode, typeIdxForDependentHandlePseudoNode, runtime.PointerSize * 2, m_children); - - m_handles[dependentHandle] = nodeIdxForDependentHandlePseudoNode; - - // Add the dependent handle node to a table so that we can create links from the source to the dependent handle. - if (m_dependentHandles == null) - m_dependentHandles = new Dictionary>(); - - var sourceNodeIdx = m_gcHeapDump.MemoryGraph.GetNodeIndex(source); - List dependentHandlesForAddress; - if (!m_dependentHandles.TryGetValue(sourceNodeIdx, out dependentHandlesForAddress)) - m_dependentHandles[sourceNodeIdx] = dependentHandlesForAddress = new List(); - dependentHandlesForAddress.Add(nodeIdxForDependentHandlePseudoNode); + var intfs = ccwInfo.Interfaces; + if (intfs != null && intfs.Count > 0) + comPtr = intfs[0].InterfacePointer; } + + // Create a CCW node that represents the COM object that has one child that points at the managed object. + var ccwNode = m_gcHeapDump.MemoryGraph.GetNodeIndex(ccwInfo.Handle); + var typeName = "[CCW"; + var targetType = m_dotNetHeap.GetObjectType(root.Object); + if (targetType != null) + typeName += " for " + targetType.Name; + // typeName += " " + comPtrName + ":[0x" + comPtr.ToString("x"); + typeName += " RefCnt: " + ccwInfo.RefCount + "]"; + var ccwTypeIndex = GetTypeIndexForName(typeName, null, 200); + ccwChildren.Clear(); + ccwChildren.Add(m_gcHeapDump.MemoryGraph.GetNodeIndex(root.Object)); + + if (comPtr != 0) + m_gcHeapDump.MemoryGraph.SetNode(ccwNode, ccwTypeIndex, 200, ccwChildren); + + nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[COM/WinRT Objects]"); + nodeToAddRootTo.AddChild(ccwNode); + continue; } } -#endif + catch (NotImplementedException) + { + // getCCWDataNoImplemented not implemented on Silverlight. don't keep trying. + getCCWDataNotImplemented = true; + } + catch (Exception e) + { + m_log.WriteLine("Caught exception {0} while fetching CCW information, treating as unknown root", + e.GetType().Name); + } + } + + if (name.StartsWith("static var")) + nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[static vars]"); - var rootDuration = m_sw.Elapsed.TotalMilliseconds - rootsStartTimeMSec; - m_log.WriteLine("Scanning UNNAMED GC roots took {0:n1} msec", rootDuration); + if (root.IsPinned && root.Kind == Microsoft.Diagnostics.Runtime.GCRootKind.LocalVar) + { + // Add pinned local vars to their own node + nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[Pinned local vars]"); } - catch (Exception e) + else { - m_log.WriteLine("[ERROR while processing roots: {0}", e.Message); - m_log.WriteLine("Continuing without complete root information"); + nodeToAddRootTo = nodeToAddRootTo.FindOrCreateChild("[" + name + "]"); } - m_log.Flush(); + nodeToAddRootTo.AddChild(m_gcHeapDump.MemoryGraph.GetNodeIndex(root.Object)); + } + +#if DEPENDENT_HANDLE + var runtime = m_dotNetHeap.Runtime; + // Special logic to allow Dependent handles to look like nodes from source to target. + NodeTypeIndex typeIdxForDependentHandlePseudoNode = NodeTypeIndex.Invalid; + // Get all the dependent handles + foreach (var handle in runtime.EnumerateHandles()) + { + if (handle.HandleType == HandleType.Dependent) + { + var dependentHandle = handle.Address; + Debug.Assert(dependentHandle != 0); + var source = handle.Object; + if (source != 0) + { + m_children.Clear(); + m_children.Add(m_gcHeapDump.MemoryGraph.GetNodeIndex(handle.DependentTarget)); - m_log.WriteLine("{0,5:f1}s: Starting GC Graph Traversal. This can take a while...", m_sw.Elapsed.TotalSeconds); - double heapTravseralStartSec = m_sw.Elapsed.TotalSeconds; + if (typeIdxForDependentHandlePseudoNode == NodeTypeIndex.Invalid) + typeIdxForDependentHandlePseudoNode = GetTypeIndexForName("Dependent Handle", null, 0); - // If we are want to dump the whole heap, do it now, this is much more efficient. - long startSize = m_gcHeapDump.MemoryGraph.TotalSize; - DumpAllSegments(); - Debug.Assert(m_gcHeapDump.MemoryGraph.TotalSize - startSize < (long)totalGCSize); + NodeIndex nodeIdxForDependentHandlePseudoNode = m_gcHeapDump.MemoryGraph.GetNodeIndex(dependentHandle); + m_gcHeapDump.MemoryGraph.SetNode(nodeIdxForDependentHandlePseudoNode, typeIdxForDependentHandlePseudoNode, runtime.PointerSize * 2, m_children); - if (m_runTime != null) - { - m_log.Write("{0,5:f1}s: Dump RCW/CCW information", m_sw.Elapsed.TotalSeconds); + m_handles[dependentHandle] = nodeIdxForDependentHandlePseudoNode; - m_gcHeapDump.InteropInfo = new InteropInfo(); - try - { - DumpCCWRCW(); - } - catch (Exception e) - { - m_log.Write("Error: dumping CCW/RCW information\r\n{0}", e); - m_gcHeapDump.InteropInfo = new InteropInfo(); // Clear the info + // Add the dependent handle node to a table so that we can create links from the source to the dependent handle. + if (m_dependentHandles == null) + m_dependentHandles = new Dictionary>(); + + var sourceNodeIdx = m_gcHeapDump.MemoryGraph.GetNodeIndex(source); + List dependentHandlesForAddress; + if (!m_dependentHandles.TryGetValue(sourceNodeIdx, out dependentHandlesForAddress)) + m_dependentHandles[sourceNodeIdx] = dependentHandlesForAddress = new List(); + dependentHandlesForAddress.Add(nodeIdxForDependentHandlePseudoNode); } } + } +#endif - // If we have been asked to free, we only need to freeze while gathering data. We are done here so we can unfreeze - if (debugProcess != null && Freeze && !isDump) - TryDetach(ref debugProcess); - m_log.WriteLine("{0,5:f1}s: Done collecting data.", m_sw.Elapsed.TotalSeconds); + var rootDuration = m_sw.Elapsed.TotalMilliseconds - rootsStartTimeMSec; + m_log.WriteLine("Scanning UNNAMED GC roots took {0:n1} msec", rootDuration); + } + catch (Exception e) + { + m_log.WriteLine("[ERROR while processing roots: {0}", e.Message); + m_log.WriteLine("Continuing without complete root information"); + } + m_log.Flush(); - var dotNetInfo = m_gcHeapDump.DotNetHeapInfo = new DotNetHeapInfo(); + m_log.WriteLine("{0,5:f1}s: Starting GC Graph Traversal. This can take a while...", m_sw.Elapsed.TotalSeconds); + double heapTravseralStartSec = m_sw.Elapsed.TotalSeconds; - // Write out the dump (TODO we should do this incrementally). - dotNetInfo.SizeOfAllSegments = (long)totalGCSize; - dotNetInfo.Segments = gcHeapDumpSegments; + // If we are want to dump the whole heap, do it now, this is much more efficient. + long startSize = m_gcHeapDump.MemoryGraph.TotalSize; + DumpAllSegments(); + Debug.Assert(m_gcHeapDump.MemoryGraph.TotalSize - startSize < (long)totalGCSize); - m_gcHeapDump.MemoryGraph.RootIndex = dotNetRoot.Build(); + if (m_runTime != null) + { + m_log.Write("{0,5:f1}s: Dump RCW/CCW information", m_sw.Elapsed.TotalSeconds); - m_log.WriteLine("Number of bad objects during trace {0:n0}", BadObjectCount); - return; + m_gcHeapDump.InteropInfo = new InteropInfo(); + try + { + DumpCCWRCW(); } - catch (OutOfMemoryException) + catch (Exception e) { - // Give up after trying a few times. - if (retryScale > 16) - throw; - m_gcHeapDump.MemoryGraph = null; // Free most of the memory. - m_log.WriteLine("ERROR: Hit and Out of Memory Condition, retrying with a smaller MaxObjectCount"); + m_log.Write("Error: dumping CCW/RCW information\r\n{0}", e); + m_gcHeapDump.InteropInfo = new InteropInfo(); // Clear the info } } + + // If we have been asked to free, we only need to freeze while gathering data. We are done here so we can unfreeze + if (debugProcess != null && Freeze && !isDump) + TryDetach(ref debugProcess); + m_log.WriteLine("{0,5:f1}s: Done collecting data.", m_sw.Elapsed.TotalSeconds); + + var dotNetInfo = m_gcHeapDump.DotNetHeapInfo = new DotNetHeapInfo(); + + // Write out the dump (TODO we should do this incrementally). + dotNetInfo.SizeOfAllSegments = (long)totalGCSize; + dotNetInfo.Segments = gcHeapDumpSegments; + + m_gcHeapDump.MemoryGraph.RootIndex = dotNetRoot.Build(); + + m_log.WriteLine("Number of bad objects during trace {0:n0}", BadObjectCount); + m_log.WriteLine("{0,5:f1}s: Finished heap dump {1}", m_sw.Elapsed.TotalSeconds, DateTime.Now); + return; } /// @@ -1398,7 +1428,7 @@ private void WriteData(bool logLiveStats) m_gcHeapDump.MemoryGraph.AllowReading(); var maxDumpCount = MaxDumpCountK * 1000; - if (maxDumpCount < m_gcHeapDump.MemoryGraph.NodeCount) + if (maxDumpCount != 0 && maxDumpCount < m_gcHeapDump.MemoryGraph.NodeCount) { m_log.WriteLine("Object count {0}K > MaxDumpCount = {1}K, sampling", m_gcHeapDump.MemoryGraph.NodeCount / 1000, MaxDumpCountK); @@ -1439,7 +1469,7 @@ private void WriteData(bool logLiveStats) m_gcHeapDump.TotalProcessCommit / 1000000, m_gcHeapDump.TotalProcessWorkingSet / 1000000); m_log.WriteLine("Total GC Size = {0:n0} = {1:n2} % of total working set", - m_gcHeapDump.MemoryGraph.TotalSize / 1000000, + m_gcHeapDump.MemoryGraph.TotalSize / 1000000, m_gcHeapDump.MemoryGraph.TotalSize * 100.0 / m_gcHeapDump.TotalProcessWorkingSet); } catch (Exception) { } @@ -1650,6 +1680,7 @@ private void DumpAllSegments() Address lastObjEnd = 0; Address lastObj = 0; + Address nextStatusUpdateObj = 0; ClrType type; for (Address objAddr = segment.FirstObject; start <= objAddr && objAddr < end; objAddr = segment.NextObject(objAddr)) { @@ -1757,10 +1788,17 @@ private void DumpAllSegments() } } #endif + if (objAddr > nextStatusUpdateObj) + { + m_log.WriteLine("{0,5:f1}s: Dumped {1:n0} objects, max_dump_limit {2:n0} Dumper heap Size {3:n0}MB", + m_sw.Elapsed.TotalSeconds, m_gcHeapDump.MemoryGraph.NodeCount, m_maxNodeCount, GC.GetTotalMemory(false)/1000000.0); + nextStatusUpdateObj = objAddr + 1000000; // log a message every 1 Meg + } + if (m_gcHeapDump.MemoryGraph.NodeCount >= m_maxNodeCount || m_gcHeapDump.MemoryGraph.DistinctRefCount + m_children.Count > m_maxNodeCount) { - m_log.WriteLine("WARNING, exceeded the maximum number of node allowed {0}", m_maxNodeCount); + m_log.WriteLine("[WARNING, exceeded the maximum number of node allowed {0}]", m_maxNodeCount); m_log.WriteLine("{0,5:f1}s: Truncating heap dump.", m_sw.Elapsed.TotalSeconds); return; } @@ -1819,26 +1857,39 @@ virtual unsafe public Address FetchIntPtrAt(ClrHeap heap, Address address) /// private unsafe Address FindNextValidObject(Address objAddr, Address segmentEnd) { - // This is inefficient, but we should not do this often + // This is inefficient, but we should not do this often + + // See if we have poiters from already scanned objects that happen to point + // just beyond where we failed synchronization. If so use that as the next + // valid object (since we know it should be). We look back at the last + // 200 object to see if we have these. Address ret = objAddr; - for (NodeIndex i = 0; i < m_gcHeapDump.MemoryGraph.NodeIndexLimit; i++) + NodeIndex endIdx = m_gcHeapDump.MemoryGraph.NodeIndexLimit; + NodeIndex startIdx = endIdx - 200; + if (startIdx < 0) + startIdx = 0; + for (NodeIndex i = startIdx; i < endIdx; i++) ret = Math.Max(ret, m_gcHeapDump.MemoryGraph.GetAddress(i)); - if (ret == objAddr) + if (ret <= objAddr) ret = Address.MaxValue; - // If we skip more that 100K, we should try walking IntPtrs + // If we skip more that 100K, we should try walking IntPtrs. This is more heurisitc, + // but should give up after 100K. // TODO: should we do this all the time? if (100000 < ret - objAddr) { m_log.WriteLine("Trying to resync by walking IntPtrs starting at {0:x}", objAddr); bool prevValueIsZero = true; - // Only search for 10M pointer slots. TODO: should we have this limit? - for (int i = 0; i < 10000000; i++) + // Only search for 100K pointer slots. TODO: should we have this limit? + for (int i = 0; i < 100000; i++) { objAddr += (uint)m_dotNetHeap.PointerSize; if (segmentEnd <= objAddr) break; + if ((i & 0xFFF) == 0xFFF) + m_log.WriteLine("Walked {0} ptrs looking for object header", i); + // TODO is this fetching an IntPtr at a time too expensive? Address val = FetchIntPtrAt(m_dotNetHeap, objAddr); // We only resync on an object that has a preceded by a 0 pointer (null object header). @@ -1856,14 +1907,14 @@ private unsafe Address FindNextValidObject(Address objAddr, Address segmentEnd) // We also filter out any value that lives in the GC heap itself (since method tables don't). if (m_dotNetHeap.IsInHeap(val)) continue; - m_log.WriteLine("Trying to resync at {0:x} with value {1:x}", objAddr, val); + // m_log.WriteLine("Trying to resync at {0:x} with value {1:x}", objAddr, val); // OK see if we have a valid type. var type = m_dotNetHeap.GetObjectType(objAddr); if (type == null) continue; - m_log.WriteLine("Trying to resync at {0:x}, found type {1}", objAddr, type.Name); + // m_log.WriteLine("Trying to resync at {0:x}, found type {1}", objAddr, type.Name); // See if the 'next' object has a valid type var objAddr1 = objAddr + type.GetSize(objAddr); @@ -1884,7 +1935,8 @@ private unsafe Address FindNextValidObject(Address objAddr, Address segmentEnd) } m_log.WriteLine("Failed to resync by walking IntPtrs."); } - + else + m_log.WriteLine("Resynced by looking at forward poiters at {0:x}", ret); return ret; } @@ -2345,6 +2397,7 @@ public override void LoadAssembly(ICorDebugAppDomain pAppDomain, ICorDebugAssemb private int m_processID; private string m_outputFileName; private Stream m_outputStream; + private TextWriter m_origLog; // What was passed into the constructor. private TextWriter m_log; // Where we send messages private StringWriter m_copyOfLog; // We keep a copy of all logged messages here to append to output file. private Stopwatch m_sw; // We keep track of how long it takes. @@ -2734,8 +2787,8 @@ public static void EnumerateStaticRoots(ICorDebugProcess proc, ThreadContextSet // Console.WriteLine("Succeeded with thread local field {0}", fieldName); } } - if (onClass != null) - onClass(className, moduleName); + + onClass?.Invoke(className, moduleName); } catch (Exception e) { @@ -2889,7 +2942,9 @@ internal static string GetTypeName(ICorDebugType corType, out string moduleFileP } return ret; } - public static int pointerSize = Marshal.SizeOf(typeof(IntPtr)); + + public static readonly int pointerSize = IntPtr.Size; + public static bool IsReferenceType(CorElementType elementType) { switch (elementType) diff --git a/src/HeapDump/GlobalSuppressions.cs b/src/HeapDump/GlobalSuppressions.cs deleted file mode 100644 index acc98b525..000000000 Binary files a/src/HeapDump/GlobalSuppressions.cs and /dev/null differ diff --git a/src/HeapDump/HeapDump.csproj b/src/HeapDump/HeapDump.csproj new file mode 100644 index 000000000..6d80ff69c --- /dev/null +++ b/src/HeapDump/HeapDump.csproj @@ -0,0 +1,73 @@ + + + + + net45 + AnyCPU;x64 + Exe + true + true + + HeapDump + HeapDump + HeapDump + Microsoft + Copyright © Microsoft 2011 + + + + + win7-x64 + + + + + true + + + + $(DefineConstants);STANDALONE_EXE + + + + + + + + + + + + + + + MemoryGraph\graph.cs + + + MemoryGraph\MemoryGraph.cs + + + Utilities\EnvironmentUtilities.cs + + + Utilities\StringUtilities.cs + + + + + + + + + + + + + + + + + + + + diff --git a/src/HeapDump/HeapDump.sln b/src/HeapDump/HeapDump.sln deleted file mode 100644 index 188afda44..000000000 --- a/src/HeapDump/HeapDump.sln +++ /dev/null @@ -1,86 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 12 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeapDumpX86", "HeapDumpX86.csproj", "{80345889-A13D-4F2D-A096-98B95C55BF45}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TraceEvent", "..\traceEvent\TraceEvent.csproj", "{B68F4968-A7CF-41CC-AD6E-373DB5E67944}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeapDumpX64", "HeapDumpX64.csproj", "{31850F14-F02B-4A7D-9779-CF583FD8F739}" -EndProject -Global - GlobalSection(TeamFoundationVersionControl) = preSolution - SccNumberOfProjects = 3 - SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccTeamFoundationServer = http://vstfdevdiv:8080/devdiv2 - SccProjectUniqueName0 = HeapDumpX86.csproj - SccProjectName0 = . - SccAuxPath0 = http://vstfdevdiv:8080/devdiv2 - SccLocalPath0 = . - SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccProjectUniqueName1 = ..\\traceEvent\\TraceEvent.csproj - SccProjectName1 = ../traceEvent - SccAuxPath1 = http://vstfdevdiv:8080/devdiv2 - SccLocalPath1 = ..\\traceEvent - SccProvider1 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccProjectUniqueName2 = HeapDumpX64.csproj - SccProjectName2 = . - SccAuxPath2 = http://vstfdevdiv:8080/devdiv2 - SccLocalPath2 = . - SccProvider2 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|Any CPU.ActiveCfg = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x64.ActiveCfg = Debug|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x64.Build.0 = Debug|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x86.ActiveCfg = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x86.Build.0 = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|Any CPU.ActiveCfg = Release|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|Mixed Platforms.Build.0 = Release|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x64.ActiveCfg = Release|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x64.Build.0 = Release|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x86.ActiveCfg = Release|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x86.Build.0 = Release|x86 - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|x64.ActiveCfg = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Debug|x86.ActiveCfg = Debug|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Any CPU.Build.0 = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|x64.ActiveCfg = Release|Any CPU - {B68F4968-A7CF-41CC-AD6E-373DB5E67944}.Release|x86.ActiveCfg = Release|Any CPU - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|Any CPU.ActiveCfg = Debug|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|x64.ActiveCfg = Debug|x64 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|x64.Build.0 = Debug|x64 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|x86.ActiveCfg = Debug|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Debug|x86.Build.0 = Debug|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|Any CPU.ActiveCfg = Release|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|Mixed Platforms.Build.0 = Release|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|x64.ActiveCfg = Release|x64 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|x64.Build.0 = Release|x64 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|x86.ActiveCfg = Release|x86 - {31850F14-F02B-4A7D-9779-CF583FD8F739}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/HeapDump/HeapDumpDll.csproj b/src/HeapDump/HeapDumpDll.csproj deleted file mode 100644 index de7b3a7ec..000000000 --- a/src/HeapDump/HeapDumpDll.csproj +++ /dev/null @@ -1,89 +0,0 @@ - - - - $(MSBuildThisFileDirectory)\.. - - - - true - v4.0 - - - - - - true - true - Inter - - - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE} - Library - Properties - Microsoft.Diagnostics.HeapDump - Microsoft.Diagnostics.HeapDump - true - false - 0649;0169 - - - true - full - false - DEBUG;TRACE - - - pdbonly - true - TRACE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {a82126ca-23aa-41f1-8586-a5938d44d0a7} - ClrMemDiag - - - {e6eacf92-f22d-47dc-8eeb-9bbc4df1e4d5} - FastSerialization - - - {f1032b5c-568a-4bad-b253-1b4548389063} - MemoryGraph - - - {e32c9fc3-8524-4511-8acb-235ac136dc22} - Utilities - - - - diff --git a/src/HeapDump/HeapDumpDll.sln b/src/HeapDump/HeapDumpDll.sln deleted file mode 100644 index 424216282..000000000 --- a/src/HeapDump/HeapDumpDll.sln +++ /dev/null @@ -1,66 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 12 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeapDumpDll", "HeapDumpDll.csproj", "{1F2635F5-FD7E-4C06-B23C-A93E97389FDE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClrMemDiag", "..\ClrMemDiag\ClrMemDiag.csproj", "{A82126CA-23AA-41F1-8586-A5938D44D0A7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FastSerialization", "..\FastSerialization\FastSerialization.csproj", "{E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MemoryGraph", "..\MemoryGraph\MemoryGraph.csproj", "{F1032B5C-568A-4BAD-B253-1B4548389063}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utilities", "..\Utilities\Utilities.csproj", "{E32C9FC3-8524-4511-8ACB-235AC136DC22}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Debug|x86.ActiveCfg = Debug|x86 - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Debug|x86.Build.0 = Debug|x86 - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Release|Any CPU.Build.0 = Release|Any CPU - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Release|x86.ActiveCfg = Release|x86 - {1F2635F5-FD7E-4C06-B23C-A93E97389FDE}.Release|x86.Build.0 = Release|x86 - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|x86.ActiveCfg = Debug|x86 - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|x86.Build.0 = Debug|x86 - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Any CPU.Build.0 = Release|Any CPU - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|x86.ActiveCfg = Release|x86 - {A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|x86.Build.0 = Release|x86 - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|x86.ActiveCfg = Debug|x86 - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Debug|x86.Build.0 = Debug|x86 - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|Any CPU.Build.0 = Release|Any CPU - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|x86.ActiveCfg = Release|x86 - {E6EACF92-F22D-47DC-8EEB-9BBC4DF1E4D5}.Release|x86.Build.0 = Release|x86 - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|x86.ActiveCfg = Debug|x86 - {F1032B5C-568A-4BAD-B253-1B4548389063}.Debug|x86.Build.0 = Debug|x86 - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|Any CPU.Build.0 = Release|Any CPU - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|x86.ActiveCfg = Release|x86 - {F1032B5C-568A-4BAD-B253-1B4548389063}.Release|x86.Build.0 = Release|x86 - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|x86.ActiveCfg = Debug|x86 - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Debug|x86.Build.0 = Debug|x86 - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|Any CPU.Build.0 = Release|Any CPU - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|x86.ActiveCfg = Release|x86 - {E32C9FC3-8524-4511-8ACB-235AC136DC22}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/HeapDump/HeapDumpX64.csproj b/src/HeapDump/HeapDumpX64.csproj deleted file mode 100644 index 0bf19d2bc..000000000 --- a/src/HeapDump/HeapDumpX64.csproj +++ /dev/null @@ -1,152 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {31850F14-F02B-4A7D-9779-CF583FD8F739} - Exe - Properties - HeapDump - HeapDump - v4.5 - - - 512 - SAK - SAK - SAK - SAK - - - x86 - true - full - false - bin\Debug\$(Platform)\ - TRACE;DEBUG;IN_PERFVIEW;STANDALONE_EXE - prompt - 4 - true - false - - - x86 - pdbonly - true - bin\Release\$(Platform)\ - TRACE;IN_PERFVIEW;STANDALONE_EXE - prompt - 4 - true - false - - - true - bin\Debug\$(Platform)\ - TRACE;DEBUG;STANDALONE_EXE - true - full - x64 - prompt - false - - - bin\Release\$(Platform)\ - TRACE;STANDALONE_EXE - true - true - pdbonly - x64 - prompt - false - false - - - - False - ..\PerfView\packages\Microsoft.Diagnostics.Runtime.0.8.31-beta\lib\net40\Microsoft.Diagnostics.Runtime.dll - - - ..\perfView\SupportDlls\Microsoft.Diagnostics.Tracing.EventSource.dll - - - - - - MemoryGraph\graph.cs - - - MemoryGraph\MemoryGraph.cs - - - Utilities\EnvironmentUtilities.cs - - - Utilities\StringUtilities.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {e6eacf92-f22d-47dc-8eeb-9bbc4df1e4d5} - FastSerialization - - - {B68F4968-A7CF-41CC-AD6E-373DB5E67944} - TraceEvent - - - - - - - - - \ No newline at end of file diff --git a/src/HeapDump/HeapDumpX86.csproj b/src/HeapDump/HeapDumpX86.csproj deleted file mode 100644 index e84630967..000000000 --- a/src/HeapDump/HeapDumpX86.csproj +++ /dev/null @@ -1,161 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {80345889-A13D-4F2D-A096-98B95C55BF45} - Exe - Properties - HeapDump - HeapDump - v4.5 - - - 512 - SAK - SAK - SAK - SAK - - - x86 - true - full - false - bin\Debug\$(Platform)\ - TRACE;DEBUG;STANDALONE_EXE - prompt - 4 - true - false - - - x86 - pdbonly - true - bin\Release\$(Platform)\ - TRACE;STANDALONE_EXE - prompt - 4 - true - false - false - - - true - bin\Debug\$(Platform)\ - TRACE;DEBUG;APPROXDUMP_WRITE;STANDALONE_EXE - true - full - x64 - prompt - false - - - bin\Release\$(Platform)\ - TRACE;APPROXDUMP_WRITE;STANDALONE_EXE - true - true - pdbonly - x64 - prompt - false - - - - False - ..\PerfView\packages\Microsoft.Diagnostics.Runtime.0.8.31-beta\lib\net40\Microsoft.Diagnostics.Runtime.dll - - - ..\perfView\SupportDlls\Microsoft.Diagnostics.Tracing.EventSource.dll - - - - - - MemoryGraph\graph.cs - - - MemoryGraph\MemoryGraph.cs - - - Utilities\EnvironmentUtilities.cs - - - Utilities\StringUtilities.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {e6eacf92-f22d-47dc-8eeb-9bbc4df1e4d5} - FastSerialization - - - {b68f4968-a7cf-41cc-ad6e-373db5e67944} - TraceEvent - - - - - REM Need to set path for EditBin to work properly. -set path=%25path%25;$(DevEnvDir) -"$(DevEnvDir)..\..\vc\bin\editbin.exe" /LARGEADDRESSAWARE "$(TargetPath)" -if NOT "%25ERRORLEVEL%25" == "0" ( - echo EDITBIN Failed - exit /b %25ERRORLEVEL%25 -) -"$(ProjectDir)..\tools\corflags.exe" /32bitPref+ "$(TargetPath)" - - - \ No newline at end of file diff --git a/src/HeapDump/HeapDumpX86.sln b/src/HeapDump/HeapDumpX86.sln deleted file mode 100644 index 248db96de..000000000 --- a/src/HeapDump/HeapDumpX86.sln +++ /dev/null @@ -1,36 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeapDumpX86", "HeapDumpX86.csproj", "{80345889-A13D-4F2D-A096-98B95C55BF45}" -EndProject -Global - GlobalSection(TeamFoundationVersionControl) = preSolution - SccNumberOfProjects = 1 - SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - SccTeamFoundationServer = http://vstfdevdiv:8080/devdiv2 - SccProjectUniqueName0 = HeapDumpX86.csproj - SccProjectName0 = . - SccAuxPath0 = http://vstfdevdiv:8080/devdiv2 - SccLocalPath0 = . - SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x64.ActiveCfg = Debug|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x64.Build.0 = Debug|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x86.ActiveCfg = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Debug|x86.Build.0 = Debug|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x64.ActiveCfg = Release|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x64.Build.0 = Release|x64 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x86.ActiveCfg = Release|x86 - {80345889-A13D-4F2D-A096-98B95C55BF45}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/HeapDump/ICorDebugGCHeap.cs b/src/HeapDump/ICorDebugGCHeap.cs index 15eac043b..7067c12e1 100644 --- a/src/HeapDump/ICorDebugGCHeap.cs +++ b/src/HeapDump/ICorDebugGCHeap.cs @@ -344,6 +344,7 @@ public override ClrRuntime Runtime } #if !ENUMERATE_SERIALIZED_EXCEPTIONS_ENABLED // TODO remove when CLRMD has been updated. + [Obsolete] public override int TypeIndexLimit { get diff --git a/src/HeapDump/Microsoft.Diagnostics.HeapDump.asmmeta b/src/HeapDump/Microsoft.Diagnostics.HeapDump.asmmeta deleted file mode 100644 index f047c1277..000000000 --- a/src/HeapDump/Microsoft.Diagnostics.HeapDump.asmmeta +++ /dev/null @@ -1,10579 +0,0 @@ -.assembly extern 'Microsoft.Diagnostics.FastSerialization' -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A) - .ver 14:0:0:0 -} -.assembly extern 'Microsoft.Diagnostics.MemoryGraph' -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A) - .ver 14:0:0:0 -} -.assembly extern 'Microsoft.Diagnostics.Runtime' -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A) - .ver 0:8:4:2 -} -.assembly extern 'mscorlib' -{ - .publickeytoken = (B7 7A 5C 56 19 34 E0 89) - .ver 4:0:0:0 -} -.assembly 'Microsoft.Diagnostics.HeapDump' -{ - .custom instance void ['mscorlib']'System'.'CLSCompliantAttribute'::.ctor(bool) = (01 00 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComVisibleAttribute'::.ctor(bool) = (01 00 00 00 00) - .permissionset reqmin = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 34 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 15 01 54 02 10 53 6B 69 70 56 65 72 69 66 69 63 61 74 69 6F 6E 01) - .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 07 D1 FA 57 C4 AE D9 F0 A3 2E 84 AA 0F AE FD 0D E9 E8 FD 6A EC 8F 87 FB 03 76 6C 83 4C 99 92 1E B2 3B E7 9A D9 D5 DC C1 DD 9A D2 36 13 21 02 90 0B 72 3C F9 80 95 7F C4 E1 77 10 8F C6 07 77 4F 29 E8 32 0E 92 EA 05 EC E4 E8 21 C0 A5 EF E8 F1 64 5C 4C 0C 93 C1 AB 99 28 5D 62 2C AA 65 2C 1D FA D6 3D 74 5D 6F 2D E5 F1 7E 5E AF 0F C4 96 3D 26 1C 8A 12 43 65 18 20 6D C0 93 34 4D 5A D2 93) - .hash algorithm 0x00008004 - .ver 14:0:0:0 -} -.class public sealed 'Action`6'<- 'T1', - 'T2', - 'T3', - 'T4', - 'T5', - 'T6'> - extends ['mscorlib']'System'.'MulticastDelegate' -{ - .method public hidebysig specialname - instance void '.ctor'(object 'object', native int 'method') - runtime - { - } - .method public virtual hidebysig newslot - instance void 'Invoke'(!0 'arg1', !1 'arg2', !2 'arg3', !3 'arg4', !4 'arg5', !5 'arg6') - runtime - { - } - .method public virtual hidebysig newslot - instance class ['mscorlib']'System'.'IAsyncResult' 'BeginInvoke'(!0 'arg1', !1 'arg2', !2 'arg3', !3 'arg4', !4 'arg5', !5 'arg6', class ['mscorlib']'System'.'AsyncCallback' 'callback', object 'object') - runtime - { - } - .method public virtual hidebysig newslot - instance void 'EndInvoke'(class ['mscorlib']'System'.'IAsyncResult' 'result') - runtime - { - } -} -.class public sealed 'Action`7'<- 'T1', - 'T2', - 'T3', - 'T4', - 'T5', - 'T6', - 'T7'> - extends ['mscorlib']'System'.'MulticastDelegate' -{ - .method public hidebysig specialname - instance void '.ctor'(object 'object', native int 'method') - runtime - { - } - .method public virtual hidebysig newslot - instance void 'Invoke'(!0 'arg1', !1 'arg2', !2 'arg3', !3 'arg4', !4 'arg5', !5 'arg6', !6 'arg7') - runtime - { - } - .method public virtual hidebysig newslot - instance class ['mscorlib']'System'.'IAsyncResult' 'BeginInvoke'(!0 'arg1', !1 'arg2', !2 'arg3', !3 'arg4', !4 'arg5', !5 'arg6', !6 'arg7', class ['mscorlib']'System'.'AsyncCallback' 'callback', object 'object') - runtime - { - } - .method public virtual hidebysig newslot - instance void 'EndInvoke'(class ['mscorlib']'System'.'IAsyncResult' 'result') - runtime - { - } -} -.class public 'DotNetHeapInfo' - extends ['mscorlib']'System'.'Object' - implements ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable' -{ - .method public hidebysig specialname - instance int32 'get_CorruptedObject'() - { - ret - } - .method public hidebysig specialname - instance int64 'get_UndumpedSegementRegion'() - { - ret - } - .method public hidebysig specialname - instance int64 'get_SizeOfAllSegments'() - { - ret - } - .method public hidebysig specialname - instance class ['mscorlib']'System.Collections.Generic'.'List`1' 'get_Segments'() - { - ret - } - .method public hidebysig - instance int32 'GenerationFor'(uint64 'obj') - { - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.ToStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Serializer' 'serializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'ToStream' - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.FromStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Deserializer' 'deserializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'FromStream' - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .property instance int32 'CorruptedObject'() - { - .get instance int32 'DotNetHeapInfo'::'get_CorruptedObject'() - } - .property instance class ['mscorlib']'System.Collections.Generic'.'List`1' 'Segments'() - { - .get instance class ['mscorlib']'System.Collections.Generic'.'List`1' 'DotNetHeapInfo'::'get_Segments'() - } - .property instance int64 'SizeOfAllSegments'() - { - .get instance int64 'DotNetHeapInfo'::'get_SizeOfAllSegments'() - } - .property instance int64 'UndumpedSegementRegion'() - { - .get instance int64 'DotNetHeapInfo'::'get_UndumpedSegementRegion'() - } -} -.class public 'GCHeapDump' - extends ['mscorlib']'System'.'Object' - implements ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable', ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializableVersion' -{ - .class nested public sequential sealed 'ProcessInfo' - extends ['mscorlib']'System'.'ValueType' - { - .field public int32 'ID' - .field public bool 'UsesDotNet' - .field public bool 'UsesJavaScript' - } - .method public hidebysig specialname - instance void '.ctor'(string 'inputFileName') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(class ['mscorlib']'System.IO'.'Stream' 'inputStream', string 'streamName') - { - ret - } - .method public hidebysig specialname - instance class ['Microsoft.Diagnostics.MemoryGraph']'Graphs'.'MemoryGraph' 'get_MemoryGraph'() - { - ret - } - .method public hidebysig specialname - instance class 'InteropInfo' 'get_InteropInfo'() - { - ret - } - .method public hidebysig specialname - instance bool 'get_Is64Bit'() - { - ret - } - .method public hidebysig specialname - instance float32 'get_AverageCountMultiplier'() - { - ret - } - .method public hidebysig specialname - instance float32 'get_AverageSizeMultiplier'() - { - ret - } - .method public hidebysig specialname - instance float32[] 'get_CountMultipliersByType'() - { - ret - } - .method public hidebysig specialname - instance class 'DotNetHeapInfo' 'get_DotNetHeapInfo'() - { - ret - } - .method public hidebysig specialname - instance class 'JSHeapInfo' 'get_JSHeapInfo'() - { - ret - } - .method public hidebysig specialname - instance string 'get_CollectionLog'() - { - ret - } - .method public hidebysig specialname - instance valuetype ['mscorlib']'System'.'DateTime' 'get_TimeCollected'() - { - ret - } - .method public hidebysig specialname - instance string 'get_MachineName'() - { - ret - } - .method public hidebysig specialname - instance string 'get_ProcessName'() - { - ret - } - .method public hidebysig specialname - instance int32 'get_ProcessID'() - { - ret - } - .method public hidebysig specialname - instance int64 'get_TotalProcessCommit'() - { - ret - } - .method public hidebysig specialname - instance int64 'get_TotalProcessWorkingSet'() - { - ret - } - .method public static hidebysig - class ['mscorlib']'System.Collections.Generic'.'Dictionary`2' 'GetProcessesWithGCHeaps'() - { - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.ToStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Serializer' 'serializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'ToStream' - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.FromStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Deserializer' 'deserializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'FromStream' - ret - } - .method private final virtual hidebysig newslot specialname - instance int32 'FastSerialization.IFastSerializableVersion.get_Version'() - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializableVersion'::'get_Version' - ret - } - .method private final virtual hidebysig newslot specialname - instance int32 'FastSerialization.IFastSerializableVersion.get_MinimumVersionCanRead'() - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializableVersion'::'get_MinimumVersionCanRead' - ret - } - .method private final virtual hidebysig newslot specialname - instance int32 'FastSerialization.IFastSerializableVersion.get_MinimumReaderVersion'() - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializableVersion'::'get_MinimumReaderVersion' - ret - } - .property instance float32 'AverageCountMultiplier'() - { - .get instance float32 'GCHeapDump'::'get_AverageCountMultiplier'() - } - .property instance float32 'AverageSizeMultiplier'() - { - .get instance float32 'GCHeapDump'::'get_AverageSizeMultiplier'() - } - .property instance string 'CollectionLog'() - { - .get instance string 'GCHeapDump'::'get_CollectionLog'() - } - .property instance float32[] 'CountMultipliersByType'() - { - .get instance float32[] 'GCHeapDump'::'get_CountMultipliersByType'() - } - .property instance class 'DotNetHeapInfo' 'DotNetHeapInfo'() - { - .get instance class 'DotNetHeapInfo' 'GCHeapDump'::'get_DotNetHeapInfo'() - } - .property instance int32 'FastSerialization.IFastSerializableVersion.MinimumReaderVersion'() - { - .get instance int32 'GCHeapDump'::'FastSerialization.IFastSerializableVersion.get_MinimumReaderVersion'() - } - .property instance int32 'FastSerialization.IFastSerializableVersion.MinimumVersionCanRead'() - { - .get instance int32 'GCHeapDump'::'FastSerialization.IFastSerializableVersion.get_MinimumVersionCanRead'() - } - .property instance int32 'FastSerialization.IFastSerializableVersion.Version'() - { - .get instance int32 'GCHeapDump'::'FastSerialization.IFastSerializableVersion.get_Version'() - } - .property instance class 'InteropInfo' 'InteropInfo'() - { - .get instance class 'InteropInfo' 'GCHeapDump'::'get_InteropInfo'() - } - .property instance bool 'Is64Bit'() - { - .get instance bool 'GCHeapDump'::'get_Is64Bit'() - } - .property instance class 'JSHeapInfo' 'JSHeapInfo'() - { - .get instance class 'JSHeapInfo' 'GCHeapDump'::'get_JSHeapInfo'() - } - .property instance string 'MachineName'() - { - .get instance string 'GCHeapDump'::'get_MachineName'() - } - .property instance class ['Microsoft.Diagnostics.MemoryGraph']'Graphs'.'MemoryGraph' 'MemoryGraph'() - { - .get instance class ['Microsoft.Diagnostics.MemoryGraph']'Graphs'.'MemoryGraph' 'GCHeapDump'::'get_MemoryGraph'() - } - .property instance int32 'ProcessID'() - { - .get instance int32 'GCHeapDump'::'get_ProcessID'() - } - .property instance string 'ProcessName'() - { - .get instance string 'GCHeapDump'::'get_ProcessName'() - } - .property instance valuetype ['mscorlib']'System'.'DateTime' 'TimeCollected'() - { - .get instance valuetype ['mscorlib']'System'.'DateTime' 'GCHeapDump'::'get_TimeCollected'() - } - .property instance int64 'TotalProcessCommit'() - { - .get instance int64 'GCHeapDump'::'get_TotalProcessCommit'() - } - .property instance int64 'TotalProcessWorkingSet'() - { - .get instance int64 'GCHeapDump'::'get_TotalProcessWorkingSet'() - } -} -.class public 'GCHeapDumpSegment' - extends ['mscorlib']'System'.'Object' - implements ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable' -{ - .method public hidebysig specialname - instance uint64 'get_Start'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_End'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_Gen0End'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_Gen1End'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_Gen2End'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_Gen3End'() - { - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.ToStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Serializer' 'serializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'ToStream' - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.FromStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Deserializer' 'deserializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'FromStream' - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .property instance uint64 'End'() - { - .get instance uint64 'GCHeapDumpSegment'::'get_End'() - } - .property instance uint64 'Gen0End'() - { - .get instance uint64 'GCHeapDumpSegment'::'get_Gen0End'() - } - .property instance uint64 'Gen1End'() - { - .get instance uint64 'GCHeapDumpSegment'::'get_Gen1End'() - } - .property instance uint64 'Gen2End'() - { - .get instance uint64 'GCHeapDumpSegment'::'get_Gen2End'() - } - .property instance uint64 'Gen3End'() - { - .get instance uint64 'GCHeapDumpSegment'::'get_Gen3End'() - } - .property instance uint64 'Start'() - { - .get instance uint64 'GCHeapDumpSegment'::'get_Start'() - } -} -.class public 'GCHeapDumper' - extends ['mscorlib']'System'.'Object' -{ - .method public hidebysig specialname - instance void '.ctor'(class ['mscorlib']'System.IO'.'TextWriter' 'log') - { - ret - } - .method public hidebysig - instance class 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata' 'DumpLiveHeap'(int32 'processID', class ['mscorlib']'System.IO'.'Stream' 'outputStream') - { - ret - } - .method public hidebysig - instance class 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata' 'DumpLiveHeap'(int32 'processID', string 'outputFileName') - { - ret - } - .method public hidebysig - instance class 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata' 'DumpHeapFromProcessDump'(string 'processDumpFile', string 'outputFileName') - { - ret - } - .method public hidebysig - instance class 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata' 'DumpHeapFromProcessDump'(string 'processDumpFile', class ['mscorlib']'System.IO'.'Stream' 'outputStream') - { - ret - } - .method public hidebysig specialname - instance int32 'get_BadObjectCount'() - { - ret - } - .method public hidebysig - instance string 'DumpAt'(class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'heap', uint64 'address') - { - ret - } - .method public virtual hidebysig newslot - instance uint64 'FetchIntPtrAt'(class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'heap', uint64 'address') - { - ret - } - .method public static hidebysig - void 'DebugWriteLine'(string 'format', object[] 'args') - { - .custom instance void ['mscorlib']'System.Diagnostics'.'ConditionalAttribute'::.ctor(string) = (01 00 05 44 45 42 55 47 00 00) - .param [2] - .custom instance void ['mscorlib']'System'.'ParamArrayAttribute'::.ctor() = (01 00 00 00) - ret - } - .field public bool 'CrossGeneration' - .field public bool 'DumpData' - .field public bool 'Freeze' - .field public int32 'GenerationToTrigger' - .field public int32 'MaxDumpCountK' - .field public int32 'MaxNodeCountK' - .field public uint64 'PromotedBytesThreshold' - .field public bool 'SaveETL' - .field public bool 'UseETW' - .property instance int32 'BadObjectCount'() - { - .get instance int32 'GCHeapDumper'::'get_BadObjectCount'() - } -} -.class public interface abstract import 'ICLRProfiling' -{ - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 42 33 34 39 41 42 45 33 2D 42 35 36 46 2D 34 36 38 39 2D 42 46 43 44 2D 37 36 42 46 33 39 44 38 38 38 45 41 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance int32 'AttachProfiler'(int32 'dwProfileeProcessID', int32 'dwMillisecondsMax', valuetype ['mscorlib']'System'.'Guid'& 'pClsidProfiler', string 'wszProfilerPath', native int 'pvClientData', int32 'cbClientData') - { - } -} -.class public 'InteropInfo' - extends ['mscorlib']'System'.'Object' - implements ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable' -{ - .class nested public 'CCWInfo' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - } - .class nested public 'ComInterfaceInfo' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - } - .class nested public 'InteropModuleInfo' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance string 'get_moduleName'() - { - ret - } - .method public static hidebysig - int32 'CompareBase'(class 'InteropInfo'/'InteropModuleInfo' 'one', class 'InteropInfo'/'InteropModuleInfo' 'two') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public uint64 'baseAddress' - .field public string 'fileName' - .field public uint32 'fileSize' - .field public int32 'loadOrder' - .field public uint32 'timeStamp' - .property instance string 'moduleName'() - { - .get instance string 'InteropInfo'/'InteropModuleInfo'::'get_moduleName'() - } - } - .class nested public 'RCWInfo' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - } - .method public hidebysig specialname - instance void '.ctor'([opt] bool 'fInitLater') - { - .param [1] = bool(false) - ret - } - .method public hidebysig specialname - instance int32 'get_currentRCWCount'() - { - ret - } - .method public hidebysig specialname - instance int32 'get_currentCCWCount'() - { - ret - } - .method public hidebysig specialname - instance int32 'get_currentInterfaceCount'() - { - ret - } - .method public hidebysig specialname - instance int32 'get_currentModuleCount'() - { - ret - } - .method public hidebysig - instance void 'AddRCW'(class 'InteropInfo'/'RCWInfo' 'rcwInfo') - { - ret - } - .method public hidebysig - instance void 'AddCCW'(class 'InteropInfo'/'CCWInfo' 'ccwInfo') - { - ret - } - .method public hidebysig - instance void 'AddComInterface'(class 'InteropInfo'/'ComInterfaceInfo' 'interfaceInfo') - { - ret - } - .method public hidebysig - instance void 'AddModule'(class 'InteropInfo'/'InteropModuleInfo' 'moduleInfo') - { - ret - } - .method public hidebysig - instance bool 'InteropInfoExists'() - { - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.ToStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Serializer' 'serializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'ToStream' - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.FromStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Deserializer' 'deserializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'FromStream' - ret - } - .property instance int32 'currentCCWCount'() - { - .get instance int32 'InteropInfo'::'get_currentCCWCount'() - } - .property instance int32 'currentInterfaceCount'() - { - .get instance int32 'InteropInfo'::'get_currentInterfaceCount'() - } - .property instance int32 'currentModuleCount'() - { - .get instance int32 'InteropInfo'::'get_currentModuleCount'() - } - .property instance int32 'currentRCWCount'() - { - .get instance int32 'InteropInfo'::'get_currentRCWCount'() - } -} -.class public 'JSHeapInfo' - extends ['mscorlib']'System'.'Object' - implements ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable' -{ - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.ToStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Serializer' 'serializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'ToStream' - ret - } - .method private final virtual hidebysig newslot - instance void 'FastSerialization.IFastSerializable.FromStream'(class ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'Deserializer' 'deserializer') - { - .override ['Microsoft.Diagnostics.FastSerialization']'FastSerialization'.'IFastSerializable'::'FromStream' - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } -} -.class public 'Silverlight' - extends ['mscorlib']'System'.'Object' -{ - .method public static hidebysig - class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' 'DebugActiveSilverlightProcess'(int32 'processId', [opt] class 'Profiler'.'DebuggerCallBacks' 'callBacks') - { - .param [2] = nullref - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } -} -.namespace 'ClrMemory' -{ - .class public 'ICorDebugAD' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrAppDomain' - { - .method public hidebysig specialname - instance void '.ctor'(string 'name') - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_Address'() - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_Id'() - { - ret - } - .method public virtual hidebysig specialname - instance string 'get_Name'() - { - ret - } - .method public virtual hidebysig specialname - instance string 'get_AppBase'() - { - ret - } - .method public virtual hidebysig specialname - instance string 'get_ConfigurationFile'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'get_Modules'() - { - ret - } - .property instance uint64 'Address'() - { - .get instance uint64 'ClrMemory'.'ICorDebugAD'::'get_Address'() - } - .property instance string 'AppBase'() - { - .get instance string 'ClrMemory'.'ICorDebugAD'::'get_AppBase'() - } - .property instance string 'ConfigurationFile'() - { - .get instance string 'ClrMemory'.'ICorDebugAD'::'get_ConfigurationFile'() - } - .property instance int32 'Id'() - { - .get instance int32 'ClrMemory'.'ICorDebugAD'::'get_Id'() - } - .property instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'Modules'() - { - .get instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'ClrMemory'.'ICorDebugAD'::'get_Modules'() - } - .property instance string 'Name'() - { - .get instance string 'ClrMemory'.'ICorDebugAD'::'get_Name'() - } - } - .class public 'ICorDebugClrModule' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrModule' - { - .method public hidebysig specialname - instance void '.ctor'(string 'fn') - { - ret - } - .method public virtual hidebysig specialname - instance string 'get_AssemblyName'() - { - ret - } - .method public virtual hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateTypes'() - { - ret - } - .method public virtual hidebysig specialname - instance string 'get_FileName'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_ImageBase'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsFile'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsDynamic'() - { - ret - } - .method public virtual hidebysig specialname - instance string 'get_Name'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_Size'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_MetadataAddress'() - { - ret - } - .method public virtual hidebysig specialname - instance object 'get_MetadataImport'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_MetadataLength'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_AssemblyId'() - { - ret - } - .method public virtual hidebysig specialname - instance valuetype ['mscorlib']'System.Diagnostics'.'DebuggableAttribute'/'DebuggingModes' 'get_DebuggingMode'() - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'GetTypeByName'(string 'name') - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'SourceLocation' 'GetSourceInformation'(class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrMethod' 'method', int32 'ilOffset') - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'SourceLocation' 'GetSourceInformation'(uint32 'mdMethodToken', int32 'ilOffset') - { - ret - } - .method public virtual hidebysig - instance bool 'IsMatchingPdb'(string 'pdbPath') - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsPdbLoaded'() - { - ret - } - .method public virtual hidebysig - instance void 'LoadPdb'(string 'path') - { - ret - } - .method public virtual hidebysig - instance string 'TryDownloadPdb'(class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ISymbolNotification' 'notification') - { - ret - } - .property instance uint64 'AssemblyId'() - { - .get instance uint64 'ClrMemory'.'ICorDebugClrModule'::'get_AssemblyId'() - } - .property instance string 'AssemblyName'() - { - .get instance string 'ClrMemory'.'ICorDebugClrModule'::'get_AssemblyName'() - } - .property instance valuetype ['mscorlib']'System.Diagnostics'.'DebuggableAttribute'/'DebuggingModes' 'DebuggingMode'() - { - .get instance valuetype ['mscorlib']'System.Diagnostics'.'DebuggableAttribute'/'DebuggingModes' 'ClrMemory'.'ICorDebugClrModule'::'get_DebuggingMode'() - } - .property instance string 'FileName'() - { - .get instance string 'ClrMemory'.'ICorDebugClrModule'::'get_FileName'() - } - .property instance uint64 'ImageBase'() - { - .get instance uint64 'ClrMemory'.'ICorDebugClrModule'::'get_ImageBase'() - } - .property instance bool 'IsDynamic'() - { - .get instance bool 'ClrMemory'.'ICorDebugClrModule'::'get_IsDynamic'() - } - .property instance bool 'IsFile'() - { - .get instance bool 'ClrMemory'.'ICorDebugClrModule'::'get_IsFile'() - } - .property instance bool 'IsPdbLoaded'() - { - .get instance bool 'ClrMemory'.'ICorDebugClrModule'::'get_IsPdbLoaded'() - } - .property instance uint64 'MetadataAddress'() - { - .get instance uint64 'ClrMemory'.'ICorDebugClrModule'::'get_MetadataAddress'() - } - .property instance object 'MetadataImport'() - { - .get instance object 'ClrMemory'.'ICorDebugClrModule'::'get_MetadataImport'() - } - .property instance uint64 'MetadataLength'() - { - .get instance uint64 'ClrMemory'.'ICorDebugClrModule'::'get_MetadataLength'() - } - .property instance string 'Name'() - { - .get instance string 'ClrMemory'.'ICorDebugClrModule'::'get_Name'() - } - .property instance uint64 'Size'() - { - .get instance uint64 'ClrMemory'.'ICorDebugClrModule'::'get_Size'() - } - } - .class public 'ICorDebugGCHeap' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' - { - .method public hidebysig specialname - instance void '.ctor'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'process') - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'GetObjectType'(uint64 'objRef') - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'GetTypeByIndex'(int32 'typeIndex') - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_TypeIndexLimit'() - { - ret - } - .method public virtual hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateRoots'() - { - ret - } - .method public virtual hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateRoots'(bool 'enumStatics') - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_CanWalkHeap'() - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrSegment' 'GetSegmentByAddress'(uint64 'objRef') - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_TotalHeapSize'() - { - ret - } - .method public virtual hidebysig - instance uint64 'GetSizeByGen'(int32 'gen') - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_PointerSize'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'get_Segments'() - { - ret - } - .method public virtual hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateObjects'() - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'GetTypeByName'(string 'name') - { - ret - } - .method public virtual hidebysig - instance bool 'ReadPointer'(uint64 'addr', [out] uint64& 'value') - { - ret - } - .field family int32 'm_lastSegmentIdx' - .field family class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrSegment'[] 'm_segments' - .property instance bool 'CanWalkHeap'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeap'::'get_CanWalkHeap'() - } - .property instance int32 'PointerSize'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeap'::'get_PointerSize'() - } - .property instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'Segments'() - { - .get instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'ClrMemory'.'ICorDebugGCHeap'::'get_Segments'() - } - .property instance uint64 'TotalHeapSize'() - { - .get instance uint64 'ClrMemory'.'ICorDebugGCHeap'::'get_TotalHeapSize'() - } - .property instance int32 'TypeIndexLimit'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeap'::'get_TypeIndexLimit'() - } - } - .class public 'ICorDebugGCHeapField' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrInstanceField' - { - .method public virtual hidebysig specialname - instance string 'get_Name'() - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_Offset'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'get_Type'() - { - ret - } - .method public virtual hidebysig - instance uint64 'GetFieldAddress'(uint64 'objRef', bool 'interior') - { - ret - } - .method public virtual hidebysig - instance object 'GetFieldValue'(uint64 'objRef', bool 'interior') - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_Size'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_HasSimpleValue'() - { - ret - } - .method public virtual hidebysig specialname - instance valuetype ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrElementType' 'get_ElementType'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsInternal'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsPrivate'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsProtected'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsPublic'() - { - ret - } - .property instance valuetype ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrElementType' 'ElementType'() - { - .get instance valuetype ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrElementType' 'ClrMemory'.'ICorDebugGCHeapField'::'get_ElementType'() - } - .property instance bool 'HasSimpleValue'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapField'::'get_HasSimpleValue'() - } - .property instance bool 'IsInternal'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapField'::'get_IsInternal'() - } - .property instance bool 'IsPrivate'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapField'::'get_IsPrivate'() - } - .property instance bool 'IsProtected'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapField'::'get_IsProtected'() - } - .property instance bool 'IsPublic'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapField'::'get_IsPublic'() - } - .property instance string 'Name'() - { - .get instance string 'ClrMemory'.'ICorDebugGCHeapField'::'get_Name'() - } - .property instance int32 'Offset'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeapField'::'get_Offset'() - } - .property instance int32 'Size'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeapField'::'get_Size'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'Type'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'ClrMemory'.'ICorDebugGCHeapField'::'get_Type'() - } - } - .class public 'ICorDebugGCHeapRoot' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrRoot' - { - .method public virtual hidebysig specialname - instance string 'get_Name'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'get_Type'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrAppDomain' 'get_AppDomain'() - { - ret - } - .method public virtual hidebysig specialname - instance valuetype ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'GCRootKind' 'get_Kind'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_Object'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_Address'() - { - ret - } - .property instance uint64 'Address'() - { - .get instance uint64 'ClrMemory'.'ICorDebugGCHeapRoot'::'get_Address'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrAppDomain' 'AppDomain'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrAppDomain' 'ClrMemory'.'ICorDebugGCHeapRoot'::'get_AppDomain'() - } - .property instance valuetype ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'GCRootKind' 'Kind'() - { - .get instance valuetype ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'GCRootKind' 'ClrMemory'.'ICorDebugGCHeapRoot'::'get_Kind'() - } - .property instance string 'Name'() - { - .get instance string 'ClrMemory'.'ICorDebugGCHeapRoot'::'get_Name'() - } - .property instance uint64 'Object'() - { - .get instance uint64 'ClrMemory'.'ICorDebugGCHeapRoot'::'get_Object'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'Type'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'ClrMemory'.'ICorDebugGCHeapRoot'::'get_Type'() - } - } - .class public 'ICorDebugGCHeapSegment' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrSegment' - { - .method public virtual hidebysig specialname - instance uint64 'get_Start'() - { - ret - } - .method public virtual hidebysig specialname - instance uint64 'get_End'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'get_Heap'() - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_ProcessorAffinity'() - { - ret - } - .method public virtual hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateObjects'() - { - ret - } - .property instance uint64 'End'() - { - .get instance uint64 'ClrMemory'.'ICorDebugGCHeapSegment'::'get_End'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'Heap'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'ClrMemory'.'ICorDebugGCHeapSegment'::'get_Heap'() - } - .property instance int32 'ProcessorAffinity'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeapSegment'::'get_ProcessorAffinity'() - } - .property instance uint64 'Start'() - { - .get instance uint64 'ClrMemory'.'ICorDebugGCHeapSegment'::'get_Start'() - } - } - .class public 'ICorDebugGCHeapType' - extends ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' - { - .method public virtual hidebysig specialname - instance string 'get_Name'() - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_Index'() - { - ret - } - .method public virtual hidebysig - instance uint64 'GetSize'(uint64 'objRef') - { - ret - } - .method public virtual hidebysig - instance void 'EnumerateRefsOfObject'(uint64 'objRef', class ['mscorlib']'System'.'Action`2' 'action') - { - ret - } - .method public virtual hidebysig - instance void 'EnumerateRefsOfObjectCarefully'(uint64 'objRef', class ['mscorlib']'System'.'Action`2' 'action') - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'get_Heap'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrModule' 'get_Module'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_HasSimpleValue'() - { - ret - } - .method public virtual hidebysig - instance object 'GetValue'(uint64 'address') - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsArray'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'get_ArrayComponentType'() - { - ret - } - .method public virtual hidebysig - instance int32 'GetArrayLength'(uint64 'objRef') - { - ret - } - .method public virtual hidebysig - instance uint64 'GetArrayElementAddress'(uint64 'objRef', int32 'index') - { - ret - } - .method public virtual hidebysig - instance object 'GetArrayElementValue'(uint64 'objRef', int32 'index') - { - ret - } - .method public virtual hidebysig - instance bool 'GetFieldForOffset'(int32 'fieldOffset', bool 'inner', [out] class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrInstanceField'& 'childField', [out] int32& 'childFieldOffset') - { - ret - } - .method public virtual hidebysig specialname - instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'get_Fields'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'get_BaseType'() - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrInstanceField' 'GetFieldByName'(string 'name') - { - ret - } - .method public hidebysig specialname - instance valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'get_TypeKind'() - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_ElementSize'() - { - ret - } - .method public virtual hidebysig specialname - instance int32 'get_BaseSize'() - { - ret - } - .method public virtual hidebysig specialname - instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'get_Interfaces'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsAbstract'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsFinalizable'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsInterface'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsInternal'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsPrivate'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsProtected'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsPublic'() - { - ret - } - .method public virtual hidebysig specialname - instance bool 'get_IsSealed'() - { - ret - } - .method public virtual hidebysig - instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrStaticField' 'GetStaticFieldByName'(string 'name') - { - ret - } - .method public virtual hidebysig specialname - instance uint32 'get_MetadataToken'() - { - ret - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'ArrayComponentType'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'ClrMemory'.'ICorDebugGCHeapType'::'get_ArrayComponentType'() - } - .property instance int32 'BaseSize'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeapType'::'get_BaseSize'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'BaseType'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrType' 'ClrMemory'.'ICorDebugGCHeapType'::'get_BaseType'() - } - .property instance int32 'ElementSize'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeapType'::'get_ElementSize'() - } - .property instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'Fields'() - { - .get instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'ClrMemory'.'ICorDebugGCHeapType'::'get_Fields'() - } - .property instance bool 'HasSimpleValue'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_HasSimpleValue'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'Heap'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrHeap' 'ClrMemory'.'ICorDebugGCHeapType'::'get_Heap'() - } - .property instance int32 'Index'() - { - .get instance int32 'ClrMemory'.'ICorDebugGCHeapType'::'get_Index'() - } - .property instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'Interfaces'() - { - .get instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'ClrMemory'.'ICorDebugGCHeapType'::'get_Interfaces'() - } - .property instance bool 'IsAbstract'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsAbstract'() - } - .property instance bool 'IsArray'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsArray'() - } - .property instance bool 'IsFinalizable'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsFinalizable'() - } - .property instance bool 'IsInterface'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsInterface'() - } - .property instance bool 'IsInternal'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsInternal'() - } - .property instance bool 'IsPrivate'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsPrivate'() - } - .property instance bool 'IsProtected'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsProtected'() - } - .property instance bool 'IsPublic'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsPublic'() - } - .property instance bool 'IsSealed'() - { - .get instance bool 'ClrMemory'.'ICorDebugGCHeapType'::'get_IsSealed'() - } - .property instance uint32 'MetadataToken'() - { - .get instance uint32 'ClrMemory'.'ICorDebugGCHeapType'::'get_MetadataToken'() - } - .property instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrModule' 'Module'() - { - .get instance class ['Microsoft.Diagnostics.Runtime']'Microsoft.Diagnostics.Runtime'.'ClrModule' 'ClrMemory'.'ICorDebugGCHeapType'::'get_Module'() - } - .property instance string 'Name'() - { - .get instance string 'ClrMemory'.'ICorDebugGCHeapType'::'get_Name'() - } - .property instance valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'TypeKind'() - { - .get instance valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ClrMemory'.'ICorDebugGCHeapType'::'get_TypeKind'() - } - } -} -.namespace 'Microsoft.Diagnostics.HeapDump' -{ - .class public 'CollectionMetadata' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance valuetype 'Microsoft.Diagnostics.HeapDump'.'TargetSource' 'get_Source'() - { - ret - } - .method public hidebysig specialname - instance bool 'get_Is64BitSource'() - { - ret - } - .method public hidebysig specialname - instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'get_ConfigurationDirectories'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .property instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'ConfigurationDirectories'() - { - .get instance class ['mscorlib']'System.Collections.Generic'.'IList`1' 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata'::'get_ConfigurationDirectories'() - } - .property instance bool 'Is64BitSource'() - { - .get instance bool 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata'::'get_Is64BitSource'() - } - .property instance valuetype 'Microsoft.Diagnostics.HeapDump'.'TargetSource' 'Source'() - { - .get instance valuetype 'Microsoft.Diagnostics.HeapDump'.'TargetSource' 'Microsoft.Diagnostics.HeapDump'.'CollectionMetadata'::'get_Source'() - } - } - .class public sealed 'HR' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'CouldNotAccessDac' = int32(0x81220006) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'CouldNotFindProcessId' = int32(0x81220002) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'NoDotNetRuntimeFound' = int32(0x81220005) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'NoHeapFound' = int32(0x81220001) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'Opening32BitDumpIn64BitProcess' = int32(0x81220003) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'Opening64BitDumpIn32BitProcess' = int32(0x81220004) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'UnknownError' = int32(0x81220000) - } - .class public 'HeapDumpException' - extends ['mscorlib']'System'.'ApplicationException' - { - .method public hidebysig specialname - instance void '.ctor'(string 'message', valuetype 'Microsoft.Diagnostics.HeapDump'.'HR' 'hr') - { - ret - } - } - .class public sealed 'TargetSource' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'TargetSource' 'LiveProcess' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Diagnostics.HeapDump'.'TargetSource' 'MiniDumpFile' = int32(0x00000001) - } -} -.namespace 'Microsoft.Samples.Debugging.CorDebug' -{ - .class public sealed 'HResult' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_E_FIRST' = int32(0x80040170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_E_LAST' = int32(0x8004017F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_E_NOCACHE_UPDATED' = int32(0x80040170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_S_FIRST' = int32(0x00040170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_S_FORMATETC_NOTSUPPORTED' = int32(0x00040170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_S_LAST' = int32(0x0004017F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_S_SAMECACHE' = int32(0x00040171) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CACHE_S_SOMECACHES_NOTUPDATED' = int32(0x00040172) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CAT_E_CATIDNOEXIST' = int32(0x80040160) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CAT_E_FIRST' = int32(0x80040160) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CAT_E_LAST' = int32(0x80040161) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CAT_E_NODESCRIPTION' = int32(0x80040161) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CEE_E_CVTRES_NOT_FOUND' = int32(0x80131001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CEE_E_ENTRYPOINT' = int32(0x80131000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ALIGNMENT_FAULT' = int32(0x80094010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ARCHIVED_KEY_REQUIRED' = int32(0x80094804) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ARCHIVED_KEY_UNEXPECTED' = int32(0x80094810) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE' = int32(0x8009400E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_BAD_RENEWAL_SUBJECT' = int32(0x80094806) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_BAD_REQUESTSTATUS' = int32(0x80094003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_BAD_REQUESTSUBJECT' = int32(0x80094001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL' = int32(0x8009400C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_BAD_TEMPLATE_VERSION' = int32(0x80094807) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_CERT_TYPE_OVERLAP' = int32(0x80094814) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE' = int32(0x80094013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ENCODING_LENGTH' = int32(0x80094007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ENROLL_DENIED' = int32(0x80094011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_INVALID_CA_CERTIFICATE' = int32(0x80094005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ISSUANCE_POLICY_REQUIRED' = int32(0x8009480C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED' = int32(0x8009400A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_KEY_LENGTH' = int32(0x80094811) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_NO_CAADMIN_DEFINED' = int32(0x8009400D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_NO_CERT_TYPE' = int32(0x80094801) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_NO_DB_SESSIONS' = int32(0x8009400F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_NO_REQUEST' = int32(0x80094002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_NO_VALID_KRA' = int32(0x8009400B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_PROPERTY_EMPTY' = int32(0x80094004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_RESTRICTEDOFFICER' = int32(0x80094009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_ROLECONFLICT' = int32(0x80094008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SERVER_SUSPENDED' = int32(0x80094006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SIGNATURE_COUNT' = int32(0x8009480A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SIGNATURE_POLICY_REQUIRED' = int32(0x80094809) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SIGNATURE_REJECTED' = int32(0x8009480B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SMIME_REQUIRED' = int32(0x80094805) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED' = int32(0x80094803) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED' = int32(0x8009480E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SUBJECT_DNS_REQUIRED' = int32(0x8009480F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SUBJECT_EMAIL_REQUIRED' = int32(0x80094812) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_SUBJECT_UPN_REQUIRED' = int32(0x8009480D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_TEMPLATE_CONFLICT' = int32(0x80094802) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_TEMPLATE_DENIED' = int32(0x80094012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_TEMPLATE_POLICY_REQUIRED' = int32(0x80094808) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_UNKNOWN_CERT_TYPE' = int32(0x80094813) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERTSRV_E_UNSUPPORTED_CERT_TYPE' = int32(0x80094800) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_CHAINING' = int32(0x800B010A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_CN_NO_MATCH' = int32(0x800B010F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_CRITICAL' = int32(0x800B0105) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_EXPIRED' = int32(0x800B0101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_INVALID_NAME' = int32(0x800B0114) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_INVALID_POLICY' = int32(0x800B0113) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_ISSUERCHAINING' = int32(0x800B0107) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_MALFORMED' = int32(0x800B0108) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_PATHLENCONST' = int32(0x800B0104) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_PURPOSE' = int32(0x800B0106) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_REVOCATION_FAILURE' = int32(0x800B010E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_REVOKED' = int32(0x800B010C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_ROLE' = int32(0x800B0103) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_UNTRUSTEDCA' = int32(0x800B0112) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_UNTRUSTEDROOT' = int32(0x800B0109) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_UNTRUSTEDTESTROOT' = int32(0x800B010D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_VALIDITYPERIODNESTING' = int32(0x800B0102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CERT_E_WRONG_USAGE' = int32(0x800B0110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASSFACTORY_E_FIRST' = int32(0x80040110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASSFACTORY_E_LAST' = int32(0x8004011F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASSFACTORY_S_FIRST' = int32(0x00040110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASSFACTORY_S_LAST' = int32(0x0004011F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASS_E_CLASSNOTAVAILABLE' = int32(0x80040111) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASS_E_NOAGGREGATION' = int32(0x80040110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLASS_E_NOTLICENSED' = int32(0x80040112) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_BADUPDATEMODE' = int32(0x80131110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_COLUMN_OVERFLOW' = int32(0x80131140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_COLUMN_PKNONULLS' = int32(0x80131143) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_COLUMN_READONLY' = int32(0x80131141) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_COLUMN_SPECIALCOL' = int32(0x80131142) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_FILE_BADREAD' = int32(0x80131100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_FILE_BADWRITE' = int32(0x80131101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_FILE_CORRUPT' = int32(0x8013110E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_FILE_OLDVER' = int32(0x80131107) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_FILE_READONLY' = int32(0x80131103) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_INCOMPATIBLE' = int32(0x8013110D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_INDEX_BADTYPE' = int32(0x80131123) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_INDEX_DUPLICATE' = int32(0x80131122) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_INDEX_NONULLKEYS' = int32(0x80131121) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_INDEX_NOTFOUND' = int32(0x80131124) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_INTERNALERROR' = int32(0x80131FFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_NAME_ERROR' = int32(0x80131105) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_NO_DATA' = int32(0x8013110B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_OBJECT_COLNOTFOUND' = int32(0x80131152) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_OBJECT_NOTFOUND' = int32(0x80131151) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_READONLY' = int32(0x8013110C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RECORD_DELETED' = int32(0x80131134) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RECORD_DUPLICATE' = int32(0x80131132) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RECORD_NOTFOUND' = int32(0x80131130) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RECORD_OUTOFORDER' = int32(0x80131135) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RECORD_OVERFLOW' = int32(0x80131131) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RECORD_PKREQUIRED' = int32(0x80131133) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_RELOCATED' = int32(0x80131108) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_SCHEMA_VERNOTFOUND' = int32(0x8013110F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_SMDUPLICATE' = int32(0x8013110A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_TABLE_CANTDROP' = int32(0x80131150) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_TOO_BIG' = int32(0x80131154) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_TRUNCATION' = int32(0x80131106) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_E_VECTOR_BADINDEX' = int32(0x80131153) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_S_INDEX_TABLESCANREQUIRED' = int32(0x00131125) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_S_NULL' = int32(0x00131109) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLDB_S_TRUNCATION' = int32(0x00131106) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIENTSITE_E_FIRST' = int32(0x80040190) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIENTSITE_E_LAST' = int32(0x8004019F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIENTSITE_S_FIRST' = int32(0x00040190) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIENTSITE_S_LAST' = int32(0x0004019F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_BAD_DATA' = int32(0x800401D3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_CANT_CLOSE' = int32(0x800401D4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_CANT_EMPTY' = int32(0x800401D1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_CANT_OPEN' = int32(0x800401D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_CANT_SET' = int32(0x800401D2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_FIRST' = int32(0x800401D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_E_LAST' = int32(0x800401DF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_S_FIRST' = int32(0x000401D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLIPBRD_S_LAST' = int32(0x000401DF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLR_E_SHIM_INSTALLCOMP' = int32(0x80131703) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLR_E_SHIM_INSTALLROOT' = int32(0x80131702) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLR_E_SHIM_RUNTIMEEXPORT' = int32(0x80131701) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CLR_E_SHIM_RUNTIMELOAD' = int32(0x80131700) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_ALREADYINSTALLED' = int32(0x80110404) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_AMBIGUOUS_APPLICATION_NAME' = int32(0x8011045C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_AMBIGUOUS_PARTITION_NAME' = int32(0x8011045D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APPDIRNOTFOUND' = int32(0x8011041F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APPLICATIONEXISTS' = int32(0x8011040B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APPLID_MATCHES_CLSID' = int32(0x80110446) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APP_FILE_READFAIL' = int32(0x80110408) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APP_FILE_VERSION' = int32(0x80110409) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APP_FILE_WRITEFAIL' = int32(0x80110407) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_APP_NOT_RUNNING' = int32(0x8011080A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_AUTHENTICATIONLEVEL' = int32(0x80110413) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_BADPATH' = int32(0x8011040A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_BADREGISTRYLIBID' = int32(0x8011041E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_BADREGISTRYPROGID' = int32(0x80110412) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET' = int32(0x8011081F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_BASE_PARTITION_ONLY' = int32(0x80110450) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CANNOT_ALIAS_EVENTCLASS' = int32(0x80110820) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CANTCOPYFILE' = int32(0x8011040D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CANTMAKEINPROCSERVICE' = int32(0x80110814) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CANTRECYCLELIBRARYAPPS' = int32(0x8011080F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CANTRECYCLESERVICEAPPS' = int32(0x80110811) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT' = int32(0x8011044D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY' = int32(0x8011044A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAN_NOT_EXPORT_SYS_APP' = int32(0x8011044C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAN_NOT_START_APP' = int32(0x8011044B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_BITNESSMISMATCH' = int32(0x80110482) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME' = int32(0x80110457) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED' = int32(0x8011045B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_INVALID_PARTITION_NAME' = int32(0x80110458) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_PARTITION_IN_USE' = int32(0x80110459) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED' = int32(0x80110485) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_SERVERFAULT' = int32(0x80110486) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_UNACCEPTABLEBITNESS' = int32(0x80110483) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CAT_WRONGAPPBITNESS' = int32(0x80110484) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_CLSIDORIIDMISMATCH' = int32(0x80110418) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_BADTLB' = int32(0x80110428) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_CLASSNOTAVAIL' = int32(0x80110427) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_DOESNOTEXIST' = int32(0x80110424) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_GETCLASSOBJ' = int32(0x80110426) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_LOADDLLFAIL' = int32(0x80110425) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_NOREGISTRAR' = int32(0x80110434) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPFILE_NOTINSTALLABLE' = int32(0x80110429) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMPONENTEXISTS' = int32(0x80110439) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMP_MOVE_BAD_DEST' = int32(0x8011042E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMP_MOVE_DEST' = int32(0x8011081D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMP_MOVE_LOCKED' = int32(0x8011042D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMP_MOVE_PRIVATE' = int32(0x8011081E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COMP_MOVE_SOURCE' = int32(0x8011081C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_COREQCOMPINSTALLED' = int32(0x80110435) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET' = int32(0x80110816) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_DLLLOADFAILED' = int32(0x8011041D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_DLLREGISTERSERVER' = int32(0x8011041A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER' = int32(0x8011044E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES' = int32(0x8011045A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_INVALIDUSERIDS' = int32(0x80110410) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_INVALID_PARTITION' = int32(0x8011080B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_KEYMISSING' = int32(0x80110403) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT' = int32(0x8011081A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS' = int32(0x8011081B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE' = int32(0x8011044F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_MIG_SCHEMANOTFOUND' = int32(0x80110481) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_MIG_VERSIONNOTSUPPORTED' = int32(0x80110480) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_NOREGISTRYCLSID' = int32(0x80110411) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_NOSERVERSHARE' = int32(0x8011041B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_NOTCHANGEABLE' = int32(0x8011042A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_NOTDELETEABLE' = int32(0x8011042B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_NOTINREGISTRY' = int32(0x8011043E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_NOUSER' = int32(0x8011040F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_OBJECTERRORS' = int32(0x80110401) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_OBJECTEXISTS' = int32(0x80110438) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_OBJECTINVALID' = int32(0x80110402) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_OBJECTNOTPOOLABLE' = int32(0x8011043F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_OBJECT_DOES_NOT_EXIST' = int32(0x80110809) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_OBJECT_PARENT_MISSING' = int32(0x80110808) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PARTITIONS_DISABLED' = int32(0x80110824) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PARTITION_ACCESSDENIED' = int32(0x80110818) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PARTITION_MSI_ONLY' = int32(0x80110819) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED' = int32(0x80110813) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PRIVATE_ACCESSDENIED' = int32(0x80110821) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PROCESSALREADYRECYCLED' = int32(0x80110812) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PROGIDINUSEBYCLSID' = int32(0x80110815) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PROPERTYSAVEFAILED' = int32(0x80110437) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_PROPERTY_OVERFLOW' = int32(0x8011043C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED' = int32(0x80110817) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGDB_ALREADYRUNNING' = int32(0x80110475) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGDB_NOTINITIALIZED' = int32(0x80110472) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGDB_NOTOPEN' = int32(0x80110473) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGDB_SYSTEMERR' = int32(0x80110474) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGFILE_CORRUPT' = int32(0x8011043B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGISTERTLB' = int32(0x80110430) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGISTRARFAILED' = int32(0x80110423) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REGISTRY_ACCESSDENIED' = int32(0x80110823) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REMOTEINTERFACE' = int32(0x80110419) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM' = int32(0x80110449) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_ROLEEXISTS' = int32(0x8011040C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_ROLE_DOES_NOT_EXIST' = int32(0x80110447) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_SAFERINVALID' = int32(0x80110822) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_SERVICENOTINSTALLED' = int32(0x80110436) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_SESSION' = int32(0x8011042C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_START_APP_DISABLED' = int32(0x80110451) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_START_APP_NEEDS_COMPONENTS' = int32(0x80110448) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE' = int32(0x8011080D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_SYSTEMAPP' = int32(0x80110433) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_USERPASSWDNOTVALID' = int32(0x80110414) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMADMIN_E_USER_IN_SET' = int32(0x8011080E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_APPLICATION_NOT_QUEUED' = int32(0x80110600) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_BAD_MESSAGE' = int32(0x80110604) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_NO_IPERSISTSTREAM' = int32(0x80110603) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_NO_QUEUEABLE_INTERFACES' = int32(0x80110601) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE' = int32(0x80110602) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_UNAUTHENTICATED' = int32(0x80110605) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COMQC_E_UNTRUSTED_ENQUEUER' = int32(0x80110606) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_ABORTED' = int32(0x8004E002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_ABORTING' = int32(0x8004E003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_FIRST' = int32(0x8004E000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_LAST' = int32(0x8004E02F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_NOCONTEXT' = int32(0x8004E004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_NOJIT' = int32(0x8004E026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_NOTRANSACTION' = int32(0x8004E027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_OLDREF' = int32(0x8004E007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_ROLENOTFOUND' = int32(0x8004E00C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_SYNCH_TIMEOUT' = int32(0x8004E006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_TMNOTAVAILABLE' = int32(0x8004E00F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_E_WOULD_DEADLOCK' = int32(0x8004E005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_S_FIRST' = int32(0x0004E000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONTEXT_S_LAST' = int32(0x0004E02F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_FIRST' = int32(0x800401C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_LAST' = int32(0x800401CF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_OLESTREAM_BITMAP_TO_DIB' = int32(0x800401C3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_OLESTREAM_FMT' = int32(0x800401C2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_OLESTREAM_GET' = int32(0x800401C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_OLESTREAM_PUT' = int32(0x800401C1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_STG_DIB_TO_BITMAP' = int32(0x800401C6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_STG_FMT' = int32(0x800401C4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_E_STG_NO_STD_STREAM' = int32(0x800401C5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_S_FIRST' = int32(0x000401C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_S_LAST' = int32(0x000401CF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CONVERT10_S_NO_PRESENTATION' = int32(0x000401C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_BAD_REFERENCE_VALUE' = int32(0x80131305) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_BAD_THREAD_STATE' = int32(0x8013132D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANNOT_BE_ON_ATTACH' = int32(0x80131C13) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANNOT_DEBUG_FIBER_PROCESS' = int32(0x80131C16) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANNOT_RESOLVE_ASSEMBLY' = int32(0x80131C11) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_CALL_ON_THIS_THREAD' = int32(0x80131C09) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_CHANGE_JIT_SETTING_FOR_ZAP_MODULE' = int32(0x8013131D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_INTEROP_STEP_OUT' = int32(0x80131C20) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SETIP_INTO_OR_OUT_OF_FILTER' = int32(0x8013131C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SET_IP_INTO_CATCH' = int32(0x80131310) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SET_IP_INTO_FINALLY' = int32(0x8013130E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SET_IP_OUT_OF_CATCH_ON_WIN64' = int32(0x8013131F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY' = int32(0x8013130F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SET_IP_OUT_OF_FINALLY_ON_WIN64' = int32(0x8013131E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_SET_TO_JMC' = int32(0x80131323) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CANT_UNWIND_ABOVE_CALLBACK' = int32(0x80131C03) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CLASS_NOT_LOADED' = int32(0x80131303) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_CODE_NOT_AVAILABLE' = int32(0x80131309) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_DEBUGGER_ALREADY_ATTACHED' = int32(0x8013132E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_DEBUGGING_NOT_POSSIBLE' = int32(0x80131346) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_DETACH_FAILED_OUTSTANDING_BREAKPOINTS' = int32(0x80131C21) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_DETACH_FAILED_OUTSTANDING_EVALS' = int32(0x80131C18) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_DETACH_FAILED_OUTSTANDING_STEPPERS' = int32(0x80131C19) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_BAD_METHOD_INFO' = int32(0x8013133E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_CANT_ADD_FIELD_TO_VALUE_OR_LAYOUT_CLASS' = int32(0x80131338) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_CANT_ADD_NON_PRIVATE_MEMBER' = int32(0x8013133A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_CANT_CHANGE_FIELD' = int32(0x80131339) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_CANT_CHANGE_SUPERCLASS' = int32(0x80131344) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_EDIT_NOT_SUPPORTED' = int32(0x80131C0E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_EH_MAX_NESTING_LEVEL_CANT_INCREASE' = int32(0x80131331) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_HANGING_FIELD' = int32(0x80131342) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_INFOLESS_METHOD' = int32(0x80131C0A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_INTERNAL_ERROR' = int32(0x80131341) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_IN_FUNCLET' = int32(0x80131C0C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_JIT_CANT_UPDATE' = int32(0x8013133F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_LOCALLOC' = int32(0x80131C0D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_METHOD_NO_LOCAL_SIG' = int32(0x80131337) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_METHOD_SIG_CHANGED' = int32(0x80131336) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_MISSING_CLASS' = int32(0x80131340) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_MODULE_NOT_ENC_ENABLED' = int32(0x80131332) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_NESTED_HANLDERS' = int32(0x80131C0B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ENC_ZAPPED_WITHOUT_ENC' = int32(0x8013133D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FAIL_TO_UNWIND_FRAME' = int32(0x80131325) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FEABORT_DELAYED_UNTIL_THREAD_RESUMED' = int32(0x80131C0F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FIELD_NOT_AVAILABLE' = int32(0x80131306) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FIELD_NOT_INSTANCE' = int32(0x8013133C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FIELD_NOT_STATIC' = int32(0x8013133B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FUNCTION_NOT_IL' = int32(0x8013130A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FUNC_EVAL_BAD_START_POINT' = int32(0x80131313) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_FUNC_EVAL_NOT_COMPLETE' = int32(0x80131315) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_HANDLE_HAS_BEEN_DISPOSED' = int32(0x80131C01) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_HELPER_THREAD_DEAD' = int32(0x80131349) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ILLEGAL_AT_GC_UNSAFE_POINT' = int32(0x80131C23) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ILLEGAL_IN_NATIVE_CODE' = int32(0x80131C25) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ILLEGAL_IN_OPTIMIZED_CODE' = int32(0x80131C26) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ILLEGAL_IN_PROLOG' = int32(0x80131C24) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ILLEGAL_IN_STACK_OVERFLOW' = int32(0x80131C22) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_ILLEGAL_SHUTDOWN_ORDER' = int32(0x80131C15) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_IL_VAR_NOT_AVAILABLE' = int32(0x80131304) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_INCOMPATIBLE_PROTOCOL' = int32(0x8013134B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_INPROC_NOT_IMPL' = int32(0x80131318) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_INTERCEPT_FRAME_ALREADY_SET' = int32(0x80131C04) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_INTERFACE_INHERITANCE_CANT_CHANGE' = int32(0x8013134A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_INTEROP_NOT_SUPPORTED' = int32(0x8013134D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_INVALID_OBJECT' = int32(0x80131314) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_KERNEL_DEBUGGER_ENABLED' = int32(0x80131347) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_KERNEL_DEBUGGER_PRESENT' = int32(0x80131348) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_LIBRARY_PROVIDER_ERROR' = int32(0x80131C43) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MISSING_DATA_TARGET_INTERFACE' = int32(0x80131C45) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MISSING_METADATA' = int32(0x80131C35) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MODULE_LOADED_FROM_DISK' = int32(0x80131C3A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MODULE_NOT_LOADED' = int32(0x80131343) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MUST_BE_INTEROP_DEBUGGING' = int32(0x80131C06) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MUST_BE_IN_CREATE_PROCESS' = int32(0x80131C17) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_MUST_BE_IN_LOAD_MODULE' = int32(0x80131C12) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NATIVE_PATCH_ALREADY_AT_ADDR' = int32(0x80131C07) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NGEN_NOT_SUPPORTED' = int32(0x80131C14) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NONCONTINUABLE_EXCEPTION' = int32(0x80131308) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NONINTERCEPTABLE_EXCEPTION' = int32(0x80131C02) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NON_MATCHING_CONTEXT' = int32(0x80131327) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NON_NATIVE_FRAME' = int32(0x80131307) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NOTREADY' = int32(0x80131C10) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NOT_CHILD_FRAME' = int32(0x80131326) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NOT_CLR' = int32(0x80131C44) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NO_NATIVE_PATCH_AT_ADDR' = int32(0x80131C05) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_NO_REMAP_BREAKPIONT' = int32(0x8013134E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_OBJECT_IS_NOT_COPYABLE_VALUE_CLASS' = int32(0x8013131B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_OBJECT_NEUTERED' = int32(0x8013134F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_PAST_END_OF_STACK' = int32(0x80131328) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_PROCESS_DETACHED' = int32(0x80131335) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_PROCESS_NOT_SYNCHRONIZED' = int32(0x80131302) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_PROCESS_TERMINATED' = int32(0x80131301) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_READVIRTUAL_FAILURE' = int32(0x80131C49) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_REMOTE_CONNECTION_CONN_RESET' = int32(0x80131320) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_REMOTE_CONNECTION_FATAL_ERROR' = int32(0x80131322) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_REMOTE_CONNECTION_KEEP_ALIVE' = int32(0x80131321) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_SET_IP_IMPOSSIBLE' = int32(0x80131312) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_SET_IP_NOT_ALLOWED_ON_EXCEPTION' = int32(0x80131333) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_SET_IP_NOT_ALLOWED_ON_NONLEAF_FRAME' = int32(0x80131311) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_SET_VALUE_NOT_ALLOWED_ON_NONLEAF_FRAME' = int32(0x80131330) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_STATIC_VAR_NOT_AVAILABLE' = int32(0x8013131A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_SUPERFLOUS_CONTINUE' = int32(0x8013132F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_SYMBOLS_NOT_AVAILABLE' = int32(0x80131C3B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_THREAD_NOT_SCHEDULED' = int32(0x80131C00) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_TIMEOUT' = int32(0x80131C08) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_TOO_MANY_PROCESSES' = int32(0x8013134C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_UNABLE_TO_SET_BREAKPOINT' = int32(0x80131345) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_UNRECOVERABLE_ERROR' = int32(0x80131300) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_UNSUPPORTED_DEBUGGING_MODEL' = int32(0x80131C46) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_UNSUPPORTED_FORWARD_COMPAT' = int32(0x80131C47) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_UNSUPPORTED_VERSION_STRUCT' = int32(0x80131C48) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_VALUE_POINTS_TO_FUNCTION' = int32(0x80131C4A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_E_VARIABLE_IS_ACTUALLY_LITERAL' = int32(0x80131334) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_AT_END_OF_STACK' = int32(0x00131324) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_BAD_END_SEQUENCE_POINT' = int32(0x0013130C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_BAD_START_SEQUENCE_POINT' = int32(0x0013130B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_FUNC_EVAL_ABORTED' = int32(0x00131319) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_FUNC_EVAL_HAS_NO_RESULT' = int32(0x00131316) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_INSUFFICIENT_INFO_FOR_SET_IP' = int32(0x0013130D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_NOT_ALL_BITS_SET' = int32(0x00131C13) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORDBG_S_VALUE_POINTS_TO_VOID' = int32(0x00131317) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_CALL_ONLY_FROM_INIT' = int32(0x80131356) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_CANNOT_UPDATE_METHOD' = int32(0x80131353) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_DATAINCOMPLETE' = int32(0x80131351) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_FUNCTION_IS_PARAMETERIZED' = int32(0x8013135D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_FUNCTION_NOT_COMPILED' = int32(0x80131350) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_FUNCTION_NOT_IL' = int32(0x80131354) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_INPROC_ALREADY_BEGUN' = int32(0x80131359) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_INPROC_NOT_AVAILABLE' = int32(0x8013135A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_INPROC_NOT_ENABLED' = int32(0x80131357) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_JITMAPS_NOT_ENABLED' = int32(0x80131358) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_NOT_MANAGED_THREAD' = int32(0x80131355) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_NOT_REJITABLE_METHODS' = int32(0x80131352) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_NOT_YET_AVAILABLE' = int32(0x8013135B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORPROF_E_TYPE_IS_PARAMETERIZED' = int32(0x8013135C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_ABSTRACT' = int32(0x80131449) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_ASSEMBLY_LOAD_FAILED' = int32(0x80131445) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_ASSEMBLY_LOAD_FAILED_EX' = int32(0x80131446) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_ACTION' = int32(0x80131442) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_ACTION_ASM' = int32(0x8013143D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_ACTION_OTHER' = int32(0x8013143E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_ATTRIBUTE' = int32(0x8013143A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_NONCAS' = int32(0x80131444) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_PARENT' = int32(0x8013143F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_BAD_VERSION' = int32(0x80131441) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_EXCEPTION' = int32(0x8013144E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_EXCEPTION_HR' = int32(0x8013144F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_FAILED_TO_CREATE_PERM' = int32(0x8013143C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_MISSING_CONSTRUCTOR' = int32(0x8013143B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_NO_FIELD' = int32(0x8013144C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_NO_PROPERTY' = int32(0x8013144D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_NO_SELF_REF' = int32(0x80131443) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_TRUNCATED' = int32(0x80131440) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_TYPE_LOAD_FAILED' = int32(0x80131447) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_TYPE_LOAD_FAILED_EX' = int32(0x80131448) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_UNSUPPORTED_ENUM_TYPE' = int32(0x8013144B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSECATTR_E_UNSUPPORTED_TYPE' = int32(0x8013144A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_CONTAINER_NOT_FOUND' = int32(0x8013141C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_CRYPTO' = int32(0x80131430) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_CRYPTOAPI_CALL_FAILED' = int32(0x80131413) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_CRYPTO_UNEX_OPER' = int32(0x80131431) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_DECODE_SET' = int32(0x80131410) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_ENCODE_SET' = int32(0x80131411) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_INVALID_ATTR' = int32(0x80131415) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_INVALID_IMAGE_FORMAT' = int32(0x8013141D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_INVALID_PUBLICKEY' = int32(0x8013141E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_INVALID_STRONGNAME' = int32(0x8013141A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_MIN_GRANT_FAIL' = int32(0x80131417) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_MISSING_STRONGNAME' = int32(0x8013141B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_NO_EXEC_PERM' = int32(0x80131418) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_NO_SUITABLE_CSP' = int32(0x80131414) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_POLICY_EXCEPTION' = int32(0x80131416) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_SIGNATURE_MISMATCH' = int32(0x80131420) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_UNSUPPORTED_FORMAT' = int32(0x80131412) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CORSEC_E_XMLSYNTAX' = int32(0x80131419) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ABANDONEDMUTEX' = int32(0x8013152D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_AMBIGUOUSMATCH' = int32(0x8000211D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_APPDOMAINUNLOADED' = int32(0x80131014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_APPLICATION' = int32(0x80131600) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ARGUMENT' = int32(0x80070057) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ARGUMENTOUTOFRANGE' = int32(0x80131502) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ARITHMETIC' = int32(0x80070216) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ARRAYTYPEMISMATCH' = int32(0x80131503) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ASSEMBLYEXPECTED' = int32(0x80131018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_BADIMAGEFORMAT' = int32(0x8007000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_CANNOTUNLOADAPPDOMAIN' = int32(0x80131015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_COMOBJECTINUSE' = int32(0x8013152A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_CONTEXTMARSHAL' = int32(0x80131504) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_CUSTOMATTRIBUTEFORMAT' = int32(0x80131605) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_DATAMISALIGNED' = int32(0x80131541) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_DEVICESNOTSUPPORTED' = int32(0x80131540) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_DIVIDEBYZERO' = int32(0x80020012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_DLLNOTFOUND' = int32(0x80131524) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_DUPLICATEWAITOBJECT' = int32(0x80131529) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_ENTRYPOINTNOTFOUND' = int32(0x80131523) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_EXCEPTION' = int32(0x80131500) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_EXECUTIONENGINE' = int32(0x80131506) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_FAILFAST' = int32(0x80131623) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_FIELDACCESS' = int32(0x80131507) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_FILELOAD' = int32(0x80131621) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_FIXUPSINEXE' = int32(0x80131019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_FORMAT' = int32(0x80131537) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_HOSTPROTECTION' = int32(0x80131640) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INDEXOUTOFRANGE' = int32(0x80131508) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INVALIDCAST' = int32(0x80004002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INVALIDCOMOBJECT' = int32(0x80131527) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INVALIDFILTERCRITERIA' = int32(0x80131601) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INVALIDOLEVARIANTTYPE' = int32(0x80131531) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INVALIDOPERATION' = int32(0x80131509) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_INVALIDPROGRAM' = int32(0x8013153A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_IO' = int32(0x80131620) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_KEYNOTFOUND' = int32(0x80131577) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MARSHALDIRECTIVE' = int32(0x80131535) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MEMBERACCESS' = int32(0x8013151A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_METHODACCESS' = int32(0x80131510) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MISSINGFIELD' = int32(0x80131511) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MISSINGMANIFESTRESOURCE' = int32(0x80131532) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MISSINGMEMBER' = int32(0x80131512) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MISSINGMETHOD' = int32(0x80131513) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MISSINGSATELLITEASSEMBLY' = int32(0x80131536) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MODULE_HASH_CHECK_FAILED' = int32(0x80131039) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_MULTICASTNOTSUPPORTED' = int32(0x80131514) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_NEWER_RUNTIME' = int32(0x8013101B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_NOTCANCELABLE' = int32(0x8013153C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_NOTFINITENUMBER' = int32(0x80131528) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_NOTSUPPORTED' = int32(0x80131515) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_NO_LOADLIBRARY_ALLOWED' = int32(0x8013101A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_NULLREFERENCE' = int32(0x80004003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_OBJECTDISPOSED' = int32(0x80131622) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_OPERATIONCANCELED' = int32(0x8013153B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_OUTOFMEMORY' = int32(0x8007000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_OVERFLOW' = int32(0x80131516) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_PLATFORMNOTSUPPORTED' = int32(0x80131539) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_RANK' = int32(0x80131517) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_REFLECTIONTYPELOAD' = int32(0x80131602) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_REMOTING' = int32(0x8013150B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SAFEARRAYRANKMISMATCH' = int32(0x80131538) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SAFEARRAYTYPEMISMATCH' = int32(0x80131533) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SECURITY' = int32(0x8013150A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SEMAPHOREFULL' = int32(0x8013152B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SERIALIZATION' = int32(0x8013150C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SERVER' = int32(0x8013150E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SERVICEDCOMPONENT' = int32(0x8013150F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_STACKOVERFLOW' = int32(0x800703E9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SYNCHRONIZATIONLOCK' = int32(0x80131518) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_SYSTEM' = int32(0x80131501) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TARGET' = int32(0x80131603) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TARGETINVOCATION' = int32(0x80131604) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TARGETPARAMCOUNT' = int32(0x8002000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_THREADABORTED' = int32(0x80131530) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_THREADINTERRUPTED' = int32(0x80131519) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_THREADSTATE' = int32(0x80131520) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_THREADSTOP' = int32(0x80131521) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TIMEOUT' = int32(0x80131505) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TYPEINITIALIZATION' = int32(0x80131534) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TYPELOAD' = int32(0x80131522) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_TYPEUNLOADED' = int32(0x80131013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_UNAUTHORIZEDACCESS' = int32(0x80070005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_VERIFICATION' = int32(0x8013150D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'COR_E_WAITHANDLECANNOTBEOPENED' = int32(0x8013152C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACCESSCHECKFAILED' = int32(0x8001012A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACESINWRONGORDER' = int32(0x8001013A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACNOTINITIALIZED' = int32(0x8001013F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACTIVATIONFAILED' = int32(0x8004E021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACTIVATIONFAILED_CATALOGERROR' = int32(0x8004E023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACTIVATIONFAILED_EVENTLOGGED' = int32(0x8004E022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ACTIVATIONFAILED_TIMEOUT' = int32(0x8004E024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ALREADYINITIALIZED' = int32(0x800401F1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_APPDIDNTREG' = int32(0x800401FE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_APPNOTFOUND' = int32(0x800401F5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_APPSINGLEUSE' = int32(0x800401F6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ASYNC_WORK_REJECTED' = int32(0x80004029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT' = int32(0x80004024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_BAD_PATH' = int32(0x80080004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_BAD_SERVER_NAME' = int32(0x80004014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CANCEL_DISABLED' = int32(0x80010140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CANTDETERMINECLASS' = int32(0x800401F2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CANT_REMOTE' = int32(0x80004013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CLASSSTRING' = int32(0x800401F3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CLASS_CREATE_FAILED' = int32(0x80080001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CLASS_DISABLED' = int32(0x80004027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CLRNOTAVAILABLE' = int32(0x80004028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CLSREG_INCONSISTENT' = int32(0x8000401F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CONVERSIONFAILED' = int32(0x8001012E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_CREATEPROCESS_FAILURE' = int32(0x80004018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_DBERROR' = int32(0x8004E02B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_DECODEFAILED' = int32(0x8001013D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_DLLNOTFOUND' = int32(0x800401F8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ERRORINAPP' = int32(0x800401F7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ERRORINDLL' = int32(0x800401F9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_EXCEEDSYSACLLIMIT' = int32(0x80010139) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOCLOSEHANDLE' = int32(0x80010138) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOCREATEFILE' = int32(0x80010137) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOGENUUID' = int32(0x80010136) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOGETSECCTX' = int32(0x80010124) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOGETTOKENINFO' = int32(0x80010126) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOGETWINDIR' = int32(0x80010134) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOIMPERSONATE' = int32(0x80010123) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOOPENPROCESSTOKEN' = int32(0x8001013C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOOPENTHREADTOKEN' = int32(0x80010125) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOQUERYCLIENTBLANKET' = int32(0x80010128) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FAILEDTOSETDACL' = int32(0x80010129) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_FIRST' = int32(0x800401F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_IIDREG_INCONSISTENT' = int32(0x80004020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_IIDSTRING' = int32(0x800401F4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INCOMPATIBLESTREAMVERSION' = int32(0x8001013B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INITIALIZATIONFAILED' = int32(0x8004E025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_CLASS_CACHE' = int32(0x80004009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_MEMORY_ALLOCATOR' = int32(0x80004008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_ONLY_SINGLE_THREADED' = int32(0x80004012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_RPC_CHANNEL' = int32(0x8000400A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_SCM_EXEC_FAILURE' = int32(0x80004011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_SCM_FILE_MAPPING_EXISTS' = int32(0x8000400F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_SCM_MAP_VIEW_OF_FILE' = int32(0x80004010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_SCM_MUTEX_EXISTS' = int32(0x8000400E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_SHARED_ALLOCATOR' = int32(0x80004007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_TLS' = int32(0x80004006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_TLS_CHANNEL_CONTROL' = int32(0x8000400C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_TLS_SET_CHANNEL_CONTROL' = int32(0x8000400B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INIT_UNACCEPTED_USER_ALLOCATOR' = int32(0x8000400D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_INVALIDSID' = int32(0x8001012D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_ISOLEVELMISMATCH' = int32(0x8004E02F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_LAST' = int32(0x800401FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_LAUNCH_PERMSSION_DENIED' = int32(0x8000401B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_LOOKUPACCNAMEFAILED' = int32(0x80010132) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_LOOKUPACCSIDFAILED' = int32(0x80010130) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_MALFORMED_SPN' = int32(0x80004033) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_MSI_ERROR' = int32(0x80004023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NETACCESSAPIFAILED' = int32(0x8001012B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOCOOKIES' = int32(0x8004E02A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOIISINTRINSICS' = int32(0x8004E029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOMATCHINGNAMEFOUND' = int32(0x80010131) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOMATCHINGSIDFOUND' = int32(0x8001012F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOSYNCHRONIZATION' = int32(0x8004E02E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOTCONSTRUCTED' = int32(0x8004E02D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOTINITIALIZED' = int32(0x800401F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOTPOOLED' = int32(0x8004E02C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NOT_SUPPORTED' = int32(0x80004021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_NO_SECCTX_IN_ACTIVATE' = int32(0x8000402B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_OBJISREG' = int32(0x800401FC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_OBJNOTCONNECTED' = int32(0x800401FD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_OBJNOTREG' = int32(0x800401FB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_OBJSRV_RPC_FAILURE' = int32(0x80080006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_OLE1DDE_DISABLED' = int32(0x80004016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_PATHTOOLONG' = int32(0x80010135) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_RELEASED' = int32(0x800401FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_RELOAD_DLL' = int32(0x80004022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_REMOTE_COMMUNICATION_FAILURE' = int32(0x8000401D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_RUNAS_CREATEPROCESS_FAILURE' = int32(0x80004019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_RUNAS_LOGON_FAILURE' = int32(0x8000401A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_RUNAS_SYNTAX' = int32(0x80004017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SCM_ERROR' = int32(0x80080002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SCM_RPC_FAILURE' = int32(0x80080003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SERVER_EXEC_FAILURE' = int32(0x80080005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SERVER_INIT_TIMEOUT' = int32(0x8000402A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SERVER_NOT_PAUSED' = int32(0x80004026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SERVER_PAUSED' = int32(0x80004025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SERVER_START_TIMEOUT' = int32(0x8000401E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SERVER_STOPPING' = int32(0x80080008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SETSERLHNDLFAILED' = int32(0x80010133) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_START_SERVICE_FAILURE' = int32(0x8000401C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_SXS_CONFIG' = int32(0x80004032) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_THREADINGMODEL_CHANGED' = int32(0x8004E028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_THREADPOOL_CONFIG' = int32(0x80004031) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_TRACKER_CONFIG' = int32(0x80004030) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_TRUSTEEDOESNTMATCHCLIENT' = int32(0x80010127) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_WRONGOSFORAPP' = int32(0x800401FA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_WRONGTRUSTEENAMESYNTAX' = int32(0x8001012C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_E_WRONG_SERVER_IDENTITY' = int32(0x80004015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_S_FIRST' = int32(0x000401F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_S_LAST' = int32(0x000401FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_S_MACHINENAMENOTFOUND' = int32(0x00080013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CO_S_NOTALLINTERFACES' = int32(0x00080012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ALREADY_DECRYPTED' = int32(0x80091009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_BADARGS' = int32(0x80093109) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_BADPDU' = int32(0x80093108) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_BADREAL' = int32(0x8009310A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_BADTAG' = int32(0x8009310B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_CHOICE' = int32(0x8009310C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_CONSTRAINT' = int32(0x80093105) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_CORRUPT' = int32(0x80093103) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_EOD' = int32(0x80093102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_ERROR' = int32(0x80093100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_EXTENDED' = int32(0x80093201) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_INTERNAL' = int32(0x80093101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_LARGE' = int32(0x80093104) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_MEMORY' = int32(0x80093106) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_NOEOD' = int32(0x80093202) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_NYI' = int32(0x80093134) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_OVERFLOW' = int32(0x80093107) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_PDU_TYPE' = int32(0x80093133) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_RULE' = int32(0x8009310D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ASN1_UTF8' = int32(0x8009310E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ATTRIBUTES_MISSING' = int32(0x8009100F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_AUTH_ATTR_MISSING' = int32(0x80091006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_BAD_ENCODE' = int32(0x80092002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_BAD_LEN' = int32(0x80092001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_BAD_MSG' = int32(0x8009200D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_CONTROL_TYPE' = int32(0x8009100C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_DELETED_PREV' = int32(0x80092008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_EXISTS' = int32(0x80092005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_FILERESIZED' = int32(0x80092025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_FILE_ERROR' = int32(0x80092003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_HASH_VALUE' = int32(0x80091007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_INVALID_IA5_STRING' = int32(0x80092022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_INVALID_INDEX' = int32(0x80091008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_INVALID_MSG_TYPE' = int32(0x80091004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_INVALID_NUMERIC_STRING' = int32(0x80092020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_INVALID_PRINTABLE_STRING' = int32(0x80092021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_INVALID_X500_STRING' = int32(0x80092023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_ISSUER_SERIALNUMBER' = int32(0x8009100D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_MISSING_PUBKEY_PARA' = int32(0x8009202C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_MSG_ERROR' = int32(0x80091001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NOT_CHAR_STRING' = int32(0x80092024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NOT_DECRYPTED' = int32(0x8009100A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NOT_FOUND' = int32(0x80092004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NOT_IN_CTL' = int32(0x8009202A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NOT_IN_REVOCATION_DATABASE' = int32(0x80092014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_DECRYPT_CERT' = int32(0x8009200C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_KEY_PROPERTY' = int32(0x8009200B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_MATCH' = int32(0x80092009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_PROVIDER' = int32(0x80092006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_REVOCATION_CHECK' = int32(0x80092012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_REVOCATION_DLL' = int32(0x80092011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_SIGNER' = int32(0x8009200E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_TRUSTED_SIGNER' = int32(0x8009202B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_VERIFY_USAGE_CHECK' = int32(0x80092028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_NO_VERIFY_USAGE_DLL' = int32(0x80092027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_OID_FORMAT' = int32(0x80091003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_OSS_ERROR' = int32(0x80093000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_PENDING_CLOSE' = int32(0x8009200F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_RECIPIENT_NOT_FOUND' = int32(0x8009100B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_REVOCATION_OFFLINE' = int32(0x80092013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_REVOKED' = int32(0x80092010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_SECURITY_SETTINGS' = int32(0x80092026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_SELF_SIGNED' = int32(0x80092007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_SIGNER_NOT_FOUND' = int32(0x8009100E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_STREAM_INSUFFICIENT_DATA' = int32(0x80091011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_STREAM_MSG_NOT_READY' = int32(0x80091010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_UNEXPECTED_ENCODING' = int32(0x80091005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_UNEXPECTED_MSG_TYPE' = int32(0x8009200A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_UNKNOWN_ALGO' = int32(0x80091002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_E_VERIFY_USAGE_OFFLINE' = int32(0x80092029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CRYPT_I_NEW_PROTECTION_REQUIRED' = int32(0x00091012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_ADMIN_LIMIT_EXCEEDED' = int32(0x8004016D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_CLASS_NOTFOUND' = int32(0x80040166) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_FIRST' = int32(0x80040164) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_INTERNAL_ERROR' = int32(0x8004016F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_INVALID_PATH' = int32(0x8004016B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_INVALID_VERSION' = int32(0x80040167) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_LAST' = int32(0x8004016F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_NETWORK_ERROR' = int32(0x8004016C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_NOT_DELETABLE' = int32(0x80040165) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_NO_CLASSSTORE' = int32(0x80040168) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_OBJECT_ALREADY_EXISTS' = int32(0x8004016A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_OBJECT_NOTFOUND' = int32(0x80040169) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_PACKAGE_NOTFOUND' = int32(0x80040164) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'CS_E_SCHEMA_MISMATCH' = int32(0x8004016E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DATA_E_FIRST' = int32(0x80040130) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DATA_E_LAST' = int32(0x8004013F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DATA_S_FIRST' = int32(0x00040130) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DATA_S_LAST' = int32(0x0004013F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DATA_S_SAMEFORMATETC' = int32(0x00040130) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DIGSIG_E_CRYPTO' = int32(0x800B0008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DIGSIG_E_DECODE' = int32(0x800B0006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DIGSIG_E_ENCODE' = int32(0x800B0005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DIGSIG_E_EXTENSIBILITY' = int32(0x800B0007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_ARRAYISLOCKED' = int32(0x8002000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_BADCALLEE' = int32(0x80020010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_BADINDEX' = int32(0x8002000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_BADPARAMCOUNT' = int32(0x8002000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_BADVARTYPE' = int32(0x80020008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_BUFFERTOOSMALL' = int32(0x80020013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_DIVBYZERO' = int32(0x80020012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_EXCEPTION' = int32(0x80020009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_MEMBERNOTFOUND' = int32(0x80020003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_NONAMEDARGS' = int32(0x80020007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_NOTACOLLECTION' = int32(0x80020011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_OVERFLOW' = int32(0x8002000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_PARAMNOTFOUND' = int32(0x80020004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_PARAMNOTOPTIONAL' = int32(0x8002000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_TYPEMISMATCH' = int32(0x80020005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_UNKNOWNINTERFACE' = int32(0x80020001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_UNKNOWNLCID' = int32(0x8002000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DISP_E_UNKNOWNNAME' = int32(0x80020006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_E_ALREADYREGISTERED' = int32(0x80040101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_E_FIRST' = int32(0x80040100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_E_INVALIDHWND' = int32(0x80040102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_E_LAST' = int32(0x8004010F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_E_NOTREGISTERED' = int32(0x80040100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_S_CANCEL' = int32(0x00040101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_S_DROP' = int32(0x00040100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_S_FIRST' = int32(0x00040100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_S_LAST' = int32(0x0004010F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DRAGDROP_S_USEDEFAULTCURSORS' = int32(0x00040102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_CLIPFORMAT' = int32(0x8004006A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_DVASPECT' = int32(0x8004006B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_DVTARGETDEVICE' = int32(0x80040065) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_DVTARGETDEVICE_SIZE' = int32(0x8004006C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_FORMATETC' = int32(0x80040064) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_LINDEX' = int32(0x80040068) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_NOIVIEWOBJECT' = int32(0x8004006D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_STATDATA' = int32(0x80040067) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_STGMEDIUM' = int32(0x80040066) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'DV_E_TYMED' = int32(0x80040069) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ENUM_E_FIRST' = int32(0x800401B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ENUM_E_LAST' = int32(0x800401BF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ENUM_S_FIRST' = int32(0x000401B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ENUM_S_LAST' = int32(0x000401BF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ERROR_ALL_SIDS_FILTERED' = int32(0xC0090002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ERROR_AUDITING_DISABLED' = int32(0xC0090001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_ALL_SUBSCRIBERS_FAILED' = int32(0x80040201) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT' = int32(0x8004020E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT' = int32(0x8004020D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_COMPLUS_NOT_INSTALLED' = int32(0x8004020C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_FIRST' = int32(0x80040200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_INTERNALERROR' = int32(0x80040206) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_INTERNALEXCEPTION' = int32(0x80040205) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_INVALID_EVENT_CLASS_PARTITION' = int32(0x8004020F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_INVALID_PER_USER_SID' = int32(0x80040207) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_LAST' = int32(0x8004021F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_MISSING_EVENTCLASS' = int32(0x8004020A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_NOT_ALL_REMOVED' = int32(0x8004020B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_PER_USER_SID_NOT_LOGGED_ON' = int32(0x80040210) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_QUERYFIELD' = int32(0x80040204) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_QUERYSYNTAX' = int32(0x80040203) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_TOO_MANY_METHODS' = int32(0x80040209) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_E_USER_EXCEPTION' = int32(0x80040208) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_S_FIRST' = int32(0x00040200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_S_LAST' = int32(0x0004021F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_S_NOSUBSCRIBERS' = int32(0x00040202) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'EVENT_S_SOME_SUBSCRIBERS_FAILED' = int32(0x00040200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_ABORT' = int32(0x80004004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_ACCESSDENIED' = int32(0x80070005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_BAD_LENGTH' = int32(0x80070018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_FAIL' = int32(0x80004005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_HANDLE' = int32(0x80070006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_INVALIDARG' = int32(0x80070057) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_NOINTERFACE' = int32(0x80004002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_NOTIMPL' = int32(0x80004001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_OUTOFMEMORY' = int32(0x8007000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_PARTIAL_COPY' = int32(0x8007012B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_PDB_CORRUPT' = int32(0x806D0014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_PENDING' = int32(0x8000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_POINTER' = int32(0x80004003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'E_UNEXPECTED' = int32(0x8000FFFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_ASM_MODULE_MISSING' = int32(0x80131042) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_CODE_DOWNLOAD_DISABLED' = int32(0x80131048) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_DATABASE_ERROR' = int32(0x80131046) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_HOST_GAC_ASM_MISMATCH' = int32(0x80131050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_INVALID_NAME' = int32(0x80131047) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_INVALID_PRIVATE_ASM_LOCATION' = int32(0x80131041) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_PRIVATE_ASM_DISALLOWED' = int32(0x80131044) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_REF_DEF_MISMATCH' = int32(0x80131040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_SIGNATURE_CHECK_FAILED' = int32(0x80131045) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_UNEXPECTED_MODULE_FOUND' = int32(0x80131043) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'FUSION_E_UNINSTALL_DISALLOWED' = int32(0x80131049) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_ABANDONED' = int32(0x80131026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_CLRNOTAVAILABLE' = int32(0x80131023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_DEADLOCK' = int32(0x80131020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_EXITPROCESS_ADUNLOAD' = int32(0x80131028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_EXITPROCESS_OUTOFMEMORY' = int32(0x8013102A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_EXITPROCESS_STACKOVERFLOW' = int32(0x8013102B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_EXITPROCESS_THREADABORT' = int32(0x80131027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_EXITPROCESS_TIMEOUT' = int32(0x80131029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_INTERRUPTED' = int32(0x80131021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_INVALIDOPERATION' = int32(0x80131022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_NOT_OWNER' = int32(0x80131025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HOST_E_TIMEOUT' = int32(0x80131024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'HR_FOR_ERROR_PARTIAL_COPY' = int32(0x8007012B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_E_FIRST' = int32(0x800401A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_E_LAST' = int32(0x800401AF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_E_NOTOOLSPACE' = int32(0x800401A1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_E_NOTUNDOABLE' = int32(0x800401A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_S_FIRST' = int32(0x000401A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_S_LAST' = int32(0x000401AF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'INPLACE_S_TRUNCATED' = int32(0x000401A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_ALLOC_TOO_LARGE' = int32(0x80131484) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_BLOCK_SIZE_TOO_SMALL' = int32(0x80131483) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_CALLER' = int32(0x801314A1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_CORRUPTED_STORE_FILE' = int32(0x80131480) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_CREATE_DIR' = int32(0x80131468) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_CREATE_MUTEX' = int32(0x80131464) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_DEPRECATE' = int32(0x801314A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_FILE_NOT_MAPPED' = int32(0x80131482) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_FILE_WRITE' = int32(0x80131466) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_GET_FILE_SIZE' = int32(0x80131463) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_ISOSTORE' = int32(0x80131450) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_ISOSTORE_END' = int32(0x801314FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_ISOSTORE_START' = int32(0x80131450) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_LOCK_FAILED' = int32(0x80131465) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_MACHINE' = int32(0x801314A3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_MACHINE_DACL' = int32(0x801314A4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_MAP_VIEW_OF_FILE' = int32(0x80131462) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_OPEN_FILE_MAPPING' = int32(0x80131461) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_OPEN_STORE_FILE' = int32(0x80131460) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_PATH_LENGTH' = int32(0x801314A2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_SET_FILE_POINTER' = int32(0x80131467) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_STORE_NOT_OPEN' = int32(0x80131469) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_STORE_VERSION' = int32(0x80131481) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_TABLE_ROW_NOT_FOUND' = int32(0x80131486) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'ISS_E_USAGE_WILL_EXCEED_QUOTA' = int32(0x80131485) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MARSHAL_E_FIRST' = int32(0x80040120) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MARSHAL_E_LAST' = int32(0x8004012F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MARSHAL_S_FIRST' = int32(0x00040120) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MARSHAL_S_LAST' = int32(0x0004012F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MEM_E_INVALID_LINK' = int32(0x80080010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MEM_E_INVALID_ROOT' = int32(0x80080009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MEM_E_INVALID_SIZE' = int32(0x80080011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_BADMETADATA' = int32(0x8013118A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_BAD_INPUT_PARAMETER' = int32(0x80131193) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_BAD_SIGNATURE' = int32(0x80131192) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CANNOTRESOLVETYPEREF' = int32(0x80131196) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_ARRAY_NYI' = int32(0x801311C6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_CUSTMARSH_TYPE_REQUIRED' = int32(0x801311D1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_FILENAME_REQUIRED' = int32(0x801311D2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_FIXEDSTR_SIZE_REQUIRED' = int32(0x801311D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_ARGTYPE' = int32(0x801311C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_ARG_FOR_TYPE' = int32(0x801311C9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_BLOB' = int32(0x801311C2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_MARSHALAS_FIELDS' = int32(0x801311CB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_TARGET' = int32(0x801311C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_UUID' = int32(0x801311CA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_INVALID_VALUE' = int32(0x801311C1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_NEGATIVE_CONSTSIZE' = int32(0x801311CF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_NEGATIVE_MULTIPLIER' = int32(0x801311CE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_NEGATIVE_PARAMINDEX' = int32(0x801311CD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_NT_FIELDONLY' = int32(0x801311CC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_REPEATED_ARG' = int32(0x801311C3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_UNEXPECTED_TYPE' = int32(0x801311C7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_UNKNOWN_ARGUMENT' = int32(0x801311C4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CA_VARIANT_NYI' = int32(0x801311C5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_CLASS_LAYOUT_INCONSISTENT' = int32(0x8013118D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_DUPLICATE' = int32(0x80131180) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_EVENT_COUNTS' = int32(0x8013119D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_EVENT_NOT_FOUND' = int32(0x80131190) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_FIELD_COUNTS' = int32(0x801311D7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_FIELD_MARSHAL_NOT_FOUND' = int32(0x8013118E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_FIELD_NOT_FOUND' = int32(0x80131188) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_GENERICPARAM_INCONSISTENT' = int32(0x8013119C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_GUID_REQUIRED' = int32(0x80131181) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_HAS_UNMARKALL' = int32(0x8013119A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_INTFCEIMPL_NOT_FOUND' = int32(0x8013118B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_INVALID_TOKEN_TYPE' = int32(0x8013115F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_MD_INCONSISTENCY' = int32(0x80131195) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_MERGE_COLLISION' = int32(0x80131183) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_METHDIMPL_INCONSISTENT' = int32(0x80131194) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_METHD_NOT_FOUND' = int32(0x80131187) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_METHODSEM_NOT_FOUND' = int32(0x8013118F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_METHOD_COUNTS' = int32(0x801311D6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_MUST_CALL_UNMARKALL' = int32(0x8013119B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_NOT_IN_ENC_MODE' = int32(0x801311D4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_PARAM_COUNTS' = int32(0x801311D8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_PARAM_MISMATCH' = int32(0x80131189) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_PROPERTY_COUNTS' = int32(0x8013119E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_PROP_NOT_FOUND' = int32(0x80131191) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_STRINGSPACE_FULL' = int32(0x80131198) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_TYPEDEF_MISMATCH' = int32(0x80131182) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_TYPEDEF_MISSING' = int32(0x8013119F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_E_UNEXPECTED_REMAP' = int32(0x80131199) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_S_DUPLICATE' = int32(0x00131197) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'META_S_PARAM_MISMATCH' = int32(0x00131189) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_CANTOPENFILE' = int32(0x800401EA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_CONNECTMANUALLY' = int32(0x800401E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_ENUMERATION_FAILED' = int32(0x800401EF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_EXCEEDEDDEADLINE' = int32(0x800401E1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_FIRST' = int32(0x800401E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_INTERMEDIATEINTERFACENOTSUPPORTED' = int32(0x800401E7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_INVALIDEXTENSION' = int32(0x800401E6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_LAST' = int32(0x800401EF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_MUSTBOTHERUSER' = int32(0x800401EB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NEEDGENERIC' = int32(0x800401E2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NOINVERSE' = int32(0x800401EC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NOOBJECT' = int32(0x800401E5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NOPREFIX' = int32(0x800401EE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NOSTORAGE' = int32(0x800401ED) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NOTBINDABLE' = int32(0x800401E8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NOTBOUND' = int32(0x800401E9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_NO_NORMALIZED' = int32(0x80080007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_SYNTAX' = int32(0x800401E4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_E_UNAVAILABLE' = int32(0x800401E3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_FIRST' = int32(0x000401E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_HIM' = int32(0x000401E5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_LAST' = int32(0x000401EF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_ME' = int32(0x000401E4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_MONIKERALREADYREGISTERED' = int32(0x000401E7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_REDUCED_TO_SELF' = int32(0x000401E2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MK_S_US' = int32(0x000401E6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSDTC_E_DUPLICATE_RESOURCE' = int32(0x80110701) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSEE_E_ASSEMBLYLOADINPROGRESS' = int32(0x80131016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSEE_E_CANNOTCREATEAPPDOMAIN' = int32(0x80131017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSEE_E_GETPROCFAILED' = int32(0x80131011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSEE_E_LOADLIBFAILED' = int32(0x80131010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSEE_E_MULTCOPIESLOADED' = int32(0x80131012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_BADVERSION' = int32(0x80097015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT' = int32(0x80097008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_BAD_MAGICNUMBER' = int32(0x80097004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_BAD_OFFSET_TABLE' = int32(0x80097005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_CANTGETOBJECT' = int32(0x80097002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_CRYPT' = int32(0x80097014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_DSIG_STRUCTURE' = int32(0x80097016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_FAILED_HINTS_CHECK' = int32(0x80097011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_FAILED_POLICY' = int32(0x80097010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_FILE' = int32(0x80097013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_FILETOOSMALL' = int32(0x8009700B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_FILE_CHECKSUM' = int32(0x8009700D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_NOHEADTABLE' = int32(0x80097003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_NOT_OPENTYPE' = int32(0x80097012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_OUTOFMEMRANGE' = int32(0x80097001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_PCONST_CHECK' = int32(0x80097017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_STRUCTURE' = int32(0x80097018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_TABLES_OVERLAP' = int32(0x80097009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_TABLE_CHECKSUM' = int32(0x8009700C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_TABLE_LONGWORD' = int32(0x80097007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_TABLE_PADBYTES' = int32(0x8009700A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'MSSIPOTF_E_TABLE_TAGORDER' = int32(0x80097006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_ALGID' = int32(0x80090008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_DATA' = int32(0x80090005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_FLAGS' = int32(0x80090009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_HASH' = int32(0x80090002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_HASH_STATE' = int32(0x8009000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_KEY' = int32(0x80090003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_KEYSET' = int32(0x80090016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_KEYSET_PARAM' = int32(0x8009001F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_KEY_STATE' = int32(0x8009000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_LEN' = int32(0x80090004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_PROVIDER' = int32(0x80090013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_PROV_TYPE' = int32(0x80090014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_PUBLIC_KEY' = int32(0x80090015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_SIGNATURE' = int32(0x80090006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_TYPE' = int32(0x8009000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_UID' = int32(0x80090001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_BAD_VER' = int32(0x80090007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_DOUBLE_ENCRYPT' = int32(0x80090012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_EXISTS' = int32(0x8009000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_FAIL' = int32(0x80090020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_FIXEDPARAMETER' = int32(0x80090025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_KEYSET_ENTRY_BAD' = int32(0x8009001A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_KEYSET_NOT_DEF' = int32(0x80090019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_NOT_FOUND' = int32(0x80090011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_NO_KEY' = int32(0x8009000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_NO_MEMORY' = int32(0x8009000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_PERM' = int32(0x80090010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_PROVIDER_DLL_FAIL' = int32(0x8009001D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_PROV_DLL_NOT_FOUND' = int32(0x8009001E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_PROV_TYPE_ENTRY_BAD' = int32(0x80090018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_PROV_TYPE_NOT_DEF' = int32(0x80090017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_PROV_TYPE_NO_MATCH' = int32(0x8009001B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_SIGNATURE_FILE_BAD' = int32(0x8009001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_SILENT_CONTEXT' = int32(0x80090022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_SYS_ERR' = int32(0x80090021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_TEMPORARY_PROFILE' = int32(0x80090024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'NTE_TOKEN_KEYSET_STORAGE_FULL' = int32(0x80090023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_E_FIRST' = int32(0x80040180) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_E_INVALIDVERB' = int32(0x80040181) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_E_LAST' = int32(0x8004018F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_E_NOVERBS' = int32(0x80040180) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_S_CANNOT_DOVERB_NOW' = int32(0x00040181) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_S_FIRST' = int32(0x00040180) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_S_INVALIDHWND' = int32(0x00040182) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_S_INVALIDVERB' = int32(0x00040180) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLEOBJ_S_LAST' = int32(0x0004018F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_ADVF' = int32(0x80040001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_ADVISENOTSUPPORTED' = int32(0x80040003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_BLANK' = int32(0x80040007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_CANTCONVERT' = int32(0x80040011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_CANT_BINDTOSOURCE' = int32(0x8004000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_CANT_GETMONIKER' = int32(0x80040009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_CLASSDIFF' = int32(0x80040008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_ENUM_NOMORE' = int32(0x80040002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_FIRST' = int32(0x80040000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_INVALIDHWND' = int32(0x8004000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_INVALIDRECT' = int32(0x8004000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_LAST' = int32(0x800400FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_NOCACHE' = int32(0x80040006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_NOCONNECTION' = int32(0x80040004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_NOSTORAGE' = int32(0x80040012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_NOTRUNNING' = int32(0x80040005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_NOT_INPLACEACTIVE' = int32(0x80040010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_OLEVERB' = int32(0x80040000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_PROMPTSAVECANCELLED' = int32(0x8004000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_STATIC' = int32(0x8004000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_E_WRONGCOMPOBJ' = int32(0x8004000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_S_FIRST' = int32(0x00040000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_S_LAST' = int32(0x000400FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_S_MAC_CLIPFORMAT' = int32(0x00040002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_S_STATIC' = int32(0x00040001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OLE_S_USEREG' = int32(0x00040000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_ACCESS_SERIALIZATION_ERROR' = int32(0x80093013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_API_DLL_NOT_LINKED' = int32(0x80093029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BAD_ARG' = int32(0x80093006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BAD_ENCRULES' = int32(0x80093016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BAD_PTR' = int32(0x8009300B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BAD_TABLE' = int32(0x8009300F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BAD_TIME' = int32(0x8009300C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BAD_VERSION' = int32(0x80093007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_BERDER_DLL_NOT_LINKED' = int32(0x8009302A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_CANT_CLOSE_TRACE_FILE' = int32(0x8009302E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_CANT_OPEN_TRACE_FILE' = int32(0x8009301B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_CANT_OPEN_TRACE_WINDOW' = int32(0x80093018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_COMPARATOR_CODE_NOT_LINKED' = int32(0x80093025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_COMPARATOR_DLL_NOT_LINKED' = int32(0x80093024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_CONSTRAINT_DLL_NOT_LINKED' = int32(0x80093023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_CONSTRAINT_VIOLATED' = int32(0x80093011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_COPIER_DLL_NOT_LINKED' = int32(0x80093022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_DATA_ERROR' = int32(0x80093005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_FATAL_ERROR' = int32(0x80093012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_INDEFINITE_NOT_SUPPORTED' = int32(0x8009300D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_LIMITED' = int32(0x8009300A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_MEM_ERROR' = int32(0x8009300E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_MEM_MGR_DLL_NOT_LINKED' = int32(0x80093026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_MORE_BUF' = int32(0x80093001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_MORE_INPUT' = int32(0x80093004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_MUTEX_NOT_CREATED' = int32(0x8009302D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_NEGATIVE_UINTEGER' = int32(0x80093002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_NULL_FCN' = int32(0x80093015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_NULL_TBL' = int32(0x80093014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_OID_DLL_NOT_LINKED' = int32(0x8009301A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_OPEN_TYPE_ERROR' = int32(0x8009302C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_OUT_MEMORY' = int32(0x80093008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_OUT_OF_RANGE' = int32(0x80093021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_PDU_MISMATCH' = int32(0x80093009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_PDU_RANGE' = int32(0x80093003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_PDV_CODE_NOT_LINKED' = int32(0x80093028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_PDV_DLL_NOT_LINKED' = int32(0x80093027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_PER_DLL_NOT_LINKED' = int32(0x8009302B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_REAL_CODE_NOT_LINKED' = int32(0x80093020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_REAL_DLL_NOT_LINKED' = int32(0x8009301F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_TABLE_MISMATCH' = int32(0x8009301D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_TOO_LONG' = int32(0x80093010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_TRACE_FILE_ALREADY_OPEN' = int32(0x8009301C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_TYPE_NOT_SUPPORTED' = int32(0x8009301E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_UNAVAIL_ENCRULES' = int32(0x80093017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'OSS_UNIMPLEMENTED' = int32(0x80093019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_64BIT' = int32(0x80131D02) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_BAD_CORHEADER' = int32(0x80131D0A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_BASE_RELOCS' = int32(0x80131D07) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_ENTRYPOINT' = int32(0x80131D08) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_EXE_NOENTRYPOINT' = int32(0x80131D06) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_IMPORT_DLLS' = int32(0x80131D05) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_NOT_ILONLY' = int32(0x80131D04) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_NO_CONTENTS' = int32(0x80131D00) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_NO_CORHEADER' = int32(0x80131D03) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_NO_NTHEADERS' = int32(0x80131D01) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PEFMT_E_ZERO_SIZEOFCODE' = int32(0x80131D09) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PERSIST_E_NOTSELFSIZING' = int32(0x800B000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PERSIST_E_SIZEDEFINITE' = int32(0x800B0009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'PERSIST_E_SIZEINDEFINITE' = int32(0x800B000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_BADTHREADINGMODEL' = int32(0x80040156) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_CLASSNOTREG' = int32(0x80040154) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_FIRST' = int32(0x80040150) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_IIDNOTREG' = int32(0x80040155) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_INVALIDVALUE' = int32(0x80040153) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_KEYMISSING' = int32(0x80040152) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_LAST' = int32(0x8004015F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_READREGDB' = int32(0x80040150) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_E_WRITEREGDB' = int32(0x80040151) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_S_FIRST' = int32(0x00040150) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'REGDB_S_LAST' = int32(0x0004015F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_ACCESS_DENIED' = int32(0x8001011B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_ATTEMPTED_MULTITHREAD' = int32(0x80010102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CALL_CANCELED' = int32(0x80010002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CALL_COMPLETE' = int32(0x80010117) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CALL_REJECTED' = int32(0x80010001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CANTCALLOUT_AGAIN' = int32(0x80010011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CANTCALLOUT_INASYNCCALL' = int32(0x80010004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CANTCALLOUT_INEXTERNALCALL' = int32(0x80010005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CANTCALLOUT_ININPUTSYNCCALL' = int32(0x8001010D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CANTPOST_INSENDCALL' = int32(0x80010003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CANTTRANSMIT_CALL' = int32(0x8001000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CHANGED_MODE' = int32(0x80010106) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CLIENT_CANTMARSHAL_DATA' = int32(0x8001000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CLIENT_CANTUNMARSHAL_DATA' = int32(0x8001000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CLIENT_DIED' = int32(0x80010008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_CONNECTION_TERMINATED' = int32(0x80010006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_DISCONNECTED' = int32(0x80010108) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_FAULT' = int32(0x80010104) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_FULLSIC_REQUIRED' = int32(0x80010121) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALIDMETHOD' = int32(0x80010107) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_CALLDATA' = int32(0x8001010C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_DATA' = int32(0x8001000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_DATAPACKET' = int32(0x80010009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_EXTENSION' = int32(0x80010112) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_HEADER' = int32(0x80010111) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_IPID' = int32(0x80010113) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_OBJECT' = int32(0x80010114) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_OBJREF' = int32(0x8001011D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_PARAMETER' = int32(0x80010010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_INVALID_STD_NAME' = int32(0x80010122) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_NOT_REGISTERED' = int32(0x80010103) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_NO_CONTEXT' = int32(0x8001011E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_NO_GOOD_SECURITY_PACKAGES' = int32(0x8001011A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_NO_SYNC' = int32(0x80010120) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_OUT_OF_RESOURCES' = int32(0x80010101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_REMOTE_DISABLED' = int32(0x8001011C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_RETRY' = int32(0x80010109) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVERCALL_REJECTED' = int32(0x8001010B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVERCALL_RETRYLATER' = int32(0x8001010A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVERFAULT' = int32(0x80010105) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVER_CANTMARSHAL_DATA' = int32(0x8001000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVER_CANTUNMARSHAL_DATA' = int32(0x8001000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVER_DIED' = int32(0x80010007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SERVER_DIED_DNE' = int32(0x80010012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_SYS_CALL_FAILED' = int32(0x80010100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_THREAD_NOT_INIT' = int32(0x8001010F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_TIMEOUT' = int32(0x8001011F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_TOO_LATE' = int32(0x80010119) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_UNEXPECTED' = int32(0x8001FFFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_UNSECURE_CALL' = int32(0x80010118) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_VERSION_MISMATCH' = int32(0x80010110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_E_WRONG_THREAD' = int32(0x8001010E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_S_CALLPENDING' = int32(0x80010115) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'RPC_S_WAITONTIMER' = int32(0x80010116) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_BAD_SEEK' = int32(0x80100029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_CANCELLED' = int32(0x80100002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_CANT_DISPOSE' = int32(0x8010000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_CARD_UNSUPPORTED' = int32(0x8010001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_CERTIFICATE_UNAVAILABLE' = int32(0x8010002D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_COMM_DATA_LOST' = int32(0x8010002F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_DIR_NOT_FOUND' = int32(0x80100023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_DUPLICATE_READER' = int32(0x8010001B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_FILE_NOT_FOUND' = int32(0x80100024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_ICC_CREATEORDER' = int32(0x80100021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_ICC_INSTALLATION' = int32(0x80100020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INSUFFICIENT_BUFFER' = int32(0x80100008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INVALID_ATR' = int32(0x80100015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INVALID_CHV' = int32(0x8010002A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INVALID_HANDLE' = int32(0x80100003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INVALID_PARAMETER' = int32(0x80100004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INVALID_TARGET' = int32(0x80100005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_INVALID_VALUE' = int32(0x80100011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NOT_READY' = int32(0x80100010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NOT_TRANSACTED' = int32(0x80100016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_ACCESS' = int32(0x80100027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_DIR' = int32(0x80100025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_FILE' = int32(0x80100026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_KEY_CONTAINER' = int32(0x80100030) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_MEMORY' = int32(0x80100006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_READERS_AVAILABLE' = int32(0x8010002E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_SERVICE' = int32(0x8010001D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_SMARTCARD' = int32(0x8010000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_NO_SUCH_CERTIFICATE' = int32(0x8010002C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_PCI_TOO_SMALL' = int32(0x80100019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_PROTO_MISMATCH' = int32(0x8010000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_READER_UNAVAILABLE' = int32(0x80100017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_READER_UNSUPPORTED' = int32(0x8010001A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_SERVER_TOO_BUSY' = int32(0x80100031) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_SERVICE_STOPPED' = int32(0x8010001E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_SHARING_VIOLATION' = int32(0x8010000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_SYSTEM_CANCELLED' = int32(0x80100012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_TIMEOUT' = int32(0x8010000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_UNEXPECTED' = int32(0x8010001F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_UNKNOWN_CARD' = int32(0x8010000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_UNKNOWN_READER' = int32(0x80100009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_UNKNOWN_RES_MNG' = int32(0x8010002B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_UNSUPPORTED_FEATURE' = int32(0x80100022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_E_WRITE_TOO_MANY' = int32(0x80100028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_F_COMM_ERROR' = int32(0x80100013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_F_INTERNAL_ERROR' = int32(0x80100001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_F_UNKNOWN_ERROR' = int32(0x80100014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_F_WAITED_TOO_LONG' = int32(0x80100007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_P_SHUTDOWN' = int32(0x80100018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_CANCELLED_BY_USER' = int32(0x8010006E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_CARD_NOT_AUTHENTICATED' = int32(0x8010006F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_CHV_BLOCKED' = int32(0x8010006C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_EOF' = int32(0x8010006D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_REMOVED_CARD' = int32(0x80100069) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_RESET_CARD' = int32(0x80100068) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_SECURITY_VIOLATION' = int32(0x8010006A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_UNPOWERED_CARD' = int32(0x80100067) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_UNRESPONSIVE_CARD' = int32(0x80100066) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_UNSUPPORTED_CARD' = int32(0x80100065) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCARD_W_WRONG_CHV' = int32(0x8010006B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_ACCOUNT_DBASE_CORRUPT' = int32(0x80041311) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_ACCOUNT_INFORMATION_NOT_SET' = int32(0x8004130F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_ACCOUNT_NAME_NOT_FOUND' = int32(0x80041310) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_CANNOT_OPEN_TASK' = int32(0x8004130D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_INVALID_TASK' = int32(0x8004130E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_NO_SECURITY_SERVICES' = int32(0x80041312) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_SERVICE_NOT_INSTALLED' = int32(0x8004130C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_SERVICE_NOT_RUNNING' = int32(0x80041315) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_TASK_NOT_READY' = int32(0x8004130A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_TASK_NOT_RUNNING' = int32(0x8004130B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_TRIGGER_NOT_FOUND' = int32(0x80041309) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_UNKNOWN_OBJECT_VERSION' = int32(0x80041313) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_E_UNSUPPORTED_ACCOUNT_OPTION' = int32(0x80041314) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_EVENT_TRIGGER' = int32(0x00041308) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_DISABLED' = int32(0x00041302) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_HAS_NOT_RUN' = int32(0x00041303) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_NOT_SCHEDULED' = int32(0x00041305) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_NO_MORE_RUNS' = int32(0x00041304) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_NO_VALID_TRIGGERS' = int32(0x00041307) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_READY' = int32(0x00041300) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_RUNNING' = int32(0x00041301) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SCHED_S_TASK_TERMINATED' = int32(0x00041306) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SECURITY_E_INCOMPATIBLE_EVIDENCE' = int32(0x80131403) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SECURITY_E_INCOMPATIBLE_SHARE' = int32(0x80131401) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SECURITY_E_UNVERIFIABLE' = int32(0x80131402) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SECURITY_E_XML_TO_ASN_ENCODING' = int32(0x80131400) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_ALGORITHM_MISMATCH' = int32(0x80090331) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_BAD_BINDINGS' = int32(0x80090346) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_BAD_PKGID' = int32(0x80090316) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_BUFFER_TOO_SMALL' = int32(0x80090321) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CANNOT_INSTALL' = int32(0x80090307) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CANNOT_PACK' = int32(0x80090309) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CERT_EXPIRED' = int32(0x80090328) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CERT_UNKNOWN' = int32(0x80090327) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CERT_WRONG_USAGE' = int32(0x80090349) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CONTEXT_EXPIRED' = int32(0x80090317) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CROSSREALM_DELEGATION_FAILURE' = int32(0x80090357) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_CRYPTO_SYSTEM_INVALID' = int32(0x80090337) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_DECRYPT_FAILURE' = int32(0x80090330) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_DELEGATION_REQUIRED' = int32(0x80090345) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_DOWNGRADE_DETECTED' = int32(0x80090350) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_ENCRYPT_FAILURE' = int32(0x80090329) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_ILLEGAL_MESSAGE' = int32(0x80090326) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_INCOMPLETE_CREDENTIALS' = int32(0x80090320) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_INCOMPLETE_MESSAGE' = int32(0x80090318) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_INSUFFICIENT_MEMORY' = int32(0x80090300) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_INTERNAL_ERROR' = int32(0x80090304) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_INVALID_HANDLE' = int32(0x80090301) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_INVALID_TOKEN' = int32(0x80090308) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_ISSUING_CA_UNTRUSTED' = int32(0x80090352) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_ISSUING_CA_UNTRUSTED_KDC' = int32(0x80090359) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_KDC_CERT_EXPIRED' = int32(0x8009035A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_KDC_CERT_REVOKED' = int32(0x8009035B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_KDC_INVALID_REQUEST' = int32(0x80090340) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_KDC_UNABLE_TO_REFER' = int32(0x80090341) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_KDC_UNKNOWN_ETYPE' = int32(0x80090342) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_LOGON_DENIED' = int32(0x8009030C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_MAX_REFERRALS_EXCEEDED' = int32(0x80090338) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_MESSAGE_ALTERED' = int32(0x8009030F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_MULTIPLE_ACCOUNTS' = int32(0x80090347) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_MUST_BE_KDC' = int32(0x80090339) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NOT_OWNER' = int32(0x80090306) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_AUTHENTICATING_AUTHORITY' = int32(0x80090311) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_CREDENTIALS' = int32(0x8009030E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_IMPERSONATION' = int32(0x8009030B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_IP_ADDRESSES' = int32(0x80090335) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_KERB_KEY' = int32(0x80090348) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_PA_DATA' = int32(0x8009033C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_S4U_PROT_SUPPORT' = int32(0x80090356) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_NO_TGT_REPLY' = int32(0x80090334) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_OUT_OF_SEQUENCE' = int32(0x80090310) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_PKINIT_CLIENT_FAILURE' = int32(0x80090354) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_PKINIT_NAME_MISMATCH' = int32(0x8009033D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_QOP_NOT_SUPPORTED' = int32(0x8009030A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_REVOCATION_OFFLINE_C' = int32(0x80090353) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_REVOCATION_OFFLINE_KDC' = int32(0x80090358) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_SECPKG_NOT_FOUND' = int32(0x80090305) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_SECURITY_QOS_FAILED' = int32(0x80090332) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_SHUTDOWN_IN_PROGRESS' = int32(0x8009033F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_SMARTCARD_CERT_EXPIRED' = int32(0x80090355) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_SMARTCARD_CERT_REVOKED' = int32(0x80090351) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_SMARTCARD_LOGON_REQUIRED' = int32(0x8009033E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_STRONG_CRYPTO_NOT_SUPPORTED' = int32(0x8009033A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_TARGET_UNKNOWN' = int32(0x80090303) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_TIME_SKEW' = int32(0x80090324) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_TOO_MANY_PRINCIPALS' = int32(0x8009033B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_UNFINISHED_CONTEXT_DELETED' = int32(0x80090333) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_UNKNOWN_CREDENTIALS' = int32(0x8009030D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_UNSUPPORTED_FUNCTION' = int32(0x80090302) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_UNSUPPORTED_PREAUTH' = int32(0x80090343) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_UNTRUSTED_ROOT' = int32(0x80090325) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_WRONG_CREDENTIAL_HANDLE' = int32(0x80090336) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_E_WRONG_PRINCIPAL' = int32(0x80090322) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_COMPLETE_AND_CONTINUE' = int32(0x00090314) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_COMPLETE_NEEDED' = int32(0x00090313) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_CONTEXT_EXPIRED' = int32(0x00090317) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_CONTINUE_NEEDED' = int32(0x00090312) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_INCOMPLETE_CREDENTIALS' = int32(0x00090320) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_LOCAL_LOGON' = int32(0x00090315) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_NO_LSA_CONTEXT' = int32(0x00090323) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SEC_I_RENEGOTIATE' = int32(0x00090321) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SN_CRYPTOAPI_CALL_FAILED' = int32(0x80131413) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SN_NO_SUITABLE_CSP' = int32(0x80131414) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_AUTHENTICODE_DISALLOWED' = int32(0x800F0240) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED' = int32(0x800F0243) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER' = int32(0x800F0241) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED' = int32(0x800F0242) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_BAD_INTERFACE_INSTALLSECT' = int32(0x800F021D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_BAD_SECTION_NAME_LINE' = int32(0x800F0001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_BAD_SERVICE_INSTALLSECT' = int32(0x800F0217) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_CANT_LOAD_CLASS_ICON' = int32(0x800F020C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_CANT_REMOVE_DEVINST' = int32(0x800F0232) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_CLASS_MISMATCH' = int32(0x800F0201) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVICE_INTERFACE_ACTIVE' = int32(0x800F021B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVICE_INTERFACE_REMOVED' = int32(0x800F021C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVINFO_DATA_LOCKED' = int32(0x800F0213) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVINFO_LIST_LOCKED' = int32(0x800F0212) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVINFO_NOT_REGISTERED' = int32(0x800F0208) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE' = int32(0x800F0230) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DEVINST_ALREADY_EXISTS' = int32(0x800F0207) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DI_BAD_PATH' = int32(0x800F0214) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DI_DONT_INSTALL' = int32(0x800F022B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DI_DO_DEFAULT' = int32(0x800F020E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DI_FUNCTION_OBSOLETE' = int32(0x800F023E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DI_NOFILECOPY' = int32(0x800F020F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DI_POSTPROCESSING_REQUIRED' = int32(0x800F0226) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DRIVER_NONNATIVE' = int32(0x800F0234) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_DUPLICATE_FOUND' = int32(0x800F0202) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_ERROR_NOT_INSTALLED' = int32(0x800F1000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_EXPECTED_SECTION_NAME' = int32(0x800F0000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_FILEQUEUE_LOCKED' = int32(0x800F0216) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_GENERAL_SYNTAX' = int32(0x800F0003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INCORRECTLY_COPIED_INF' = int32(0x800F0237) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INF_IN_USE_BY_DEVICES' = int32(0x800F023D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_CLASS' = int32(0x800F0206) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_CLASS_INSTALLER' = int32(0x800F020D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_COINSTALLER' = int32(0x800F0227) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_DEVINST_NAME' = int32(0x800F0205) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_FILTER_DRIVER' = int32(0x800F022C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_HWPROFILE' = int32(0x800F0210) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_INF_LOGCONFIG' = int32(0x800F022A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_MACHINENAME' = int32(0x800F0220) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_PROPPAGE_PROVIDER' = int32(0x800F0224) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_REFERENCE_STRING' = int32(0x800F021F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_REG_PROPERTY' = int32(0x800F0209) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_INVALID_TARGET' = int32(0x800F0233) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_IN_WOW64' = int32(0x800F0235) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_KEY_DOES_NOT_EXIST' = int32(0x800F0204) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_LINE_NOT_FOUND' = int32(0x800F0102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_MACHINE_UNAVAILABLE' = int32(0x800F0222) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NON_WINDOWS_DRIVER' = int32(0x800F022E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NON_WINDOWS_NT_DRIVER' = int32(0x800F022D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NOT_AN_INSTALLED_OEM_INF' = int32(0x800F023C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NOT_DISABLEABLE' = int32(0x800F0231) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_ASSOCIATED_CLASS' = int32(0x800F0200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_ASSOCIATED_SERVICE' = int32(0x800F0219) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_AUTHENTICODE_CATALOG' = int32(0x800F023F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_BACKUP' = int32(0x800F0103) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_CATALOG_FOR_OEM_INF' = int32(0x800F022F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_CLASSINSTALL_PARAMS' = int32(0x800F0215) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_CLASS_DRIVER_LIST' = int32(0x800F0218) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_COMPAT_DRIVERS' = int32(0x800F0228) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_CONFIGMGR_SERVICES' = int32(0x800F0223) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE' = int32(0x800F021A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_DEVICE_ICON' = int32(0x800F0229) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_DEVICE_SELECTED' = int32(0x800F0211) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_DRIVER_SELECTED' = int32(0x800F0203) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_INF' = int32(0x800F020A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_SUCH_DEVICE_INTERFACE' = int32(0x800F0225) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_SUCH_DEVINST' = int32(0x800F020B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_NO_SUCH_INTERFACE_CLASS' = int32(0x800F021E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE' = int32(0x800F0245) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_PNP_REGISTRY_ERROR' = int32(0x800F023A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_REMOTE_COMM_FAILURE' = int32(0x800F0221) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_REMOTE_REQUEST_UNSUPPORTED' = int32(0x800F023B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_SCE_DISABLED' = int32(0x800F0238) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_SECTION_NAME_TOO_LONG' = int32(0x800F0002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_SECTION_NOT_FOUND' = int32(0x800F0101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_SET_SYSTEM_RESTORE_POINT' = int32(0x800F0236) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH' = int32(0x800F0244) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_UNKNOWN_EXCEPTION' = int32(0x800F0239) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW' = int32(0x800F0300) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'SPAPI_E_WRONG_INF_STYLE' = int32(0x800F0100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_ABNORMALAPIEXIT' = int32(0x800300FA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_ACCESSDENIED' = int32(0x80030005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_BADBASEADDRESS' = int32(0x80030110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_CANTSAVE' = int32(0x80030103) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_CSS_AUTHENTICATION_FAILURE' = int32(0x80030306) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_CSS_KEY_NOT_ESTABLISHED' = int32(0x80030308) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_CSS_KEY_NOT_PRESENT' = int32(0x80030307) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_CSS_REGION_MISMATCH' = int32(0x8003030A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_CSS_SCRAMBLED_SECTOR' = int32(0x80030309) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_DISKISWRITEPROTECTED' = int32(0x80030013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_DOCFILECORRUPT' = int32(0x80030109) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_DOCFILETOOLARGE' = int32(0x80030111) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_EXTANTMARSHALLINGS' = int32(0x80030108) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_FILEALREADYEXISTS' = int32(0x80030050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_FILENOTFOUND' = int32(0x80030002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INCOMPLETE' = int32(0x80030201) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INSUFFICIENTMEMORY' = int32(0x80030008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INUSE' = int32(0x80030100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDFLAG' = int32(0x800300FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDFUNCTION' = int32(0x80030001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDHANDLE' = int32(0x80030006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDHEADER' = int32(0x800300FB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDNAME' = int32(0x800300FC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDPARAMETER' = int32(0x80030057) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_INVALIDPOINTER' = int32(0x80030009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_LOCKVIOLATION' = int32(0x80030021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_MEDIUMFULL' = int32(0x80030070) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_NOMOREFILES' = int32(0x80030012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_NOTCURRENT' = int32(0x80030101) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_NOTFILEBASEDSTORAGE' = int32(0x80030107) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_NOTSIMPLEFORMAT' = int32(0x80030112) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_OLDDLL' = int32(0x80030105) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_OLDFORMAT' = int32(0x80030104) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_PATHNOTFOUND' = int32(0x80030003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_PROPSETMISMATCHED' = int32(0x800300F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_READFAULT' = int32(0x8003001E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_RESETS_EXHAUSTED' = int32(0x8003030B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_REVERTED' = int32(0x80030102) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_SEEKERROR' = int32(0x80030019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_SHAREREQUIRED' = int32(0x80030106) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_SHAREVIOLATION' = int32(0x80030020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_STATUS_COPY_PROTECTION_FAILURE' = int32(0x80030305) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_TERMINATED' = int32(0x80030202) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_TOOMANYOPENFILES' = int32(0x80030004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_UNIMPLEMENTEDFUNCTION' = int32(0x800300FE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_UNKNOWN' = int32(0x800300FD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_E_WRITEFAULT' = int32(0x8003001D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_BLOCK' = int32(0x00030201) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_CANNOTCONSOLIDATE' = int32(0x00030206) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_CONSOLIDATIONFAILED' = int32(0x00030205) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_CONVERTED' = int32(0x00030200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_MONITORING' = int32(0x00030203) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_MULTIPLEOPENS' = int32(0x00030204) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'STG_S_RETRYNOW' = int32(0x00030202) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'S_FALSE' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'S_OK' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_AGNOST_SIGNATURE' = int32(0x801311BA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_AMBIGUOUS_RETURN' = int32(0x8013116D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_ARRAY_NEEDS_NT_FIXED' = int32(0x801311BE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_ASANY' = int32(0x80131175) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_AUTO_CS_NOT_ALLOWED' = int32(0x801311B2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BAD_MSCOREE_TLB' = int32(0x80131169) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BAD_NAMES' = int32(0x8013117B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BAD_NATIVETYPE' = int32(0x801311A6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BAD_SIGNATURE' = int32(0x801311BD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BAD_VTABLE' = int32(0x801311A7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BAD_VT_TYPE' = int32(0x80131167) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_BITNESS_MISMATCH' = int32(0x801311E1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CANTLOADLIBRARY' = int32(0x80131166) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CANT_LOAD_CLASS' = int32(0x801311A1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CANT_LOAD_MODULE' = int32(0x801311A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CANT_SAVE' = int32(0x80131164) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CIRCULAR_EXPORT' = int32(0x801311A4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CIRCULAR_IMPORT' = int32(0x801311A5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CLASS_LOAD_EXCEPTION' = int32(0x801311AA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CLASS_NEEDS_NT_INTF' = int32(0x801311BF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CONVERT_FAIL' = int32(0x801311BB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CRM_INVALID_SIG' = int32(0x801311A9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CRM_NON_STATIC' = int32(0x801311A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_CTX_NESTED' = int32(0x80131162) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_DUPLICATE_IID' = int32(0x801311B6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_DUPLICATE_TYPE_NAME' = int32(0x8013116E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_ENUM_VALUE_INVALID' = int32(0x801311B5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_ERROR_MESSAGE' = int32(0x80131163) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_GENERICINST_SIGNATURE' = int32(0x8013117D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_GENERICPAR_SIGNATURE' = int32(0x8013117E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_INVALIDLCIDPARAM' = int32(0x80131176) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_INVALID_NAMESPACE' = int32(0x801311AD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_INVALID_TYPEINFO' = int32(0x80131160) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_INVALID_TYPEINFO_UNNAMED' = int32(0x80131161) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_LAYOUT_ERROR' = int32(0x801311AE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_LCIDONDISPONLYITF' = int32(0x80131177) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_LPTSTR_NOT_ALLOWED' = int32(0x801311B1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_MULTIPLE_LCIDS' = int32(0x8013116B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NONPUBLIC_FIELD' = int32(0x80131178) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NONVISIBLEVALUECLASS' = int32(0x801311B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NOTIUNKNOWN' = int32(0x801311AF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NO_CLSID_KEY' = int32(0x801311A3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NO_CRITICALHANDLE_ARRAYS' = int32(0x8013118C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NO_MSCOREE_TLB' = int32(0x80131168) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NO_NESTED_ARRAYS' = int32(0x801311B7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NO_SAFEHANDLE_ARRAYS' = int32(0x80131186) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_NULL_MODULE' = int32(0x801311A2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_PARAM_ERROR_NAMED' = int32(0x801311B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_PARAM_ERROR_UNNAMED' = int32(0x801311B9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_REFERENCED_TYPELIB' = int32(0x801311AC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_TLB_EXCEPTION' = int32(0x8013116A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_TYPED_REF' = int32(0x801311DA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_E_UNKNOWN_SIGNATURE' = int32(0x801311AB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_DUPLICATE_DISPID' = int32(0x0013117A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_GENERIC_BASE_TYPE' = int32(0x001311E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_GENERIC_TYPE' = int32(0x0013117F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_NONSEQUENTIALSTRUCT' = int32(0x80131172) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_REF_TYPE_AS_STRUCT' = int32(0x0013117C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_RESOLVEREFFAILED' = int32(0x80131174) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_TYPEINFO_IMPORTED' = int32(0x0013116C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_TYPE_EXPORTED' = int32(0x00131179) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_UNCONVERTABLE_ARGS' = int32(0x00131170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_UNCONVERTABLE_FIELD' = int32(0x00131171) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_I_USEIUNKNOWN' = int32(0x0013116F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_S_DUPLICATE_DISPID' = int32(0x001311B4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_S_NOSTDINTERFACE' = int32(0x001311B3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_S_REFERENCED_TYPELIB' = int32(0x001311AC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_BAD_SAFEARRAYFIELD_NO_ELEMENTVT' = int32(0x001311DE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_DEFAULT_INTF_NOT_VISIBLE' = int32(0x001311DB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_DUAL_NOT_DISPATCH' = int32(0x801311BC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_ENUM_VALUE_TOOBIG' = int32(0x001311D5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_EXPORTING_AUTO_LAYOUT' = int32(0x001311D9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_IENUM_CA_ON_IUNK' = int32(0x00131185) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_LAYOUTCLASS_AS_INTERFACE' = int32(0x001311DF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_LIBNOTREGISTERED' = int32(0x80131165) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_NON_INTEGRAL_CA_TYPE' = int32(0x00131184) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_NO_PROPS_IN_EVENTS' = int32(0x801311D3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TLBX_W_WARNING_MESSAGE' = int32(0x00131173) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_ACTION_UNKNOWN' = int32(0x800B0002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_BAD_DIGEST' = int32(0x80096010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_BASIC_CONSTRAINTS' = int32(0x80096019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_CERT_SIGNATURE' = int32(0x80096004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_COUNTER_SIGNER' = int32(0x80096003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_EXPLICIT_DISTRUST' = int32(0x800B0111) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_FAIL' = int32(0x800B010B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_FINANCIAL_CRITERIA' = int32(0x8009601E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_NOSIGNATURE' = int32(0x800B0100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_NO_SIGNER_CERT' = int32(0x80096002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_PROVIDER_UNKNOWN' = int32(0x800B0001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_SUBJECT_FORM_UNKNOWN' = int32(0x800B0003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_SUBJECT_NOT_TRUSTED' = int32(0x800B0004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_SYSTEM_ERROR' = int32(0x80096001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TRUST_E_TIME_STAMP' = int32(0x80096005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_AMBIGUOUSNAME' = int32(0x8002802C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_BADMODULEKIND' = int32(0x800288BD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_BUFFERTOOSMALL' = int32(0x80028016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_CANTCREATETMPFILE' = int32(0x80028CA3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_CANTLOADLIBRARY' = int32(0x80029C4A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_CIRCULARTYPE' = int32(0x80029C84) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_DLLFUNCTIONNOTFOUND' = int32(0x8002802F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_DUPLICATEID' = int32(0x800288C6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_ELEMENTNOTFOUND' = int32(0x8002802B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_FIELDNOTFOUND' = int32(0x80028017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_INCONSISTENTPROPFUNCS' = int32(0x80029C83) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_INVALIDID' = int32(0x800288CF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_INVALIDSTATE' = int32(0x80028029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_INVDATAREAD' = int32(0x80028018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_IOERROR' = int32(0x80028CA2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_LIBNOTREGISTERED' = int32(0x8002801D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_NAMECONFLICT' = int32(0x8002802D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_OUTOFBOUNDS' = int32(0x80028CA1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_QUALIFIEDNAMEDISALLOWED' = int32(0x80028028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_REGISTRYACCESS' = int32(0x8002801C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_SIZETOOBIG' = int32(0x800288C5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_TYPEMISMATCH' = int32(0x80028CA0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_UNDEFINEDTYPE' = int32(0x80028027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_UNKNOWNLCID' = int32(0x8002802E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_UNSUPFORMAT' = int32(0x80028019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'TYPE_E_WRONGTYPEKIND' = int32(0x8002802A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ADDR' = int32(0x80131881) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ADDR_BYREF' = int32(0x80131882) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ADDR_LITERAL' = int32(0x80131883) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARG' = int32(0x80131809) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARGLIST' = int32(0x8013187A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARG_NUM' = int32(0x80131868) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARRAY_ACCESS' = int32(0x80131875) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARRAY_FIELD' = int32(0x80131879) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARRAY_NAME_LONG' = int32(0x8013181A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARRAY_SD' = int32(0x80131877) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARRAY_SD_PTR' = int32(0x80131878) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ARRAY_V_STORE' = int32(0x80131876) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BACKWARD_BRANCH' = int32(0x801318DB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_APPDOMAIN' = int32(0x801318F2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_BRANCH' = int32(0x8013189F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_CONSTRAINED_PREFIX' = int32(0x801318CD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_JMP_TARGET' = int32(0x80131847) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_MD' = int32(0x801318F1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_PE' = int32(0x801318F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_READONLY_PREFIX' = int32(0x801318CC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BAD_VARARG' = int32(0x80131897) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BOX_PTR_TO_STACK' = int32(0x801318B1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_INTO_FIL' = int32(0x8013183F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_INTO_HND' = int32(0x8013183E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_INTO_TRY' = int32(0x8013183D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_OUTOF_FIL' = int32(0x80131842) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_OUTOF_FIN' = int32(0x80131843) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_OUTOF_HND' = int32(0x80131841) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_OUTOF_TRY' = int32(0x80131840) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_BR_TO_EXCEPTION' = int32(0x801318BE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALLCONV_NOT_GENERICINST' = int32(0x801318CA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALLI_VIRTUAL' = int32(0x801318A5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALLVIRT_STATIC' = int32(0x801318BC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALLVIRT_VALCLASS' = int32(0x80131886) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALL_ABSTRACT' = int32(0x801318A6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALL_CTOR' = int32(0x801318BF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALL_SIG' = int32(0x80131887) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALL_STATIC' = int32(0x80131888) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CALL_TO_VTYPE_BASE' = int32(0x801318DC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CATCH_BYREF' = int32(0x801318B9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CATCH_VALUE_TYPE' = int32(0x801318B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CIRCULAR_MVAR_CONSTRAINTS' = int32(0x801318CF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CIRCULAR_VAR_CONSTRAINTS' = int32(0x801318CE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CODE_SIZE_ZERO' = int32(0x80131896) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CONSTRAINED_CALL_WITH_NON_BYREF_THIS' = int32(0x801318D4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CONSTRAINED_OF_NON_VARIABLE_TYPE' = int32(0x801318D5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CTOR' = int32(0x80131889) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CTOR_MUL_INIT' = int32(0x8013188C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CTOR_OR_SUPER' = int32(0x8013188B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_CTOR_VIRT' = int32(0x8013188A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DEAD' = int32(0x8013187E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DLGT_BB' = int32(0x801318AB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DLGT_CTOR' = int32(0x801318AA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DLGT_LDFTN' = int32(0x801318AD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DLGT_PATTERN' = int32(0x801318AC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DLGT_SIG_I' = int32(0x801318B5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_DLGT_SIG_O' = int32(0x801318B6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ENDFILTER' = int32(0x8013183B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ENDFILTER_MISSING' = int32(0x8013183C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ENDFILTER_STACK' = int32(0x801318B4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_ENDFINALLY' = int32(0x8013183A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_EXCEPT' = int32(0x80131806) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_EXPECTED' = int32(0x8013180B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FALLTHRU' = int32(0x80131820) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FALLTHRU_EXCEP' = int32(0x80131835) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FALLTHRU_INTO_FIL' = int32(0x80131837) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FALLTHRU_INTO_HND' = int32(0x80131836) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIELD_ACCESS' = int32(0x8013187D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIELD_NO_STATIC' = int32(0x80131880) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIELD_OVERLAP' = int32(0x801318E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIELD_SIG' = int32(0x80131815) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIELD_STATIC' = int32(0x8013187F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_CONT_FIL' = int32(0x80131832) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_CONT_HND' = int32(0x80131831) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_CONT_TRY' = int32(0x80131830) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_EQ' = int32(0x8013182F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_GTEQ_CS' = int32(0x80131833) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_OVERLAP' = int32(0x8013182E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_PRECEED_HND' = int32(0x801318BA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIL_START' = int32(0x80131834) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FIN_OVERLAP' = int32(0x801318A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FLT_GTEQ_CS' = int32(0x80131825) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FLT_START' = int32(0x80131828) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FOUND' = int32(0x8013180A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_FTN_ABSTRACT' = int32(0x801318AE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_HNDEND_GT_CS' = int32(0x80131824) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_HND_EQ' = int32(0x8013182D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_HND_GTEQ_END' = int32(0x80131823) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_HND_OVERLAP' = int32(0x8013182C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_HND_START' = int32(0x80131827) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_HRESULT' = int32(0x80131801) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_INITLOCALS' = int32(0x801318BD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_INITONLY' = int32(0x80131884) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_INNERMOST_FIRST' = int32(0x801318A4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_INTERNAL' = int32(0x80131818) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LDFTN_CTOR' = int32(0x80131852) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LDSTR_OPERAND' = int32(0x8013186F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LDVIRTFTN_STATIC' = int32(0x801318BB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LEAVE' = int32(0x80131838) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LEXICAL_NESTING' = int32(0x801318A1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LOC' = int32(0x80131808) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LOC_BYNAME' = int32(0x8013180C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LOC_DEAD' = int32(0x80131866) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_LOC_NUM' = int32(0x80131867) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_METHOD_ACCESS' = int32(0x8013187C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_METHOD_END' = int32(0x8013189E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_NEWOBJ_OF_ABSTRACT_CLASS' = int32(0x801318DD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_NOT_IN_GC_HEAP' = int32(0x801318A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_OFFSET' = int32(0x80131802) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_OPCODE' = int32(0x80131803) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_OPERAND' = int32(0x80131804) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_PATH_LOC' = int32(0x80131848) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_PATH_STACK' = int32(0x8013184A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_PATH_STACK_DEPTH' = int32(0x8013184B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_PATH_THIS' = int32(0x80131849) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_PE_LOAD' = int32(0x801318F4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RA_PTR_TO_STACK' = int32(0x801318B7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_READONLY_ILLEGAL_WRITE' = int32(0x801318D7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_READONLY_IN_MKREFANY' = int32(0x801318D8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_READONLY_UNEXPECTED_CALLEE' = int32(0x801318D6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RETHROW' = int32(0x80131839) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_EMPTY' = int32(0x80131873) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_FROM_FIL' = int32(0x80131846) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_FROM_HND' = int32(0x80131845) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_FROM_TRY' = int32(0x80131844) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_MISSING' = int32(0x80131872) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_PTR_TO_STACK' = int32(0x80131870) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_SIG' = int32(0x80131814) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_UNINIT' = int32(0x80131874) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_RET_VOID' = int32(0x80131871) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG' = int32(0x8013188D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_ARRAY' = int32(0x8013188E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_ARRAY_BYREF' = int32(0x80131890) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_ARRAY_PTR' = int32(0x8013188F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_ARRAY_TB_AH' = int32(0x801318B3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_BYREF_BYREF' = int32(0x80131894) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_BYREF_TB_AH' = int32(0x801318B2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_CALLCONV' = int32(0x80131811) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_C_VC' = int32(0x801318AF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_ELEMTYPE' = int32(0x80131812) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_ELEM_PTR' = int32(0x80131891) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_FIELD_PARENT_INST' = int32(0x801318C9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_GENERICINST' = int32(0x801318C6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_METHOD_INST' = int32(0x801318C7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_METHOD_PARENT_INST' = int32(0x801318C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_MVAR_ARG' = int32(0x801318C5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_MVAR_PARAM' = int32(0x801318C3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_VARARG' = int32(0x80131892) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_VAR_ARG' = int32(0x801318C4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_VAR_PARAM' = int32(0x801318C2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_VC_C' = int32(0x801318B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_SIG_VOID' = int32(0x80131893) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_ARRAY_SD' = int32(0x80131862) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_BYREF' = int32(0x80131860) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_EMPTY' = int32(0x80131858) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_EXCEPTION' = int32(0x80131855) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_I_I4_I8' = int32(0x8013185A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_METHOD' = int32(0x80131861) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_NOT_EQ' = int32(0x80131853) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_NO_R_I8' = int32(0x8013185C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_NO_VALCLASS' = int32(0x80131865) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_NUMERIC' = int32(0x8013185D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_OBJREF' = int32(0x8013185E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_OVERFLOW' = int32(0x80131856) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_P_OBJREF' = int32(0x8013185F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_P_VALCLASS' = int32(0x80131864) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_P_VALCLASS_OBJREF_VAR' = int32(0x801318C1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_R_R4_R8' = int32(0x8013185B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_SLOT' = int32(0x80131807) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_TOO_LARGE' = int32(0x80131819) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_UNDERFLOW' = int32(0x80131857) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_UNEXPECTED' = int32(0x80131854) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_UNEXP_ARRAY' = int32(0x801318A7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_UNINIT' = int32(0x80131859) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_STACK_VALCLASS' = int32(0x80131863) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAILCALL_INSIDE_EH' = int32(0x801318DA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAIL_BYREF' = int32(0x80131899) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAIL_CALL' = int32(0x80131898) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAIL_RET' = int32(0x8013189A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAIL_RET_TYPE' = int32(0x8013189C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAIL_RET_VOID' = int32(0x8013189B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TAIL_STACK_EMPTY' = int32(0x8013189D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THIS' = int32(0x8013184C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THIS_UNINIT_BR' = int32(0x80131851) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THIS_UNINIT_EXCEP' = int32(0x8013184D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THIS_UNINIT_RET' = int32(0x8013184F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THIS_UNINIT_STORE' = int32(0x8013184E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THIS_UNINIT_V_RET' = int32(0x80131850) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_THROW' = int32(0x80131885) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN' = int32(0x80131805) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN_BAD_METHOD_SPEC' = int32(0x801318CB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN_RESOLVE' = int32(0x80131869) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN_TYPE' = int32(0x8013186A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN_TYPE_FIELD' = int32(0x8013186C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN_TYPE_MEMBER' = int32(0x8013186B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TOKEN_TYPE_SIG' = int32(0x8013186D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRYEND_GT_CS' = int32(0x80131822) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRY_EQ_HND_FIL' = int32(0x8013182A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRY_GTEQ_END' = int32(0x80131821) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRY_N_EMPTY_STACK' = int32(0x801318A9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRY_OVERLAP' = int32(0x80131829) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRY_SHARE_FIN_FAL' = int32(0x8013182B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TRY_START' = int32(0x80131826) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_TYPELOAD' = int32(0x801318F3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNALIGNED' = int32(0x801318A3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNALIGNED_ALIGNMENT' = int32(0x801318D9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNKNOWN_OPCODE' = int32(0x80131810) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNSATISFIED_BOX_OPERAND' = int32(0x801318D3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNSATISFIED_FIELD_PARENT_INST' = int32(0x801318D2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNSATISFIED_METHOD_INST' = int32(0x801318D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNSATISFIED_METHOD_PARENT_INST' = int32(0x801318D1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_UNVERIFIABLE' = int32(0x8013186E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_VALCLASS' = int32(0x8013187B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_VALCLASS_OBJREF_VAR' = int32(0x801318C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_VOLATILE' = int32(0x801318A2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VER_E_WRITE_RVA_STATIC' = int32(0x801318F5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VIEW_E_DRAW' = int32(0x80040140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VIEW_E_FIRST' = int32(0x80040140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VIEW_E_LAST' = int32(0x8004014F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VIEW_S_ALREADY_FROZEN' = int32(0x00040140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VIEW_S_FIRST' = int32(0x00040140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VIEW_S_LAST' = int32(0x0004014F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AROS_OSPLTFRMIDINVAL' = int32(0x80131257) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AR_NAMENULL' = int32(0x80131255) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AR_PROCID' = int32(0x801312A3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_ASOS_DUP' = int32(0x801312E8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_ASOS_OSPLTFRMIDINVAL' = int32(0x80131254) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_BADFLAGS' = int32(0x801312A5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_BADLOCALE' = int32(0x801312DD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_BADNAME' = int32(0x80131216) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_HASHALGID' = int32(0x801312A1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_MULTI' = int32(0x80131250) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_NAMENULL' = int32(0x80131251) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_PROCDUP' = int32(0x801312E7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_AS_PROCID' = int32(0x801312A2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_BLOB_INVALID' = int32(0x80131208) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CA_BADPARENT' = int32(0x80131B19) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CA_BADPROLOG' = int32(0x80131B1E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CA_BADSIG' = int32(0x80131B1C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CA_BADTYPE' = int32(0x80131B1A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CA_NOSIG' = int32(0x80131B1D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CA_NOTCTOR' = int32(0x80131B1B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CDRID_OUTOFRANGE' = int32(0x80131205) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CDTKN_OUTOFRANGE' = int32(0x80131204) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CL_BADPCKSZ' = int32(0x8013122A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CL_DUP' = int32(0x8013122B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CL_TDAUTO' = int32(0x80131229) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CL_TDINTF' = int32(0x80131253) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CN_BADTYPE' = int32(0x801312FB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CN_BLOBNOTNULL' = int32(0x801312C6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CN_BLOBNULL' = int32(0x801312C7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CN_PARENTRANGE' = int32(0x801312A4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CN_PARENTTYPE' = int32(0x801312DE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CT_BADIMPL' = int32(0x801312AC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CT_DUP' = int32(0x8013125E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CT_DUPTDNAME' = int32(0x801312D3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CT_NAMENULL' = int32(0x80131259) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_CT_NOTYPEDEFID' = int32(0x801312EA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_DS_BADFLAGS' = int32(0x801312D6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_DS_BADOWNER' = int32(0x801312D5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_DS_NOBLOB' = int32(0x801312D7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_BADARG' = int32(0x80131B23) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_BADRET' = int32(0x80131B22) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_BADTOKEN' = int32(0x80131B13) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_GENERIC_METHOD' = int32(0x80131B41) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_GENERIC_TYPE' = int32(0x80131B47) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_INSTANCE' = int32(0x80131B14) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EP_TOOMANYARGS' = int32(0x80131B21) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_ALIENMETHOD' = int32(0x801312D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_BADEVTYPE' = int32(0x801312CC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_BADMETHOD' = int32(0x801312CF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_BADSCOPE' = int32(0x801312C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_BADSEMANTICS' = int32(0x801312CE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_DUP' = int32(0x801312CB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_EVTYPENOTCLASS' = int32(0x801312CD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_FIRENOTVOID' = int32(0x801312DC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_NOADDON' = int32(0x801312D1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_NONAME' = int32(0x801312CA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_EV_NOREMOVEON' = int32(0x801312D2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_BADCALLINGCONV' = int32(0x80131249) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_BADPARENT' = int32(0x801312B4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_DEFLTNOTMARKED' = int32(0x80131274) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_DUP' = int32(0x8013124F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_FLDINIFACE' = int32(0x801312A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_GLOBALNORVA' = int32(0x8013126F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_INITONLYANDLITERAL' = int32(0x80131280) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_INSTINIFACE' = int32(0x8013126B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_LITERALNODEFAULT' = int32(0x80131B17) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_LITERALNOTSTATIC' = int32(0x80131281) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_MARKEDNODEFLT' = int32(0x80131273) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_MARKEDNOMARSHAL' = int32(0x80131271) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_MARSHALNOTMARKED' = int32(0x80131272) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_NAMENULL' = int32(0x8013124D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_NOTPUBINIFACE' = int32(0x8013126C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_NOTVALUERTSN' = int32(0x80131269) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_PARNIL' = int32(0x8013124E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_RVAHASNORVA' = int32(0x80131B01) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_RVAHASZERORVA' = int32(0x80131B02) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FD_VALUEPARNOTENUM' = int32(0x8013126A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FILE_BADFLAGS' = int32(0x801312EB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FILE_DUP' = int32(0x8013125C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FILE_NAMEFULLQLFD' = int32(0x8013125D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FILE_NAMENULL' = int32(0x80131258) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FILE_NULLHASH' = int32(0x801312EC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FILE_SYSNAME' = int32(0x80131217) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FL_BADOFFSET' = int32(0x8013122C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FL_DUP' = int32(0x80131231) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FL_FLDSTATIC' = int32(0x80131230) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FL_NOCL' = int32(0x8013122E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FL_TDNIL' = int32(0x8013122D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FL_TDNOTEXPLCT' = int32(0x8013122F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_BADACCESSFLAG' = int32(0x8013127F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_BADIMPLMAP' = int32(0x8013127A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_GLOBALITEM' = int32(0x8013129D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_GLOBALNOTPUBPRIVSC' = int32(0x8013126D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_GLOBALNOTSTATIC' = int32(0x8013126E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_MARKEDNOPINVOKE' = int32(0x80131278) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_MARKEDNOSECUR' = int32(0x80131275) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_PINVOKENOTMARKED' = int32(0x80131279) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_PINVOKENOTSTATIC' = int32(0x80131277) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_RTSNNOTSN' = int32(0x80131282) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FMD_SECURNOTMARKED' = int32(0x80131276) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FRVA_BADFIELD' = int32(0x80131B10) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FRVA_DUPFIELD' = int32(0x80131B12) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FRVA_DUPRVA' = int32(0x80131B11) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_FRVA_ZERORVA' = int32(0x80131B0F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GPC_DUP' = int32(0x80131B31) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GPC_NONCONTIGUOUS' = int32(0x80131B32) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GPC_OWNERNIL' = int32(0x80131B30) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_DUPNAME' = int32(0x80131B28) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_DUPNUMBER' = int32(0x80131B29) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_ILLEGAL_VARIANCE_FLAGS' = int32(0x80131B2E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_ILLEGAL_VARIANT_MVAR' = int32(0x80131B2D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_NAMENULL' = int32(0x80131B26) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_NONSEQ_BY_NUMBER' = int32(0x80131B2B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_NONSEQ_BY_OWNER' = int32(0x80131B2A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_OWNERNIL' = int32(0x80131B27) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_REFANDVALUETYPE' = int32(0x80131B2F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GP_UNEXPECTED_OWNER_FOR_VARIANT_VAR' = int32(0x80131B2C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_GUID_INVALID' = int32(0x80131207) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_BADIFACE' = int32(0x801312A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_BADIMPL' = int32(0x801312A7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_DUP' = int32(0x8013121F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_METHMULTIMPL' = int32(0x80131B25) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_METHNOTIMPL' = int32(0x80131B18) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_METHNOTIMPLTHISMOD' = int32(0x80131B52) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IFACE_NOTIFACE' = int32(0x80131B00) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IMAP_BADCALLCONV' = int32(0x8013127E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IMAP_BADIMPORTNAME' = int32(0x8013127D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IMAP_BADMEMBER' = int32(0x8013127C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_IMAP_BADMODREF' = int32(0x8013127B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_INTERRUPTED' = int32(0x801312FE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MAR_BADFLAGS' = int32(0x801312E9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MAR_BADIMPL' = int32(0x801312D8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MAR_BADOFFSET' = int32(0x801312D4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MAR_DUP' = int32(0x8013125F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MAR_NAMENULL' = int32(0x8013125B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MAR_NOTPUBPRIV' = int32(0x80131260) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ABSTANDFINAL' = int32(0x80131290) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ABSTANDIMPL' = int32(0x80131291) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ABSTANDPINVOKE' = int32(0x80131292) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ABSTNOTVIRT' = int32(0x80131293) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ABSTPARNOTABST' = int32(0x80131283) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ARITYZERO' = int32(0x80131B43) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_BADCALLINGCONV' = int32(0x80131239) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_BADHEADER' = int32(0x80131B20) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_BADLOCALSIGTOK' = int32(0x80131B1F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_BADRVA' = int32(0x80131B16) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CCTORCALLCONV' = int32(0x801312AE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CCTORHASARGS' = int32(0x801312AB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CCTORNOTSTATIC' = int32(0x8013128C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORABST' = int32(0x8013128B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORININTF' = int32(0x80131286) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORNOTSNRTSN' = int32(0x80131289) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORNOTVOID' = int32(0x801312DB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORPINVOKE' = int32(0x801312F1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORSTATIC' = int32(0x80131288) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORVIRT' = int32(0x8013128A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_CTORZERORVA' = int32(0x80131270) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_DUP' = int32(0x8013124C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_FINNOTVIRT' = int32(0x8013128E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GENERIC_BADCALLCONV' = int32(0x80131B3F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GENERIC_CCTOR' = int32(0x80131B3C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GENERIC_CTOR' = int32(0x80131B3D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GENERIC_GLOBAL' = int32(0x80131B40) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GENERIC_IMPORT' = int32(0x80131B3E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GLOBALABSTORVIRT' = int32(0x80131297) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GLOBALCTORCCTOR' = int32(0x80131287) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_GPMISMATCH' = int32(0x80131B46) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_INVALIDSEMANTICS' = int32(0x8013129A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_MISSARITY' = int32(0x80131B42) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_MULTIPLESEMANTICS' = int32(0x80131299) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_MULTSEMANTICFLAGS' = int32(0x8013129E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NAMENULL' = int32(0x8013124A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOARGCNT' = int32(0x8013123C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOSEMANTICFLAGS' = int32(0x8013129F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOTABSTBADFLAGSRVA' = int32(0x80131295) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOTABSTNOTIMPL' = int32(0x80131294) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOTPUBININTF' = int32(0x80131285) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOTSTATABSTININTF' = int32(0x80131284) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_NOTTHISNOTSTATIC' = int32(0x8013123B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARAMOUTOFSEQ' = int32(0x801312B5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARASEQTOOBIG' = int32(0x801312B6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARMDEFLTNOTMARKED' = int32(0x801312BB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARMMARKEDNODEFLT' = int32(0x801312BA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARMMARKEDNOMARSHAL' = int32(0x801312B7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARMMARSHALNOTMARKED' = int32(0x801312B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PARNIL' = int32(0x8013124B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_PRIVSCOPENORVA' = int32(0x80131296) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_RVAANDIMPLMAP' = int32(0x80131B03) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_SEMANTICSNOTEXIST' = int32(0x8013129B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_STATANDFINORVIRT' = int32(0x8013128F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_SYNCMETHODINVTYPE' = int32(0x801312E5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_THISSTATIC' = int32(0x8013123A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MD_ZERORVA' = int32(0x8013128D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_ALIENBODY' = int32(0x801312AD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_ARITYMISMATCH' = int32(0x80131B4A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_BADBODY' = int32(0x801312B2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_BADCLASS' = int32(0x801312AF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_BADDECL' = int32(0x801312B1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_BODYSTATIC' = int32(0x80131218) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_CLASSISINTF' = int32(0x801312B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_DECLFINAL' = int32(0x8013121C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_DECLNOTGENERIC' = int32(0x80131B48) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_DECLNOTVIRT' = int32(0x8013129C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_DECLPRIV' = int32(0x80131215) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_DUP' = int32(0x801312B3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_IMPLNOTGENERIC' = int32(0x80131B49) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MI_SIGMISMATCH' = int32(0x801312F4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MODREF_DUP' = int32(0x80131233) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MODREF_NAMENULL' = int32(0x80131232) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MOD_MULTI' = int32(0x80131209) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MOD_NAMEFULLQLFD' = int32(0x801312EE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MOD_NONAME' = int32(0x801312ED) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MOD_NULLMVID' = int32(0x8013120A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_BADCALLINGCONV' = int32(0x80131224) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_DELNAME' = int32(0x80131222) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_DUP' = int32(0x80131228) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_NAMEDIFF' = int32(0x80131226) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_NAMENULL' = int32(0x80131220) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_NOTVARARG' = int32(0x80131225) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_PARNIL' = int32(0x80131223) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_SIGDIFF' = int32(0x80131227) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_VARARGCALLINGCONV' = int32(0x801312DA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MR_VTBLNAME' = int32(0x80131221) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_ARITYMISMATCH' = int32(0x80131B38) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_ARITYZERO' = int32(0x80131B45) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_BADCALLINGCONV' = int32(0x80131B35) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_BYREFINST' = int32(0x80131B4D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_DUP' = int32(0x80131B34) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_METHODNIL' = int32(0x80131B33) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_METHODNOTGENERIC' = int32(0x80131B39) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_MISSARG' = int32(0x80131B37) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_MS_MISSARITY' = int32(0x80131B36) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_NC_BADENCLOSER' = int32(0x80131B0C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_NC_BADNESTED' = int32(0x80131B0B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_NC_DUP' = int32(0x80131B0D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_NC_DUPENCLOSER' = int32(0x80131B0E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_NOTINIT' = int32(0x801312FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PD_BADFLAGS' = int32(0x8013121E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_ALIENMETHOD' = int32(0x801312C5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_BADCALLINGCONV' = int32(0x801312C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_BADMETHOD' = int32(0x801312C4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_BADSCOPE' = int32(0x801312BC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_BADSEMANTICS' = int32(0x801312C3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_DEFLTNOTMARKED' = int32(0x801312C2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_DUP' = int32(0x801312BF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_MARKEDNODEFLT' = int32(0x801312C1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_NONAME' = int32(0x801312BD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_PR_NOSIG' = int32(0x801312BE) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_RID_OUTOFRANGE' = int32(0x80131203) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIGNODATA' = int32(0x80131238) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIGNULL' = int32(0x80131237) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_ARITYMISMATCH' = int32(0x80131B3B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_ARITYZERO' = int32(0x80131B44) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_BADELTYPE' = int32(0x80131247) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_BADTOKTYPE' = int32(0x80131B51) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_BADVOID' = int32(0x80131B24) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_BYREFINFIELD' = int32(0x801312E4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_BYREFINST' = int32(0x80131B4C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_LASTSENTINEL' = int32(0x801312E2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_LONGFORM' = int32(0x80131298) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSARG' = int32(0x801312E3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSARITY' = int32(0x80131B3A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSELTYPE' = int32(0x8013123D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSFPTR' = int32(0x80131240) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSFPTRARGCNT' = int32(0x80131241) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSLBND' = int32(0x80131246) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSNLBND' = int32(0x80131245) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSNSIZE' = int32(0x80131243) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSRANK' = int32(0x80131242) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSSIZE' = int32(0x80131244) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSTKN' = int32(0x8013123E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MISSVASIZE' = int32(0x80131248) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_MULTSENTINELS' = int32(0x801312E1) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_SENTINMETHODDEF' = int32(0x801312DF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_SENTMUSTVARARG' = int32(0x801312E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_TKNBAD' = int32(0x8013123F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_SIG_TOKTYPEMISMATCH' = int32(0x80131252) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_STRING_INVALID' = int32(0x80131206) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_BADFIELDLST' = int32(0x801312FA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_BADMETHODLST' = int32(0x801312F9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_DLTNORTSPCL' = int32(0x80131213) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_DUPGUID' = int32(0x8013120F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_DUPNAME' = int32(0x8013120E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENCLNOTNESTED' = int32(0x80131256) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMFLDBADTYPE' = int32(0x80131B15) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMFLDNOTLIT' = int32(0x80131265) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMFLDNOTST' = int32(0x80131264) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMFLDSIGMISMATCH' = int32(0x80131267) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMHASEVENT' = int32(0x801312F8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMHASMETHODS' = int32(0x801312F5) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMHASPROP' = int32(0x801312F7) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMIMPLIFACE' = int32(0x801312F6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMMULINSTFLD' = int32(0x801312FD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMNOINSTFLD' = int32(0x801312FC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMNOLITFLDS' = int32(0x80131266) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMNOVALUE' = int32(0x80131261) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMVALNOT1ST' = int32(0x80131268) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMVALNOTSN' = int32(0x80131263) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_ENUMVALSTATIC' = int32(0x80131262) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTBADTYPESPEC' = int32(0x80131B4B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTENDSCHILD' = int32(0x8013125A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTENDSIFACE' = int32(0x801312F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTENDSITSELF' = int32(0x80131B05) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTENDSSEALED' = int32(0x80131212) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTRAFLAGS' = int32(0x80131B04) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTTRRES' = int32(0x80131236) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_EXTTYPESPEC' = int32(0x80131B07) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_GENERICHASEXPLAYOUT' = int32(0x80131B50) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_IFACEGUIDNULL' = int32(0x8013121B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_IFACENOTABS' = int32(0x80131219) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_IFACEPARNOTNIL' = int32(0x8013121A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_IFACESEALED' = int32(0x80131B0A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_MARKEDNOSECUR' = int32(0x801312AA) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_NAMENULL' = int32(0x8013120D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_NAMETOOLONG' = int32(0x801312E6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_NESTEDNOENCL' = int32(0x80131235) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_NOTIFACEOBJEXTNULL' = int32(0x80131210) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_OBJEXTENDSNONNULL' = int32(0x80131211) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_RTSPCLNOTDLT' = int32(0x80131214) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_RTSPCLNOTSPCL' = int32(0x801312EF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_SECURNOTMARKED' = int32(0x801312A9) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_SYSENUMNOTCLASS' = int32(0x801312F2) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_SYSENUMNOTEXTVTYPE' = int32(0x801312F3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_SYSVTNOTEXTOBJ' = int32(0x80131B06) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_VTNOSIZE' = int32(0x80131B09) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TD_VTNOTSEAL' = int32(0x8013121D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TR_BADSCOPE' = int32(0x80131234) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TR_DUP' = int32(0x8013120C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TR_HASTYPEDEF' = int32(0x801312A6) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TR_NAMENULL' = int32(0x8013120B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TS_EMPTY' = int32(0x80131B4E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_E_TS_HASSENTINALS' = int32(0x80131B4F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_S_ERR' = int32(0x00131201) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_S_WRN' = int32(0x00131200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'VLDTR_S_WRNERR' = int32(0x00131202) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_ABORTED' = int32(0x8004D019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_ABORTING' = int32(0x8004D029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_ALREADYINPROGRESS' = int32(0x8004D018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_ALREADYOTHERSINGLEPHASE' = int32(0x8004D000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_CANTRETAIN' = int32(0x8004D001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_CLERKEXISTS' = int32(0x8004D081) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_CLERKNOTFOUND' = int32(0x8004D080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_COMMITFAILED' = int32(0x8004D002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_COMMITPREVENTED' = int32(0x8004D003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_CONNECTION_DENIED' = int32(0x8004D01D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_CONNECTION_DOWN' = int32(0x8004D01C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_DEST_TMNOTAVAILABLE' = int32(0x8004D022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_FIRST' = int32(0x8004D000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_HEURISTICABORT' = int32(0x8004D004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_HEURISTICCOMMIT' = int32(0x8004D005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_HEURISTICDAMAGE' = int32(0x8004D006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_HEURISTICDANGER' = int32(0x8004D007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_INDOUBT' = int32(0x8004D016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_INVALIDCOOKIE' = int32(0x8004D015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_INVALIDLSN' = int32(0x8004D084) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_ISOLATIONLEVEL' = int32(0x8004D008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_LAST' = int32(0x8004D029) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_LOGFULL' = int32(0x8004D01A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NETWORK_TX_DISABLED' = int32(0x8004D024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOASYNC' = int32(0x8004D009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOENLIST' = int32(0x8004D00A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOIMPORTOBJECT' = int32(0x8004D014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOISORETAIN' = int32(0x8004D00B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NORESOURCE' = int32(0x8004D00C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOTCURRENT' = int32(0x8004D00D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOTIMEOUT' = int32(0x8004D017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOTRANSACTION' = int32(0x8004D00E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_NOTSUPPORTED' = int32(0x8004D00F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_PARTNER_NETWORK_TX_DISABLED' = int32(0x8004D025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_RECOVERYINPROGRESS' = int32(0x8004D082) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_REENLISTTIMEOUT' = int32(0x8004D01E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_REPLAYREQUEST' = int32(0x8004D085) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_TIP_CONNECT_FAILED' = int32(0x8004D01F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_TIP_DISABLED' = int32(0x8004D023) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_TIP_PROTOCOL_ERROR' = int32(0x8004D020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_TIP_PULL_FAILED' = int32(0x8004D021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_TMNOTAVAILABLE' = int32(0x8004D01B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_TRANSACTIONCLOSED' = int32(0x8004D083) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_UNABLE_TO_LOAD_DTC_PROXY' = int32(0x8004D028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_UNABLE_TO_READ_DTC_CONFIG' = int32(0x8004D027) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_UNKNOWNRMGRID' = int32(0x8004D010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_WRONGSTATE' = int32(0x8004D011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_WRONGUOW' = int32(0x8004D012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_XA_TX_DISABLED' = int32(0x8004D026) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_E_XTIONEXISTS' = int32(0x8004D013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_ABORTING' = int32(0x0004D008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_ALLNORETAIN' = int32(0x0004D007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_ASYNC' = int32(0x0004D000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_DEFECT' = int32(0x0004D001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_FIRST' = int32(0x0004D000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_LAST' = int32(0x0004D010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_LASTRESOURCEMANAGER' = int32(0x0004D010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_LOCALLY_OK' = int32(0x0004D00A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_MADECHANGESCONTENT' = int32(0x0004D005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_MADECHANGESINFORM' = int32(0x0004D006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_OKINFORM' = int32(0x0004D004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_READONLY' = int32(0x0004D002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_SINGLEPHASE' = int32(0x0004D009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XACT_S_SOMENORETAIN' = int32(0x0004D003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XENROLL_E_CANNOT_ADD_ROOT_CERT' = int32(0x80095001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XENROLL_E_KEYSPEC_SMIME_MISMATCH' = int32(0x80095005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XENROLL_E_KEY_NOT_EXPORTABLE' = int32(0x80095000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XENROLL_E_RESPONSE_KA_HASH_MISMATCH' = int32(0x80095004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND' = int32(0x80095002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug'.'HResult' 'XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH' = int32(0x80095003) - } -} -.namespace 'Microsoft.Samples.Debugging.CorDebug.NativeApi' -{ - .class public sequential sealed 'COR_ACTIVE_FUNCTION' - extends ['mscorlib']'System'.'ValueType' - { - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain' - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' 'pModule' - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction2' 'pFunction' - .field public uint32 'ilOffset' - .field public uint32 'Flags' - } - .class public sequential sealed 'COR_ARRAY_LAYOUT' - extends ['mscorlib']'System'.'ValueType' - { - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'componentID' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'componentType' - .field public int32 'firstElementOffset' - .field public int32 'elementSize' - .field public int32 'countOffset' - .field public int32 'rankSize' - .field public int32 'numRanks' - .field public int32 'rankOffset' - } - .class public sequential sealed 'COR_DEBUG_IL_TO_NATIVE_MAP' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'ilOffset' - .field public uint32 'nativeStartOffset' - .field public uint32 'nativeEndOffset' - } - .class public sequential sealed 'COR_DEBUG_STEP_RANGE' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'startOffset' - .field public uint32 'endOffset' - } - .class public sequential sealed 'COR_FIELD' - extends ['mscorlib']'System'.'ValueType' - { - .field public int32 'token' - .field public int32 'offset' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'id' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'fieldType' - } - .class public sequential sealed 'COR_GC_REFERENCE' - extends ['mscorlib']'System'.'ValueType' - { - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'Domain' - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' 'Location' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'Type' - .field public uint64 'ExtraData' - } - .class public sequential sealed 'COR_HEAPINFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'areGCStructuresValid' - .field public uint32 'pointerSize' - .field public uint32 'numHeaps' - .field public uint32 'concurrent' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGCType' 'gcType' - } - .class public sequential sealed 'COR_HEAPOBJECT' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint64 'address' - .field public uint64 'size' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'type' - } - .class public sequential sealed 'COR_IL_MAP' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'oldOffset' - .field public uint32 'newOffset' - .field public int32 'fAccurate' - } - .class public sequential sealed 'COR_SEGMENT' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint64 'start' - .field public uint64 'end' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGenerationTypes' 'type' - .field public uint32 'heap' - } - .class public sequential sealed 'COR_TYPEID' - extends ['mscorlib']'System'.'ValueType' - implements class ['mscorlib']'System'.'IEquatable`1' - { - .method public virtual hidebysig - instance int32 'GetHashCode'() - { - ret - } - .method public virtual hidebysig - instance bool 'Equals'(object 'obj') - { - ret - } - .method public final virtual hidebysig newslot - instance bool 'Equals'(valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'other') - { - ret - } - .field public uint64 'token1' - .field public uint64 'token2' - } - .class public sequential sealed 'COR_TYPE_LAYOUT' - extends ['mscorlib']'System'.'ValueType' - { - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'parentID' - .field public int32 'objectSize' - .field public int32 'numFields' - .field public int32 'boxOffset' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'type' - } - .class public sealed 'CorComponentType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorComponentType' 'CorComponentGCRef' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorComponentType' 'CorComponentPrimitive' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorComponentType' 'CorComponentValueClass' = int32(0x00000001) - } - .class public interface abstract import 'CorDebug' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'CoClassAttribute'::.ctor(class ['mscorlib']'System'.'Type') = (01 00 3C 4D 69 63 72 6F 73 6F 66 74 2E 53 61 6D 70 6C 65 73 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 43 6F 72 44 65 62 75 67 43 6C 61 73 73 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 31 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - } - .class public sequential sealed 'CorDebugBlockingObject' - extends ['mscorlib']'System'.'ValueType' - { - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' 'BlockingObject' - .field public uint32 'Timeout' - .field public valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugBlockingReason' 'BlockingReason' - } - .class public sealed 'CorDebugBlockingReason' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugBlockingReason' 'MonitorCriticalSection' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugBlockingReason' 'MonitorEvent' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugBlockingReason' 'None' = int32(0x00000000) - } - .class public sealed 'CorDebugChainReason' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_CLASS_INIT' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_CONTEXT_POLICY' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_CONTEXT_SWITCH' = int32(0x00000400) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_DEBUGGER_EVAL' = int32(0x00000200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_ENTER_MANAGED' = int32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_ENTER_UNMANAGED' = int32(0x00000100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_EXCEPTION_FILTER' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_FUNC_EVAL' = int32(0x00000800) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_INTERCEPTION' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_NONE' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_PROCESS_START' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_SECURITY' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason' 'CHAIN_THREAD_START' = int32(0x00000040) - } - .class public import 'CorDebugClass' - extends ['mscorlib']'System'.'Object' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebug' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ClassInterfaceAttribute'::.ctor(int16) = (01 00 00 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 36 66 65 66 34 34 64 30 2D 33 39 65 37 2D 34 63 37 37 2D 62 65 38 65 2D 63 39 66 38 63 66 39 38 38 36 33 30 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'TypeLibTypeAttribute'::.ctor(int16) = (01 00 02 00 00 00) - .method public virtual hidebysig newslot - instance void 'CanLaunchOrAttach'([in] uint32 'dwProcessId', [in] int32 'win32DebuggingEnabled') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'CreateProcess'([in] string marshal(lpwstr) 'lpApplicationName', [in] string marshal(lpwstr) 'lpCommandLine', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpProcessAttributes', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpThreadAttributes', [in] int32 'bInheritHandles', [in] uint32 'dwCreationFlags', [in] native int 'lpEnvironment', [in] string marshal(lpwstr) 'lpCurrentDirectory', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'STARTUPINFO' 'lpStartupInfo', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'PROCESS_INFORMATION' 'lpProcessInformation', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugCreateProcessFlags' 'debuggingFlags', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'DebugActiveProcess'([in] uint32 'id', [in] int32 'win32Attach', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'EnumerateProcesses'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcessEnum'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'GetProcess'([in] uint32 'dwProcessId', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'Initialize'() - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'SetManagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback' marshal(interface) 'pCallback') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'SetUnmanagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugUnmanagedCallback' marshal(interface) 'pCallback') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'Terminate'() - runtime internalcall - { - } - .method public hidebysig specialname - instance void '.ctor'() - runtime internalcall - { - } - } - .class public sealed 'CorDebugCreateProcessFlags' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugCreateProcessFlags' 'DEBUG_NO_SPECIAL_OPTIONS' = int32(0x00000000) - } - .class public sealed 'CorDebugExceptionCallbackType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionCallbackType' 'DEBUG_EXCEPTION_CATCH_HANDLER_FOUND' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionCallbackType' 'DEBUG_EXCEPTION_FIRST_CHANCE' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionCallbackType' 'DEBUG_EXCEPTION_UNHANDLED' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionCallbackType' 'DEBUG_EXCEPTION_USER_FIRST_CHANCE' = int32(0x00000002) - } - .class public sequential sealed 'CorDebugExceptionObjectStackFrame' - extends ['mscorlib']'System'.'ValueType' - { - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' 'pModule' - .field public uint64 'ip' - .field public int32 'methodDef' - .field public bool 'isLastForeignException' - } - .class public sealed 'CorDebugExceptionUnwindCallbackType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionUnwindCallbackType' 'DEBUG_EXCEPTION_INTERCEPTED' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionUnwindCallbackType' 'DEBUG_EXCEPTION_UNWIND_BEGIN' = int32(0x00000001) - } - .class public sealed 'CorDebugFilterFlagsWindows' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugFilterFlagsWindows' 'IS_FIRST_CHANCE' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugFilterFlagsWindows' 'None' = int32(0x00000000) - } - .class public sealed 'CorDebugGCType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGCType' 'CorDebugServerGC' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGCType' 'CorDebugWorkstationGC' = int32(0x00000000) - } - .class public sealed 'CorDebugGenerationTypes' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGenerationTypes' 'CorDebug_Gen0' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGenerationTypes' 'CorDebug_Gen1' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGenerationTypes' 'CorDebug_Gen2' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGenerationTypes' 'CorDebug_LOH' = int32(0x00000003) - } - .class public sequential sealed 'CorDebugGuidToTypeMapping' - extends ['mscorlib']'System'.'ValueType' - { - .field public valuetype ['mscorlib']'System'.'Guid' 'iid' - .field public class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType' 'icdType' - } - .class public sealed 'CorDebugHandleType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugHandleType' 'HANDLE_STRONG' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugHandleType' 'HANDLE_WEAK_TRACK_RESURRECTION' = int32(0x00000002) - } - .class public sealed 'CorDebugIntercept' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_ALL' = int32(0x0000FFFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_CLASS_INIT' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_CONTEXT_POLICY' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_EXCEPTION_FILTER' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_INTERCEPTION' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_NONE' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'INTERCEPT_SECURITY' = int32(0x00000004) - } - .class public sealed 'CorDebugInternalFrameType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_APPDOMAIN_TRANSITION' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_CLASS_INIT' = int32(0x00000007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_EXCEPTION' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_FUNC_EVAL' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_INTERNALCALL' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_JIT_COMPILATION' = int32(0x0000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_LIGHTWEIGHT_FUNCTION' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_M2U' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_NONE' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_SECURITY' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType' 'STUBFRAME_U2M' = int32(0x00000002) - } - .class public sealed 'CorDebugMDAFlags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMDAFlags' 'MDA_FLAG_SLIP' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMDAFlags' 'None' = int32(0x00000000) - } - .class public interface abstract import 'CorDebugManager' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'CoClassAttribute'::.ctor(class ['mscorlib']'System'.'Type') = (01 00 43 4D 69 63 72 6F 73 6F 66 74 2E 53 61 6D 70 6C 65 73 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 43 6F 72 44 65 62 75 67 4D 61 6E 61 67 65 72 43 6C 61 73 73 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 31 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - } - .class public import 'CorDebugManagerClass' - extends ['mscorlib']'System'.'Object' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugManager' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ClassInterfaceAttribute'::.ctor(int16) = (01 00 00 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 42 37 36 42 31 37 45 46 2D 31 36 46 41 2D 34 33 41 33 2D 42 41 42 46 2D 44 42 36 45 35 39 34 33 39 45 42 30 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'TypeLibTypeAttribute'::.ctor(int16) = (01 00 02 00 00 00) - .method public virtual hidebysig newslot - instance void 'CanLaunchOrAttach'([in] uint32 'dwProcessId', [in] int32 'win32DebuggingEnabled') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'CreateProcess'([in] string marshal(lpwstr) 'lpApplicationName', [in] string marshal(lpwstr) 'lpCommandLine', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpProcessAttributes', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpThreadAttributes', [in] int32 'bInheritHandles', [in] uint32 'dwCreationFlags', [in] native int 'lpEnvironment', [in] string marshal(lpwstr) 'lpCurrentDirectory', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'STARTUPINFO' 'lpStartupInfo', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'PROCESS_INFORMATION' 'lpProcessInformation', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugCreateProcessFlags' 'debuggingFlags', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot - instance void 'DebugActiveProcess'([in] uint32 'id', [in] int32 'win32Attach', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'EnumerateProcesses'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcessEnum'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'GetProcess'([in] uint32 'dwProcessId', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'Initialize'() - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'SetManagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback' marshal(interface) 'pCallback') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'SetUnmanagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugUnmanagedCallback' marshal(interface) 'pCallback') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'Terminate'() - runtime internalcall - { - } - .method public hidebysig specialname - instance void '.ctor'() - runtime internalcall - { - } - } - .class public sealed 'CorDebugMappingResult' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult' 'MAPPING_APPROXIMATE' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult' 'MAPPING_EPILOG' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult' 'MAPPING_EXACT' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult' 'MAPPING_NO_INFO' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult' 'MAPPING_PROLOG' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult' 'MAPPING_UNMAPPED_ADDRESS' = int32(0x00000008) - } - .class public sealed 'CorDebugNGENPolicyFlags' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugNGENPolicyFlags' 'DISABLE_LOCAL_NIC' = int32(0x00000001) - } - .class public sealed 'CorDebugPlatform' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'CORDB_PLATFORM_MAC_PPC' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'CORDB_PLATFORM_MAC_X86' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'CORDB_PLATFORM_WINDOWS_AMD64' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'CORDB_PLATFORM_WINDOWS_ARM' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'CORDB_PLATFORM_WINDOWS_IA64' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'CORDB_PLATFORM_WINDOWS_X86' = int32(0x00000000) - } - .class public sealed 'CorDebugRecordFormat' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRecordFormat' 'FORMAT_WINDOWS_EXCEPTIONRECORD32' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRecordFormat' 'FORMAT_WINDOWS_EXCEPTIONRECORD64' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRecordFormat' 'None' = int32(0x00000000) - } - .class public sealed 'CorDebugRegister' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R10' = int32(0x0000000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R11' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R12' = int32(0x0000000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R13' = int32(0x0000000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R14' = int32(0x0000000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R15' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R8' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_R9' = int32(0x0000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RAX' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RBP' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RBX' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RCX' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RDI' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RDX' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RIP' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RSI' = int32(0x00000007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_RSP' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM0' = int32(0x00000011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM1' = int32(0x00000012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM10' = int32(0x0000001B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM11' = int32(0x0000001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM12' = int32(0x0000001D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM13' = int32(0x0000001E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM14' = int32(0x0000001F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM15' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM2' = int32(0x00000013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM3' = int32(0x00000014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM4' = int32(0x00000015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM5' = int32(0x00000016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM6' = int32(0x00000017) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM7' = int32(0x00000018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM8' = int32(0x00000019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_AMD64_XMM9' = int32(0x0000001A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_LR' = int32(0x0000000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_PC' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R0' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R1' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R10' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R11' = int32(0x0000000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R12' = int32(0x0000000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R2' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R3' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R4' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R5' = int32(0x00000007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R6' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R7' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R8' = int32(0x0000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_R9' = int32(0x0000000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_ARM_SP' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_FRAME_POINTER' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_IA64_BSP' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_IA64_F0' = int32(0x00000083) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_IA64_R0' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_INSTRUCTION_POINTER' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_STACK_POINTER' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_EAX' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_EBP' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_EBX' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_ECX' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_EDI' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_EDX' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_EIP' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_ESI' = int32(0x00000007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_ESP' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_0' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_1' = int32(0x0000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_2' = int32(0x0000000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_3' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_4' = int32(0x0000000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_5' = int32(0x0000000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_6' = int32(0x0000000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'REGISTER_X86_FPSTACK_7' = int32(0x00000010) - } - .class public sealed 'CorDebugSetContextFlag' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugSetContextFlag' 'SET_CONTEXT_FLAG_ACTIVE_FRAME' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugSetContextFlag' 'SET_CONTEXT_FLAG_UNWIND_FRAME' = int32(0x00000002) - } - .class public sealed 'CorDebugStateChange' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStateChange' 'FLUSH_ALL' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStateChange' 'None' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStateChange' 'PROCESS_RUNNING' = int32(0x00000001) - } - .class public sealed 'CorDebugStepReason' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_CALL' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_EXCEPTION_FILTER' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_EXCEPTION_HANDLER' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_EXIT' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_INTERCEPT' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_NORMAL' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'STEP_RETURN' = int32(0x00000001) - } - .class public sealed 'CorDebugThreadState' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState' 'THREAD_RUN' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState' 'THREAD_SUSPEND' = int32(0x00000001) - } - .class public sealed 'CorDebugUnmappedStop' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_ALL' = int32(0x0000FFFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_EPILOG' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_NONE' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_NO_MAPPING_INFO' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_OTHER_UNMAPPED' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_PROLOG' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'STOP_UNMANAGED' = int32(0x00000010) - } - .class public sealed 'CorDebugUserState' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_BACKGROUND' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_NONE' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_STOPPED' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_STOP_REQUESTED' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_SUSPENDED' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_SUSPEND_REQUESTED' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_UNSAFE_POINT' = int32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_UNSTARTED' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState' 'USER_WAIT_SLEEP_JOIN' = int32(0x00000020) - } - .class public sealed 'CorElementType' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_ARRAY' = int32(0x00000014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_BOOLEAN' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_BYREF' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_CHAR' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_CLASS' = int32(0x00000012) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_CMOD_OPT' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_CMOD_REQD' = int32(0x0000001F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_END' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_FNPTR' = int32(0x0000001B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_GENERICINST' = int32(0x00000015) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_I' = int32(0x00000018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_I1' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_I2' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_I4' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_I8' = int32(0x0000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_INTERNAL' = int32(0x00000021) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_MAX' = int32(0x00000022) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_MODIFIER' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_MVAR' = int32(0x0000001E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_OBJECT' = int32(0x0000001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_PINNED' = int32(0x00000045) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_PTR' = int32(0x0000000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_R4' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_R8' = int32(0x0000000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_SENTINEL' = int32(0x00000041) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_STRING' = int32(0x0000000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_SZARRAY' = int32(0x0000001D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_TYPEDBYREF' = int32(0x00000016) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_U' = int32(0x00000019) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_U1' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_U2' = int32(0x00000007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_U4' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_U8' = int32(0x0000000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_VALUETYPE' = int32(0x00000011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_VAR' = int32(0x00000013) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'ELEMENT_TYPE_VOID' = int32(0x00000001) - } - .class public sealed 'CorGCReferenceType' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleAll' = int32(0x7FFFFFFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrong' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrongAsyncPinned' = int32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrongDependent' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrongOnly' = int32(0x000001E3) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrongPinning' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrongRefCount' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleStrongSizedByref' = int32(0x00000100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleWeakLong' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleWeakOnly' = int32(0x0000001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleWeakRefCount' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorHandleWeakShort' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorReferenceFinalizer' = int32(0x80000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorGCReferenceType' 'CorReferenceStack' = int32(0x80000001) - } - .class public interface abstract import 'EmbeddedCLRCorDebug' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'CoClassAttribute'::.ctor(class ['mscorlib']'System'.'Type') = (01 00 47 4D 69 63 72 6F 73 6F 66 74 2E 53 61 6D 70 6C 65 73 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 45 6D 62 65 64 64 65 64 43 4C 52 43 6F 72 44 65 62 75 67 43 6C 61 73 73 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 31 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - } - .class public import 'EmbeddedCLRCorDebugClass' - extends ['mscorlib']'System'.'Object' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'EmbeddedCLRCorDebug' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ClassInterfaceAttribute'::.ctor(int16) = (01 00 00 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 31 31 46 31 32 35 34 2D 42 43 37 45 2D 34 41 46 35 2D 42 39 41 41 2D 30 36 37 33 30 38 44 38 33 44 44 31 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'TypeLibTypeAttribute'::.ctor(int16) = (01 00 02 00 00 00) - .method public virtual hidebysig newslot - instance void 'CanLaunchOrAttach'([in] uint32 'dwProcessId', [in] int32 'win32DebuggingEnabled') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'CreateProcess'([in] string marshal(lpwstr) 'lpApplicationName', [in] string marshal(lpwstr) 'lpCommandLine', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpProcessAttributes', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpThreadAttributes', [in] int32 'bInheritHandles', [in] uint32 'dwCreationFlags', [in] native int 'lpEnvironment', [in] string marshal(lpwstr) 'lpCurrentDirectory', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'STARTUPINFO' 'lpStartupInfo', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'PROCESS_INFORMATION' 'lpProcessInformation', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugCreateProcessFlags' 'debuggingFlags', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot - instance void 'DebugActiveProcess'([in] uint32 'id', [in] int32 'win32Attach', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'EnumerateProcesses'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcessEnum'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'GetProcess'([in] uint32 'dwProcessId', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'Initialize'() - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'SetManagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback' marshal(interface) 'pCallback') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'SetUnmanagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugUnmanagedCallback' marshal(interface) 'pCallback') - runtime internalcall - { - } - .method public virtual hidebysig newslot - instance void 'Terminate'() - runtime internalcall - { - } - .method public hidebysig specialname - instance void '.ctor'() - runtime internalcall - { - } - } - .class public interface abstract import 'ICorDebug' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 31 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Initialize'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Terminate'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetManagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback' marshal(interface) 'pCallback') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetUnmanagedHandler'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugUnmanagedCallback' marshal(interface) 'pCallback') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateProcess'([in] string marshal(lpwstr) 'lpApplicationName', [in] string marshal(lpwstr) 'lpCommandLine', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpProcessAttributes', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpThreadAttributes', [in] int32 'bInheritHandles', [in] uint32 'dwCreationFlags', [in] native int 'lpEnvironment', [in] string marshal(lpwstr) 'lpCurrentDirectory', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'STARTUPINFO' 'lpStartupInfo', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'PROCESS_INFORMATION' 'lpProcessInformation', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugCreateProcessFlags' 'debuggingFlags', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'DebugActiveProcess'([in] uint32 'id', [in] int32 'win32Attach', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateProcesses'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcessEnum'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetProcess'([in] uint32 'dwProcessId', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CanLaunchOrAttach'([in] uint32 'dwProcessId', [in] int32 'win32DebuggingEnabled') - { - } - } - .class public interface abstract import 'ICorDebugAppDomain' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugController' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 33 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Stop'([in] uint32 'dwTimeout') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Continue'([in] int32 'fIsOutOfBand') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsRunning'([out] int32& 'pbRunning') - { - } - .method public virtual hidebysig newslot abstract - instance void 'HasQueuedCallbacks'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [out] int32& 'pbQueued') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateThreads'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThreadEnum'& marshal(interface) 'ppThreads') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetAllThreadsDebugState'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState' 'state', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pExceptThisThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Detach'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Terminate'([in] uint32 'exitCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CanCommitChanges'([in] uint32 'cSnapshots', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'pSnapshots', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugErrorInfoEnum'& marshal(interface) 'pError') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CommitChanges'([in] uint32 'cSnapshots', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'pSnapshots', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugErrorInfoEnum'& marshal(interface) 'pError') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetProcess'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateAssemblies'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssemblyEnum'& marshal(interface) 'ppAssemblies') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetModuleFromMetaDataInterface'([in] object marshal(iunknown) 'pIMetaData', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule'& marshal(interface) 'ppModule') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateBreakpoints'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpointEnum'& marshal(interface) 'ppBreakpoints') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateSteppers'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepperEnum'& marshal(interface) 'ppSteppers') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsAttached'([out] int32& 'pbAttached') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetName'([in] uint32 'cchName', [out] uint32& 'pcchName', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetObject'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppObject') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Attach'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetID'([out] uint32& 'pId') - { - } - } - .class public interface abstract import 'ICorDebugAppDomain2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 30 39 36 45 38 31 44 35 2D 45 43 44 41 2D 34 32 30 32 2D 38 33 46 35 2D 43 36 35 39 38 30 41 39 45 46 37 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetArrayOrPointerType'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'elementType', [in] uint32 'nRank', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType' marshal(interface) 'pTypeArg', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'ppType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionPointerType'([in] uint32 'nTypeArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'[] marshal([ + 0]) 'ppTypeArgs', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'ppType') - { - } - } - .class public interface abstract import 'ICorDebugAppDomain3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 38 43 42 39 36 41 31 36 2D 42 35 38 38 2D 34 32 45 32 2D 42 37 31 43 2D 44 44 38 34 39 46 43 32 45 43 43 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetCachedWinRTTypesForIIDs'([in] uint32 'cReqTypes', [in] valuetype ['mscorlib']'System'.'Guid'[] marshal([ + 0]) 'iidsToResolve', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugTypeEnum'& 'ppTypesEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCachedWinRTTypes'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugGuidToTypeEnum'& 'ppGuidToTypeEnum') - { - } - } - .class public interface abstract import 'ICorDebugAppDomainEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 36 33 43 41 31 42 32 34 2D 34 33 35 39 2D 34 38 38 33 2D 42 44 35 37 2D 31 33 46 38 31 35 46 35 38 37 34 34 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugArrayValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugHeapValue', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 30 34 30 35 42 30 44 46 2D 41 36 36 30 2D 31 31 44 32 2D 42 44 30 32 2D 30 30 30 30 46 38 30 38 34 39 42 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsValid'([out] int32& 'pbValid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateRelocBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetElementType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRank'([out] uint32& 'pnRank') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pnCount') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetDimensions'([in] uint32 'cdim', [out] uint32[] marshal([ + 0]) 'dims') - { - } - .method public virtual hidebysig newslot abstract - instance void 'HasBaseIndicies'([out] int32& 'pbHasBaseIndicies') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetBaseIndicies'([in] uint32 'cdim', [out] uint32[] marshal([ + 0]) 'indicies') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetElement'([in] uint32 'cdim', [in] int32[] marshal([ + 0]) 'indices', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetElementAtPosition'([in] uint32 'nPosition', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - } - .class public interface abstract import 'ICorDebugAssembly' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 44 46 35 39 35 30 37 43 2D 44 34 37 41 2D 34 35 39 45 2D 42 43 45 32 2D 36 34 32 37 45 41 43 38 46 44 30 36 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetProcess'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAppDomain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain'& marshal(interface) 'ppAppDomain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateModules'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModuleEnum'& marshal(interface) 'ppModules') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCodeBase'([in] uint32 'cchName', [out] uint32& 'pcchName', char[] marshal([]) 'szName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetName'([in] uint32 'cchName', [out] uint32& 'pcchName', char[] marshal([]) 'szName') - { - } - } - .class public interface abstract import 'ICorDebugAssembly2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 34 32 36 44 31 46 39 45 2D 36 44 44 34 2D 34 34 43 38 2D 41 45 43 37 2D 32 36 43 44 42 41 46 34 45 33 39 38 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'IsFullyTrusted'([out] int32& 'pbFullyTrusted') - { - } - } - .class public interface abstract import 'ICorDebugAssemblyEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 34 41 32 41 31 45 43 39 2D 38 35 45 43 2D 34 42 46 42 2D 39 46 31 35 2D 41 38 39 46 44 46 45 30 46 45 38 33 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugBoxValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugHeapValue', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 43 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsValid'([out] int32& 'pbValid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateRelocBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetObject'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugObjectValue'& marshal(interface) 'ppObject') - { - } - } - .class public interface abstract import 'ICorDebugBreakpoint' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 38 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Activate'([in] int32 'bActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsActive'([out] int32& 'pbActive') - { - } - } - .class public interface abstract import 'ICorDebugBreakpointEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 33 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint'[] marshal([]) 'breakpoints', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugChain' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 45 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetThread'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread'& marshal(interface) 'ppThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackRange'([out] uint64& 'pStart', [out] uint64& 'pEnd') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetContext'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugContext'& marshal(interface) 'ppContext') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCaller'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCallee'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetPrevious'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNext'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsManaged'([out] int32& 'pManaged') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateFrames'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrameEnum'& marshal(interface) 'ppFrames') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetActiveFrame'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRegisterSet'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugRegisterSet'& marshal(interface) 'ppRegisters') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetReason'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugChainReason'& 'pReason') - { - } - } - .class public interface abstract import 'ICorDebugChainEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 38 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'[] marshal([]) 'chains', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugClass' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 35 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetModule'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule'& marshal(interface) 'pModule') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetToken'([out] uint32& 'pTypeDef') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStaticFieldValue'([in] uint32 'fieldDef', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' marshal(interface) 'pFrame', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - } - .class public interface abstract import 'ICorDebugClass2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 42 30 30 38 45 41 38 44 2D 37 41 42 31 2D 34 33 46 37 2D 42 42 32 30 2D 46 42 42 35 41 30 34 30 33 38 41 45 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetParameterizedType'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'elementType', [in] uint32 'nTypeArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'[] marshal([ + 1]) 'ppTypeArgs', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'ppType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetJMCStatus'([in] int32 'bIsJustMyCode') - { - } - } - .class public interface abstract import 'ICorDebugCode' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 34 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'IsIL'([out] int32& 'pbIL') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunction'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pStart') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pcBytes') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([in] uint32 'offset', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunctionBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCode'([in] uint32 'startOffset', [in] uint32 'endOffset', [in] uint32 'cBufferAlloc', [out] uint8[] marshal([ + 4]) 'buffer', [out] uint32& 'pcBufferSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVersionNumber'([out] uint32& 'nVersion') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetILToNativeMapping'([in] uint32 'cMap', [out] uint32& 'pcMap', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_DEBUG_IL_TO_NATIVE_MAP'[] marshal([ + 1]) 'map') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetEnCRemapSequencePoints'([in] uint32 'cMap', [out] uint32& 'pcMap', [out] uint32[] marshal([]) 'offsets') - { - } - } - .class public interface abstract import 'ICorDebugCode2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 46 36 39 36 35 30 39 2D 34 35 32 46 2D 34 34 33 36 2D 41 33 46 45 2D 34 44 31 31 46 45 37 45 32 33 34 37 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetCodeChunks'([in] uint32 'cbufSize', [out] uint32& 'pcnumChunks', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'_CodeChunkInfo'[] marshal([ + 1]) 'chunks') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCompilerFlags'([out] uint32& 'pdwFlags') - { - } - } - .class public interface abstract import 'ICorDebugCodeEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 35 45 39 36 34 36 31 2D 39 36 34 35 2D 34 35 45 34 2D 41 32 46 46 2D 30 33 36 37 38 37 37 41 42 43 44 45 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugComObjectValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 46 36 39 43 35 45 35 2D 33 45 31 32 2D 34 32 44 46 2D 42 33 37 31 2D 46 39 44 37 36 31 44 36 45 45 32 34 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetCachedInterfaceTypes'([in] bool 'bIInspectableOnly', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugTypeEnum'& 'ppInterfacesEnum') - { - } - } - .class public interface abstract import 'ICorDebugContext' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugObjectValue', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 30 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClass'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass'& marshal(interface) 'ppClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFieldValue'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pClass', [in] uint32 'fieldDef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVirtualMethod'([in] uint32 'memberRef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetContext'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugContext'& marshal(interface) 'ppContext') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsValueClass'([out] int32& 'pbIsValueClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetManagedCopy'([out] object& marshal(iunknown) 'ppObject') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetFromManagedCopy'([in] object marshal(iunknown) 'pObject') - { - } - } - .class public interface abstract import 'ICorDebugController' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 32 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Stop'([in] uint32 'dwTimeout') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Continue'([in] int32 'fIsOutOfBand') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsRunning'([out] int32& 'pbRunning') - { - } - .method public virtual hidebysig newslot abstract - instance void 'HasQueuedCallbacks'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [out] int32& 'pbQueued') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateThreads'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThreadEnum'& marshal(interface) 'ppThreads') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetAllThreadsDebugState'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState' 'state', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pExceptThisThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Detach'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Terminate'([in] uint32 'exitCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CanCommitChanges'([in] uint32 'cSnapshots', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'pSnapshots', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugErrorInfoEnum'& marshal(interface) 'pError') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CommitChanges'([in] uint32 'cSnapshots', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'pSnapshots', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugErrorInfoEnum'& marshal(interface) 'pError') - { - } - } - .class public interface abstract import 'ICorDebugDataTarget' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 46 45 30 36 44 43 32 38 2D 34 39 46 42 2D 34 36 33 36 2D 41 34 41 33 2D 45 38 30 44 42 34 41 45 31 31 36 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'GetPlatform'() - { - } - .method public virtual hidebysig newslot abstract - instance uint32 'ReadVirtual'(uint64 'address', native int 'buffer', uint32 'bytesRequested') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetThreadContext'(uint32 'threadId', uint32 'contextFlags', uint32 'contextSize', native int 'context') - { - } - } - .class public interface abstract import 'ICorDebugEditAndContinueSnapshot' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 36 44 43 33 46 41 30 31 2D 44 37 43 42 2D 31 31 44 32 2D 38 41 39 35 2D 30 30 38 30 43 37 39 32 45 35 44 38 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CopyMetaData'([in] class ['mscorlib']'System.Runtime.InteropServices.ComTypes'.'IStream' marshal(interface) 'pIStream', [out] valuetype ['mscorlib']'System'.'Guid'& 'pMvid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMvid'([out] valuetype ['mscorlib']'System'.'Guid'& 'pMvid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRoDataRVA'([out] uint32& 'pRoDataRVA') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRwDataRVA'([out] uint32& 'pRwDataRVA') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetPEBytes'([in] class ['mscorlib']'System.Runtime.InteropServices.ComTypes'.'IStream' marshal(interface) 'pIStream') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetILMap'([in] uint32 'mdFunction', [in] uint32 'cMapSize', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_IL_MAP'& 'map') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetPESymbolBytes'([in] class ['mscorlib']'System.Runtime.InteropServices.ComTypes'.'IStream' marshal(interface) 'pIStream') - { - } - } - .class public interface abstract import 'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 31 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - } - .class public interface abstract import 'ICorDebugEnumBlockingObject' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 39 37 36 41 36 32 37 38 2D 31 33 34 41 2D 34 61 38 31 2D 38 31 41 33 2D 38 46 32 37 37 39 34 33 46 34 43 33 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'countElements') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'enumerator') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'countElements') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'countElements', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugBlockingObject'[] marshal([]) 'blockingObjects', [out] uint32& 'countElementsFetched') - preservesig - { - } - } - .class public interface abstract import 'ICorDebugErrorInfoEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 46 30 45 31 38 38 30 39 2D 37 32 42 35 2D 31 31 44 32 2D 39 37 36 46 2D 30 30 41 30 43 39 42 34 44 35 30 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] native int 'errors', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 23 49 43 6F 72 44 65 62 75 67 45 64 69 74 41 6E 64 43 6F 6E 74 69 6E 75 65 45 72 72 6F 72 49 6E 66 6F 2A 2A 00 00) - } - } - .class public interface abstract import 'ICorDebugEval' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 36 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CallFunction'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pFunction', [in] uint32 'nArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'[] marshal([ + 1]) 'ppArgs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewObject'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pConstructor', [in] uint32 'nArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'[] marshal([ + 1]) 'ppArgs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewObjectNoConstructor'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewString'([in] string marshal(lpwstr) 'string') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewArray'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'elementType', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pElementClass', [in] uint32 'rank', [in] uint32& 'dims', [in] uint32& 'lowBounds') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsActive'([out] int32& 'pbActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Abort'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetResult'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppResult') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetThread'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread'& marshal(interface) 'ppThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateValue'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType' 'elementType', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pElementClass', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - } - .class public interface abstract import 'ICorDebugEval2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 46 42 30 44 39 43 45 37 2D 42 45 36 36 2D 34 36 38 33 2D 39 44 33 32 2D 41 34 32 41 30 34 45 32 46 44 39 31 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CallParameterizedFunction'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pFunction', [in] uint32 'nTypeArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'[] marshal([ + 1]) 'ppTypeArgs', [in] uint32 'nArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'[] marshal([ + 3]) 'ppArgs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateValueForType'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType' marshal(interface) 'pType', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewParameterizedObject'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pConstructor', [in] uint32 'nTypeArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'[] marshal([ + 1]) 'ppTypeArgs', [in] uint32 'nArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'[] marshal([ + 3]) 'ppArgs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewParameterizedObjectNoConstructor'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pClass', [in] uint32 'nTypeArgs', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'[] marshal([ + 1]) 'ppTypeArgs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewParameterizedArray'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType' marshal(interface) 'pElementType', [in] uint32 'rank', [in] uint32& 'dims', [in] uint32& 'lowBounds') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NewStringWithLength'([in] string marshal(lpwstr) 'string', [in] uint32 'uiLength') - { - } - .method public virtual hidebysig newslot abstract - instance void 'RudeAbort'() - { - } - } - .class public interface abstract import 'ICorDebugExceptionObjectCallStackEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 45 44 37 37 35 35 33 30 2D 34 44 43 34 2D 34 31 46 37 2D 38 36 44 30 2D 39 45 32 44 45 46 37 44 46 43 36 36 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionObjectStackFrame'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugExceptionObjectValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 41 45 34 43 41 36 35 44 2D 35 39 44 44 2D 34 32 41 32 2D 38 33 41 35 2D 35 37 45 38 41 30 38 44 38 37 31 39 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'EnumerateExceptionCallStack'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugExceptionObjectCallStackEnum'& 'ppCallStackEnum') - { - } - } - .class public interface abstract import 'ICorDebugFrame' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 46 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetChain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'& marshal(interface) 'ppCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunction'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionToken'([out] uint32& 'pToken') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackRange'([out] uint64& 'pStart', [out] uint64& 'pEnd') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCaller'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCallee'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateStepper'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper'& marshal(interface) 'ppStepper') - { - } - } - .class public interface abstract import 'ICorDebugFrameEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 37 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'[] marshal([]) 'frames', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugFunction' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 33 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetModule'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule'& marshal(interface) 'ppModule') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClass'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass'& marshal(interface) 'ppClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetToken'([out] uint32& 'pMethodDef') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetILCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'& marshal(interface) 'ppCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNativeCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'& marshal(interface) 'ppCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunctionBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalVarSigToken'([out] uint32& 'pmdSig') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCurrentVersionNumber'([out] uint32& 'pnCurrentVersion') - { - } - } - .class public interface abstract import 'ICorDebugFunction2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 45 46 30 43 34 39 30 42 2D 39 34 43 33 2D 34 45 34 44 2D 42 36 32 39 2D 44 44 43 31 33 34 43 35 33 32 44 38 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'SetJMCStatus'([in] int32 'bIsJustMyCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetJMCStatus'([out] int32& 'pbIsJustMyCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateNativeCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCodeEnum'& marshal(interface) 'ppCodeEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVersionNumber'([out] uint32& 'pnVersion') - { - } - } - .class public interface abstract import 'ICorDebugFunctionBreakpoint' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 39 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Activate'([in] int32 'bActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsActive'([out] int32& 'pbActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunction'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetOffset'([out] uint32& 'pnOffset') - { - } - } - .class public interface abstract import 'ICorDebugGCReferenceEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 37 46 33 43 32 34 44 33 2D 37 45 31 44 2D 34 32 34 35 2D 41 43 33 41 2D 46 37 32 46 38 38 35 39 43 38 30 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_GC_REFERENCE'[] marshal([]) 'segs', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugGenericValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 38 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetValue'([out] native int 'pTo') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetValue'([in] native int 'pFrom') - { - } - } - .class public interface abstract import 'ICorDebugGuidToTypeEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 36 31 36 34 44 32 34 32 2D 31 30 31 35 2D 34 42 44 36 2D 38 43 42 45 2D 44 30 44 42 44 34 42 38 32 37 35 41 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugGuidToTypeMapping'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugHandleValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugReferenceValue', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 30 32 39 35 39 36 45 38 2D 32 37 36 42 2D 34 36 41 31 2D 39 38 32 31 2D 37 33 32 45 39 36 42 42 42 30 30 42 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsNull'([out] int32& 'pbNull') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetValue'([out] uint64& 'pValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetValue'([in] uint64 'value') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Dereference'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'DereferenceStrong'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetHandleType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugHandleType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Dispose'() - { - } - } - .class public interface abstract import 'ICorDebugHeapEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 37 36 44 37 44 41 42 38 2D 44 30 34 34 2D 31 31 44 46 2D 39 41 31 35 2D 37 45 32 39 44 46 44 37 32 30 38 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_HEAPOBJECT'[] marshal([]) 'objs', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugHeapSegmentEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 41 32 46 41 30 46 38 45 2D 44 30 34 35 2D 31 31 44 46 2D 41 43 38 45 2D 43 45 32 41 44 46 44 37 32 30 38 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_SEGMENT'[] marshal([]) 'segs', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugHeapValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 41 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsValid'([out] int32& 'pbValid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateRelocBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - } - .class public interface abstract import 'ICorDebugHeapValue2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 45 33 41 43 34 44 36 43 2D 39 43 42 37 2D 34 33 45 36 2D 39 36 43 43 2D 42 32 31 35 34 30 45 35 30 38 33 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CreateHandle'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugHandleType' 'type', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugHandleValue'& marshal(interface) 'ppHandle') - { - } - } - .class public interface abstract import 'ICorDebugHeapValue3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 41 36 39 41 43 41 44 38 2D 32 33 37 34 2D 34 36 65 39 2D 39 46 46 38 2D 42 31 46 31 34 31 32 30 44 32 39 36 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetThreadOwningMonitorLock'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread'& marshal(interface) 'thread', [out] int32& 'acquisitionCount') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMonitorEventWaitList'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThreadEnum'& marshal(interface) 'threadEnum') - { - } - } - .class public interface abstract import 'ICorDebugILFrame' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 30 33 45 32 36 33 31 31 2D 34 46 37 36 2D 31 31 44 33 2D 38 38 43 36 2D 30 30 36 30 39 37 39 34 35 34 31 38 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetChain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'& marshal(interface) 'ppCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunction'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionToken'([out] uint32& 'pToken') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackRange'([out] uint64& 'pStart', [out] uint64& 'pEnd') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCaller'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCallee'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateStepper'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper'& marshal(interface) 'ppStepper') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetIP'([out] uint32& 'pnOffset', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMappingResult'& 'pMappingResult') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetIP'([in] uint32 'nOffset') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateLocalVariables'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueEnum'& marshal(interface) 'ppValueEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalVariable'([in] uint32 'dwIndex', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateArguments'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueEnum'& marshal(interface) 'ppValueEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetArgument'([in] uint32 'dwIndex', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackDepth'([out] uint32& 'pDepth') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackValue'([in] uint32 'dwIndex', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'CanSetIP'([in] uint32 'nOffset') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugILFrame2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 44 38 38 41 39 39 34 2D 36 43 33 30 2D 34 37 39 42 2D 38 39 30 46 2D 42 43 45 46 38 38 42 31 32 39 41 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'RemapFunction'([in] uint32 'newILOffset') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateTypeParameters'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugTypeEnum'& marshal(interface) 'ppTyParEnum') - { - } - } - .class public interface abstract import 'ICorDebugInternalFrame' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 42 39 32 43 43 37 46 37 2D 39 44 32 44 2D 34 35 43 34 2D 42 43 32 42 2D 36 32 31 46 43 43 39 44 46 42 46 34 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetChain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'& marshal(interface) 'ppCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunction'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionToken'([out] uint32& 'pToken') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackRange'([out] uint64& 'pStart', [out] uint64& 'pEnd') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCaller'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCallee'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateStepper'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper'& marshal(interface) 'ppStepper') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFrameType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugInternalFrameType'& 'pType') - { - } - } - .class public interface abstract import 'ICorDebugInternalFrame2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 30 38 31 35 42 44 43 2D 43 46 41 42 2D 34 34 37 65 2D 41 37 37 39 2D 43 31 31 36 42 34 35 34 45 42 35 42 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsCloserToLeaf'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' marshal(interface) 'pFrameToCompare', [out] int32& 'pIsCloser') - { - } - } - .class public interface abstract import 'ICorDebugMDA' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 32 36 46 32 46 2D 31 44 42 37 2D 34 35 39 42 2D 42 30 45 43 2D 30 35 46 30 31 44 38 34 31 42 34 32 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetName'([in] uint32 'cchName', [out] uint32& 'pcchName', char[] marshal([]) 'szName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetDescription'([in] uint32 'cchName', [out] uint32& 'pcchName', char[] marshal([]) 'szName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetXML'([in] uint32 'cchName', [out] uint32& 'pcchName', char[] marshal([]) 'szName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFlags'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugMDAFlags'& 'pFlags') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetOSThreadId'([out] uint32& 'pOsTid') - { - } - } - .class public interface abstract import 'ICorDebugManagedCallback' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 30 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Breakpoint'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' marshal(interface) 'pBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'StepComplete'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper' marshal(interface) 'pStepper', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'reason') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Break'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'thread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Exception'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] int32 'unhandled') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EvalComplete'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEval' marshal(interface) 'pEval') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EvalException'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEval' marshal(interface) 'pEval') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateProcess'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ExitProcess'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateThread'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'thread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ExitThread'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'thread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'LoadModule'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' marshal(interface) 'pModule') - { - } - .method public virtual hidebysig newslot abstract - instance void 'UnloadModule'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' marshal(interface) 'pModule') - { - } - .method public virtual hidebysig newslot abstract - instance void 'LoadClass'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'c') - { - } - .method public virtual hidebysig newslot abstract - instance void 'UnloadClass'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'c') - { - } - .method public virtual hidebysig newslot abstract - instance void 'DebuggerError'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess', [in] int32 marshal(error) 'errorHR', [in] uint32 'errorCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'LogMessage'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] int32 'lLevel', [in] string marshal(lpwstr) 'pLogSwitchName', [in] string marshal(lpwstr) 'pMessage') - { - } - .method public virtual hidebysig newslot abstract - instance void 'LogSwitch'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] int32 'lLevel', [in] uint32 'ulReason', [in] string marshal(lpwstr) 'pLogSwitchName', [in] string marshal(lpwstr) 'pParentName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateAppDomain'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ExitAppDomain'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'LoadAssembly'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly' marshal(interface) 'pAssembly') - { - } - .method public virtual hidebysig newslot abstract - instance void 'UnloadAssembly'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly' marshal(interface) 'pAssembly') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ControlCTrap'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'NameChange'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'UpdateModuleSymbols'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' marshal(interface) 'pModule', [in] class ['mscorlib']'System.Runtime.InteropServices.ComTypes'.'IStream' marshal(interface) 'pSymbolStream') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EditAndContinueRemap'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pFunction', [in] int32 'fAccurate') - { - } - .method public virtual hidebysig newslot abstract - instance void 'BreakpointSetError'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' marshal(interface) 'pBreakpoint', [in] uint32 'dwError') - { - } - } - .class public interface abstract import 'ICorDebugManagedCallback2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 35 30 45 35 45 45 41 2D 44 42 35 43 2D 34 43 37 36 2D 42 36 46 33 2D 38 43 34 36 46 31 32 45 33 32 30 33 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'FunctionRemapOpportunity'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pOldFunction', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pNewFunction', [in] uint32 'oldILOffset') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateConnection'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess', [in] uint32 'dwConnectionId', [in] uint16& 'pConnName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ChangeConnection'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess', [in] uint32 'dwConnectionId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'DestroyConnection'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' marshal(interface) 'pProcess', [in] uint32 'dwConnectionId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Exception'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' marshal(interface) 'pFrame', [in] uint32 'nOffset', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionCallbackType' 'dwEventType', [in] uint32 'dwFlags') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ExceptionUnwind'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionUnwindCallbackType' 'dwEventType', [in] uint32 'dwFlags') - { - } - .method public virtual hidebysig newslot abstract - instance void 'FunctionRemapComplete'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' marshal(interface) 'pFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'MDANotification'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugController' marshal(interface) 'pController', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugMDA' marshal(interface) 'pMDA') - { - } - } - .class public interface abstract import 'ICorDebugManagedCallback3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 36 34 45 41 30 46 43 2D 32 35 39 31 2D 34 39 41 41 2D 38 36 38 45 2D 38 33 35 45 36 35 31 35 33 32 33 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CustomNotification'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' marshal(interface) 'pAppDomain') - { - } - } - .class public interface abstract import 'ICorDebugModule' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 44 42 41 32 44 38 43 31 2D 45 35 43 35 2D 34 30 36 39 2D 38 43 31 33 2D 31 30 41 37 43 36 41 42 46 34 33 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetProcess'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetBaseAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAssembly'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly'& marshal(interface) 'ppAssembly') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetName'([in] uint32 'cchName', [out] uint32& 'pcchName', char[] marshal([]) 'szName') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnableJITDebugging'([in] int32 'bTrackJITInfo', [in] int32 'bAllowJitOpts') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnableClassLoadCallbacks'([in] int32 'bClassLoadCallbacks') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionFromToken'([in] uint32 'methodDef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionFromRVA'([in] uint64 'rva', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClassFromToken'([in] uint32 'typeDef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass'& marshal(interface) 'ppClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModuleBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetEditAndContinueSnapshot'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'ppEditAndContinueSnapshot') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMetaDataInterface'([in] valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] class 'Microsoft.Samples.Debugging.CorMetadata.NativeApi'.'IMetadataImport'& marshal(interface) 'ppObj') - { - .param [1] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 52 45 46 49 49 44 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetToken'([out] uint32& 'pToken') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsDynamic'([out] int32& 'pDynamic') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetGlobalVariableValue'([in] uint32 'fieldDef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pcBytes') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsInMemory'([out] int32& 'pInMemory') - { - } - } - .class public interface abstract import 'ICorDebugModule2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 37 46 43 43 35 46 42 35 2D 34 39 43 30 2D 34 31 44 45 2D 39 39 33 38 2D 33 42 38 38 42 35 42 39 41 44 44 37 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'SetJMCStatus'([in] int32 'bIsJustMyCode', [in] uint32 'cTokens', [in] uint32& 'pTokens') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ApplyChanges'([in] uint32 'cbMetadata', [in] uint8[] marshal([]) 'pbMetadata', [in] uint32 'cbIL', [in] uint8[] marshal([]) 'pbIL') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'SetJITCompilerFlags'([in] uint32 'dwFlags') - runtime preservesig internalcall - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetJITCompilerFlags'([out] uint32& 'pdwFlags') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ResolveAssembly'([in] uint32 'tkAssemblyRef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly'& marshal(interface) 'ppAssembly') - { - } - } - .class public interface abstract import 'ICorDebugModule3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 38 36 46 30 31 32 42 46 2D 46 46 31 35 2D 34 33 37 32 2D 42 44 33 30 2D 42 36 46 31 31 43 41 41 45 31 44 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CreateReaderForInMemorySymbols'([in] valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(interface) 'ppObj') - { - .param [1] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 52 45 46 49 49 44 00 00) - } - } - .class public interface abstract import 'ICorDebugModuleBreakpoint' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 41 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Activate'([in] int32 'bActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsActive'([out] int32& 'pbActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetModule'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule'& marshal(interface) 'ppModule') - { - } - } - .class public interface abstract import 'ICorDebugModuleEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 39 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule'[] marshal([]) 'modules', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugNativeFrame' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 30 33 45 32 36 33 31 34 2D 34 46 37 36 2D 31 31 44 33 2D 38 38 43 36 2D 30 30 36 30 39 37 39 34 35 34 31 38 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetChain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCode'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugCode'& marshal(interface) 'ppCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunction'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFunctionToken'([out] uint32& 'pToken') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStackRange'([out] uint64& 'pStart', [out] uint64& 'pEnd') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCaller'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCallee'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateStepper'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper'& marshal(interface) 'ppStepper') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetIP'([out] uint32& 'pnOffset') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetIP'([in] uint32 'nOffset') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRegisterSet'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugRegisterSet'& marshal(interface) 'ppRegisters') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalRegisterValue'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'reg', [in] uint32 'cbSigBlob', [in] uint32 'pvSigBlob', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalDoubleRegisterValue'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'highWordReg', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'lowWordReg', [in] uint32 'cbSigBlob', [in] uint32 'pvSigBlob', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalMemoryValue'([in] uint64 'address', [in] uint32 'cbSigBlob', [in] uint32 'pvSigBlob', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalRegisterMemoryValue'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'highWordReg', [in] uint64 'lowWordAddress', [in] uint32 'cbSigBlob', [in] uint32 'pvSigBlob', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetLocalMemoryRegisterValue'([in] uint64 'highWordAddress', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRegister' 'lowWordRegister', [in] uint32 'cbSigBlob', [in] uint32 'pvSigBlob', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 30 4D 69 63 72 6F 73 6F 66 74 2E 44 65 62 75 67 67 69 6E 67 2E 43 6F 72 44 65 62 75 67 2E 4E 61 74 69 76 65 41 70 69 2E 55 4C 4F 4E 47 5F 50 54 52 00 00) - } - .method public virtual hidebysig newslot abstract - instance int32 'CanSetIP'([in] uint32 'nOffset') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugNativeFrame2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 35 33 38 39 46 46 31 2D 33 36 38 34 2D 34 63 35 35 2D 41 32 45 45 2D 32 31 30 46 32 36 43 36 30 45 35 45 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'IsChild'([out] int32& 'pChild') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsMatchingParentFrame'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugNativeFrame2' marshal(interface) 'pFrame', [out] int32& 'pParent') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCalleeStackParameterSize'([out] uint32& 'pSize') - { - } - } - .class public interface abstract import 'ICorDebugObjectEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 32 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] uint64[] marshal([]) 'objects', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugObjectValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 31 38 41 44 33 44 36 45 2D 42 37 44 32 2D 31 31 44 32 2D 42 44 30 34 2D 30 30 30 30 46 38 30 38 34 39 42 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClass'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass'& marshal(interface) 'ppClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFieldValue'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pClass', [in] uint32 'fieldDef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVirtualMethod'([in] uint32 'memberRef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetContext'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugContext'& marshal(interface) 'ppContext') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsValueClass'([out] int32& 'pbIsValueClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetManagedCopy'([out] object& marshal(iunknown) 'ppObject') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetFromManagedCopy'([in] object marshal(iunknown) 'pObject') - { - } - } - .class public interface abstract import 'ICorDebugObjectValue2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 34 39 45 34 41 33 32 30 2D 34 41 39 42 2D 34 45 43 41 2D 42 31 30 35 2D 32 32 39 46 42 37 44 35 30 30 39 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetVirtualMethodAndType'([in] uint32 'memberRef', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction'& marshal(interface) 'ppFunction', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'ppType') - { - } - } - .class public interface abstract import 'ICorDebugProcess' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugController' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 44 36 46 35 46 36 34 2D 37 35 33 38 2D 31 31 44 33 2D 38 44 35 42 2D 30 30 31 30 34 42 33 35 45 37 45 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Stop'([in] uint32 'dwTimeout') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Continue'([in] int32 'fIsOutOfBand') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsRunning'([out] int32& 'pbRunning') - { - } - .method public virtual hidebysig newslot abstract - instance void 'HasQueuedCallbacks'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pThread', [out] int32& 'pbQueued') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateThreads'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThreadEnum'& marshal(interface) 'ppThreads') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetAllThreadsDebugState'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState' 'state', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' marshal(interface) 'pExceptThisThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Detach'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Terminate'([in] uint32 'exitCode') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CanCommitChanges'([in] uint32 'cSnapshots', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'pSnapshots', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugErrorInfoEnum'& marshal(interface) 'pError') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CommitChanges'([in] uint32 'cSnapshots', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEditAndContinueSnapshot'& marshal(interface) 'pSnapshots', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugErrorInfoEnum'& marshal(interface) 'pError') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetID'([out] uint32& 'pdwProcessId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetHandle'([out] native int& 'phProcessHandle') - { - .param [1] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 09 48 50 52 4F 43 45 53 53 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetThread'([in] uint32 'dwThreadId', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread'& marshal(interface) 'ppThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateObjects'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugObjectEnum'& marshal(interface) 'ppObjects') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsTransitionStub'([in] uint64 'address', [out] int32& 'pbTransitionStub') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsOSSuspended'([in] uint32 'threadID', [out] int32& 'pbSuspended') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetThreadContext'([in] uint32 'threadID', [in] uint32 'contextSize', [in] native int 'context') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 05 42 59 54 45 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'SetThreadContext'([in] uint32 'threadID', [in] uint32 'contextSize', [in] native int 'context') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 05 42 59 54 45 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'ReadMemory'([in] uint64 'address', [in] uint32 'size', [out] uint8[] marshal([]) 'buffer', [out] native int& 'read') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 07 53 49 5A 45 5F 54 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'WriteMemory'([in] uint64 'address', [in] uint32 'size', [in] uint8[] marshal([]) 'buffer', [out] native int& 'written') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 07 53 49 5A 45 5F 54 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'ClearCurrentException'([in] uint32 'threadID') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnableLogMessages'([in] int32 'fOnOff') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ModifyLogSwitch'([in] string marshal(lpwstr) 'pLogSwitchName', [in] int32 'lLevel') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateAppDomains'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomainEnum'& marshal(interface) 'ppAppDomains') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetObject'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppObject') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ThreadForFiberCookie'([in] uint32 'fiberCookie', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread'& marshal(interface) 'ppThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetHelperThreadID'([out] uint32& 'pThreadID') - { - } - } - .class public interface abstract import 'ICorDebugProcess2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 41 44 31 42 33 35 38 38 2D 30 45 46 30 2D 34 37 34 34 2D 41 34 39 36 2D 41 41 30 39 41 39 46 38 30 33 37 31 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetThreadForTaskID'([in] uint64 'taskid', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread2'& marshal(interface) 'ppThread') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVersion'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'_COR_VERSION'& 'version') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetUnmanagedBreakpoint'([in] uint64 'address', [in] uint32 'bufsize', [out] uint8[] marshal([]) 'buffer', [out] uint32& 'bufLen') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ClearUnmanagedBreakpoint'([in] uint64 'address') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetDesiredNGENCompilerFlags'([in] uint32 'pdwFlags') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetDesiredNGENCompilerFlags'([out] uint32& 'pdwFlags') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetReferenceValueFromGCHandle'([in] native int 'handle', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugReferenceValue'& marshal(interface) 'pOutValue') - { - } - } - .class public interface abstract import 'ICorDebugProcess3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 45 45 30 36 34 38 38 2D 43 30 44 34 2D 34 32 42 31 2D 42 32 36 44 2D 46 33 37 39 35 45 46 36 30 36 46 42 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'SetEnableCustomNotification'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' marshal(interface) 'pClass', [in] int32 'fOnOff') - { - } - } - .class public interface abstract import 'ICorDebugProcess4' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 45 39 33 30 43 36 37 39 2D 37 38 41 46 2D 34 39 35 33 2D 38 41 42 37 2D 42 30 41 41 42 46 30 46 39 46 38 30 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Filter'([in] native int 'pRecord', [in] uint32 'countBytes', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugRecordFormat' 'format', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugFilterFlagsWindows' 'dwFlags', [in] uint32 'dwThreadId', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback' 'pCallback', [in][out] uint32& 'dwContinueStatus') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ProcessStateChanged'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStateChange' 'eChange') - { - } - } - .class public interface abstract import 'ICorDebugProcess5' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 31 65 39 64 39 63 30 2D 66 63 62 38 2D 31 31 64 66 2D 38 63 66 66 2D 30 38 30 30 32 30 30 63 39 61 36 36 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetGCHeapInformation'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_HEAPINFO'& 'pHeapInfo') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateHeap'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugHeapEnum'& marshal(interface) 'ppObjects') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateHeapRegions'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugHeapSegmentEnum'& marshal(interface) 'ppRegions') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetObject'([in] uint64 'addr', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugObjectValue'& marshal(interface) 'ppObject') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateGCReferences'([in] int32 'bEnumerateWeakReferences', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugGCReferenceEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateHandles'([in] uint32 'types', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugGCReferenceEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeID'([in] uint64 'objAddr', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID'& 'pId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeForTypeID'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'id', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& 'type') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetArrayLayout'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'id', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_ARRAY_LAYOUT'& 'layout') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeLayout'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'id', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPE_LAYOUT'& 'layout') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeFields'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_TYPEID' 'id', int32 'celt', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_FIELD'[] marshal([]) 'fields', [out] int32& 'pceltNeeded') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnableNGENPolicy'(valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugNGENPolicyFlags' 'ePolicy') - { - } - } - .class public interface abstract import 'ICorDebugProcessEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 35 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'[] marshal([]) 'processes', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugReferenceValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 39 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsNull'([out] int32& 'pbNull') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetValue'([out] uint64& 'pValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetValue'([in] uint64 'value') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Dereference'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'DereferenceStrong'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - } - .class public interface abstract import 'ICorDebugRegisterSet' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 42 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetRegistersAvailable'([out] uint64& 'pAvailable') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRegisters'([in] uint64 'mask', [in] uint32 'regCount', [out] uint64[] marshal([ + 1]) 'regBuffer') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetRegisters'([in] uint64 'mask', [in] uint32 'regCount', [in] uint64[] marshal([ + 1]) 'regBuffer') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetThreadContext'([in] uint32 'contextSize', [in] native int 'context') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 05 42 59 54 45 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'SetThreadContext'([in] uint32 'contextSize', [in] native int 'context') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 05 42 59 54 45 2A 00 00) - } - } - .class public interface abstract import 'ICorDebugRemote' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 44 35 45 42 42 38 45 32 2D 37 42 42 45 2D 34 63 31 64 2D 39 38 41 36 2D 41 33 43 30 34 43 42 44 45 46 36 34 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CreateProcessEx'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugRemoteTarget' marshal(interface) 'pRemoteTarget', [in] string marshal(lpwstr) 'lpApplicationName', [in] string marshal(lpwstr) 'lpCommandLine', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpProcessAttributes', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'SECURITY_ATTRIBUTES' 'lpThreadAttributes', [in] int32 'bInheritHandles', [in] uint32 'dwCreationFlags', [in] native int 'lpEnvironment', [in] string marshal(lpwstr) 'lpCurrentDirectory', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'STARTUPINFO' 'lpStartupInfo', [in] class 'Microsoft.Samples.Debugging.NativeApi'.'PROCESS_INFORMATION' 'lpProcessInformation', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugCreateProcessFlags' 'debuggingFlags', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'DebugActiveProcessEx'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugRemoteTarget' marshal(interface) 'pRemoteTarget', [in] uint32 'id', [in] int32 'win32Attach', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - } - .class public interface abstract import 'ICorDebugRemoteTarget' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 33 45 44 38 33 38 33 2D 35 41 34 39 2D 34 63 66 35 2D 42 34 42 37 2D 30 31 38 36 34 44 39 45 35 38 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetHostName'([in] uint32 'cchHostName', [out] uint32& 'pcchHostName', [in][out] char[] marshal([ + 0]) 'szHostName') - { - } - } - .class public interface abstract import 'ICorDebugRuntimeUnwindableFrame' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 38 37 39 43 41 43 30 41 2D 34 41 35 33 2D 34 36 36 38 2D 42 38 45 33 2D 43 42 38 34 37 33 43 42 31 38 37 46 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - } - .class public interface abstract import 'ICorDebugStackWalk' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 41 30 36 34 37 44 45 39 2D 35 35 44 45 2D 34 38 31 36 2D 39 32 39 43 2D 33 38 35 32 37 31 43 36 34 43 46 37 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetContext'([in] uint32 'contextFlags', [in] uint32 'contextBufferSize', [out] uint32& 'contextSize', [in] native int 'contextBuffer') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetContext'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugSetContextFlag' 'flag', [in] uint32 'contextSize', [in] native int 'contextBuffer') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'() - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFrame'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - } - .class public interface abstract import 'ICorDebugStepper' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 43 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'IsActive'([out] int32& 'pbActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Deactivate'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetInterceptMask'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugIntercept' 'mask') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetUnmappedStopMask'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUnmappedStop' 'mask') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Step'([in] int32 'bStepIn') - { - } - .method public virtual hidebysig newslot abstract - instance void 'StepRange'([in] int32 'bStepIn', [in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_DEBUG_STEP_RANGE'[] marshal([]) 'ranges', [in] uint32 'cRangeCount') - { - } - .method public virtual hidebysig newslot abstract - instance void 'StepOut'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetRangeIL'([in] int32 'bIL') - { - } - } - .class public interface abstract import 'ICorDebugStepper2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 35 42 36 45 39 43 33 2D 45 37 44 31 2D 34 41 38 45 2D 38 37 33 42 2D 37 46 30 34 37 46 30 37 30 36 46 37 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'SetJMC'([in] int32 'fIsJMCStepper') - { - } - } - .class public interface abstract import 'ICorDebugStepperEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 34 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper'[] marshal([]) 'steppers', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugStringValue' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugHeapValue', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 44 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsValid'([out] int32& 'pbValid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateRelocBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetLength'([out] uint32& 'pcchString') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetString'([in] uint32 'cchString', [out] uint32& 'pcchString', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szString') - { - } - } - .class public interface abstract import 'ICorDebugThread' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 39 33 38 43 36 44 36 36 2D 37 46 42 36 2D 34 46 36 39 2D 42 33 38 39 2D 34 32 35 42 38 39 38 37 33 32 39 42 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetProcess'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& marshal(interface) 'ppProcess') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetID'([out] uint32& 'pdwThreadId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetHandle'([out] native int& 'phThreadHandle') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAppDomain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain'& marshal(interface) 'ppAppDomain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'SetDebugState'([in] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState' 'state') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetDebugState'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugThreadState'& 'pState') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetUserState'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugUserState'& 'pState') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCurrentException'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppExceptionObject') - { - } - .method public virtual hidebysig newslot abstract - instance void 'ClearCurrentException'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateStepper'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper'& marshal(interface) 'ppStepper') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateChains'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChainEnum'& marshal(interface) 'ppChains') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetActiveChain'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugChain'& marshal(interface) 'ppChain') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetActiveFrame'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame'& marshal(interface) 'ppFrame') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRegisterSet'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugRegisterSet'& marshal(interface) 'ppRegisters') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateEval'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEval'& marshal(interface) 'ppEval') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetObject'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppObject') - { - } - } - .class public interface abstract import 'ICorDebugThread2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 42 44 39 35 36 44 39 2D 37 42 30 37 2D 34 42 45 46 2D 38 41 39 38 2D 31 32 41 41 38 36 32 34 31 37 43 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetActiveFunctions'([in] uint32 'cFunctions', [out] uint32& 'pcFunctions', [out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'COR_ACTIVE_FUNCTION'[] marshal([ + 1]) 'pFunctions') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetConnectionID'([out] uint32& 'pdwConnectionId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTaskID'([out] uint64& 'pTaskId') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVolatileOSThreadID'([out] uint32& 'pdwTid') - { - } - .method public virtual hidebysig newslot abstract - instance void 'InterceptCurrentException'([in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' marshal(interface) 'pFrame') - { - } - } - .class public interface abstract import 'ICorDebugThread3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 46 38 35 34 34 45 43 33 2D 35 45 34 45 2D 34 36 63 37 2D 38 44 33 45 2D 41 35 32 42 38 34 30 35 42 31 46 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CreateStackWalk'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStackWalk'& marshal(interface) 'ppStackWalk') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetActiveInternalFrames'([in] uint32 'cInternalFrames', [out] uint32& 'pcInternalFrames', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugInternalFrame2'[] marshal([ + 1]) 'ppFunctions') - { - } - } - .class public interface abstract import 'ICorDebugThread4' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 31 41 31 46 32 30 34 42 2D 31 43 36 36 2D 34 36 33 37 2D 38 32 33 46 2D 33 45 45 36 43 37 34 34 41 36 39 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance int32 'HasUnhandledException'() - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetBlockingObjects'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnumBlockingObject'& marshal(interface) 'blockingObjectEnumerator') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCurrentCustomDebuggerNotification'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppNotificationObject') - { - } - } - .class public interface abstract import 'ICorDebugThreadEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 36 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread'[] marshal([]) 'threads', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugType' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 44 36 31 33 46 30 42 42 2D 41 43 45 31 2D 34 43 31 39 2D 42 44 37 32 2D 45 34 43 30 38 44 35 44 41 37 46 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'ty') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClass'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass'& marshal(interface) 'ppClass') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumerateTypeParameters'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugTypeEnum'& marshal(interface) 'ppTyParEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFirstTypeParameter'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'value') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetBase'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'pBase') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetStaticFieldValue'([in] uint32 'fieldDef', [in] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' marshal(interface) 'pFrame', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRank'([out] uint32& 'pnRank') - { - } - } - .class public interface abstract import 'ICorDebugTypeEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 31 30 46 32 37 34 39 39 2D 39 44 46 32 2D 34 33 43 45 2D 38 33 33 33 2D 41 33 32 31 44 37 43 39 39 43 42 34 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public interface abstract import 'ICorDebugUnmanagedCallback' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 32 36 33 45 39 30 39 2D 38 43 42 35 2D 31 31 44 33 2D 42 44 32 46 2D 30 30 30 30 46 38 30 38 34 39 42 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'DebugEvent'([in] native int 'pDebugEvent', [in] int32 'fOutOfBand') - { - } - } - .class public interface abstract import 'ICorDebugValue' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 46 37 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetType'([out] valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorElementType'& 'pType') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSize'([out] uint32& 'pSize') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetAddress'([out] uint64& 'pAddress') - { - } - .method public virtual hidebysig newslot abstract - instance void 'CreateBreakpoint'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValueBreakpoint'& marshal(interface) 'ppBreakpoint') - { - } - } - .class public interface abstract import 'ICorDebugValue2' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 45 30 42 35 34 45 37 2D 44 38 38 41 2D 34 36 32 36 2D 39 34 32 30 2D 41 36 39 31 45 30 41 37 38 42 34 39 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetExactType'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugType'& marshal(interface) 'ppType') - { - } - } - .class public interface abstract import 'ICorDebugValue3' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 35 36 35 30 30 35 46 43 2D 30 46 38 41 2D 34 46 33 45 2D 39 45 44 42 2D 38 33 31 30 32 42 31 35 36 35 39 35 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetSize64'([out] uint64& 'pSize') - { - } - } - .class public interface abstract import 'ICorDebugValueBreakpoint' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 41 45 42 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Activate'([in] int32 'bActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsActive'([out] int32& 'pbActive') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetValue'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'& marshal(interface) 'ppValue') - { - } - } - .class public interface abstract import 'ICorDebugValueEnum' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComConversionLossAttribute'::.ctor() = (01 00 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 43 43 37 42 43 42 30 41 2D 38 41 36 38 2D 31 31 44 32 2D 39 38 33 43 2D 30 30 30 30 46 38 30 38 33 34 32 44 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(int16) = (01 00 01 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'Skip'([in] uint32 'celt') - { - } - .method public virtual hidebysig newslot abstract - instance void 'Reset'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'Clone'([out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEnum'& marshal(interface) 'ppEnum') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetCount'([out] uint32& 'pcelt') - { - } - .method public virtual hidebysig newslot abstract - instance int32 'Next'([in] uint32 'celt', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugValue'[] marshal([]) 'values', [out] uint32& 'pceltFetched') - runtime preservesig internalcall - { - } - } - .class public sequential sealed '_COR_VERSION' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'dwMajor' - .field public uint32 'dwMinor' - .field public uint32 'dwBuild' - .field public uint32 'dwSubBuild' - } - .class public sequential sealed '_CodeChunkInfo' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint64 'startAddr' - .field public uint32 'length' - } - .class public sequential sealed '_LARGE_INTEGER' - extends ['mscorlib']'System'.'ValueType' - { - .field public int64 'QuadPart' - } - .class public sequential sealed '_SECURITY_ATTRIBUTES' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'nLength' - .field public native int 'lpSecurityDescriptor' - .field public int32 'bInheritHandle' - } - .class public sequential sealed '_ULARGE_INTEGER' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint64 'QuadPart' - } -} -.namespace 'Microsoft.Samples.Debugging.CorDebug.Utility' -{ - .class public sealed 'DumpDataTarget' - extends ['mscorlib']'System'.'Object' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugDataTarget', 'Microsoft.Samples.Debugging.MetaDataLocator'.'ICorDebugMetaDataLocator', ['mscorlib']'System'.'IDisposable' - { - .method public hidebysig specialname - instance void '.ctor'(class 'Microsoft.Samples.Debugging.Native'.'DumpReader' 'reader') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'fileName') - { - ret - } - .method public final virtual hidebysig newslot - instance void 'Dispose'() - { - ret - } - .method public final virtual hidebysig newslot - instance valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugPlatform' 'GetPlatform'() - { - ret - } - .method public final virtual hidebysig newslot - instance uint32 'ReadVirtual'(uint64 'address', native int 'buffer', uint32 'bytesRequested') - { - ret - } - .method public final virtual hidebysig newslot - instance void 'GetThreadContext'(uint32 'threadId', uint32 'contextFlags', uint32 'contextSize', native int 'context') - { - ret - } - .method public final virtual hidebysig newslot - instance void 'GetMetaData'(string 'imagePath', uint32 'dwImageTimeStamp', uint32 'dwImageSize', uint32 'cchPathBuffer', [out] uint32& 'pcchPathBuffer', char[] 'wszPathBuffer') - { - ret - } - } - .class public sealed 'UnmanagedLibraryLeak' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'(string 'fileName') - { - ret - } - .method public hidebysig - instance !!0 'GetUnmanagedFunction'(string 'functionName') - { - ret - } - } -} -.namespace 'Microsoft.Samples.Debugging.CorMetadata.NativeApi' -{ - .class public interface abstract 'IMetadataAssemblyImport' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 45 45 36 32 34 37 30 42 2D 45 39 34 42 2D 34 32 34 65 2D 39 42 37 43 2D 32 46 30 30 43 39 32 34 39 46 39 33 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - } - .class public interface abstract 'IMetadataImport' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 37 44 41 43 38 32 30 37 2D 44 33 41 45 2D 34 63 37 35 2D 39 42 36 37 2D 39 32 38 30 31 41 34 39 37 44 34 34 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CloseEnum'(native int 'hEnum') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'CountEnum'(native int 'hEnum', [out] int32& 'pulCount') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'ResetEnum'(native int 'hEnum', int32 'ulPos') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumTypeDefs'(native int& 'phEnum', [out] int32& 'rTypeDefs', uint32 'cMax', [out] uint32& 'pcTypeDefs') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumInterfaceImpls_'(native int 'phEnum', int32 'td') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumTypeRefs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindTypeDefByName'([in] string marshal(lpwstr) 'szTypeDef', [in] int32 'tkEnclosingClass', [out] int32& 'token') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetScopeProps'([out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName', [in] int32 'cchName', [out] int32& 'pchName', [out] valuetype ['mscorlib']'System'.'Guid'& 'mvid') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetModuleFromScope_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeDefProps'([in] int32 'td', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szTypeDef', [in] int32 'cchTypeDef', [out] int32& 'pchTypeDef', [out] valuetype ['mscorlib']'System.Reflection'.'TypeAttributes'& marshal(unsigned int32) 'pdwTypeDefFlags', [out] int32& 'ptkExtends') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetInterfaceImplProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeRefProps'(int32 'tr', [out] int32& 'ptkResolutionScope', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName', [in] int32 'cchName', [out] int32& 'pchName') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'ResolveTypeRef'(int32 'tr', valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(iunknown) 'scope', [out] int32& 'typeDef') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMembers_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMembersWithName_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethods'(native int& 'phEnum', int32 'cl', [out] int32& 'mdMethodDef', int32 'cMax', [out] int32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodsWithName_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumFields'(native int& 'phEnum', int32 'cl', [out] int32& 'mdFieldDef', int32 'cMax', [out] uint32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0B 6D 64 46 69 65 6C 64 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumFieldsWithName_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumParams'(native int& 'phEnum', int32 'mdMethodDef', [out] int32& 'mdParamDef', int32 'cMax', [out] uint32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0B 6D 64 50 61 72 61 6D 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMemberRefs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodImpls_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumPermissionSets_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindMember_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindMethod_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindField_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindMemberRef_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMethodProps'([in] uint32 'md', [out] int32& 'pClass', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szMethod', [in] int32 'cchMethod', [out] int32& 'pchMethod', [out] uint32& 'pdwAttr', [out] native int& 'ppvSigBlob', [out] uint32& 'pcbSigBlob', [out] uint32& 'pulCodeRVA', [out] uint32& 'pdwImplFlags') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetMemberRefProps'([in] uint32 'mr', [out] int32& 'ptk', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szMember', [in] int32 'cchMember', [out] uint32& 'pchMember', [out] native int& 'ppvSigBlob', [out] int32& 'pbSig') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 6D 62 65 72 52 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumProperties'(native int& 'phEnum', int32 'mdTypeDef', [out] int32& 'mdPropertyDef', int32 'countMax', [out] uint32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 6D 64 50 72 6F 70 65 72 74 79 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumEvents_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetEventProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodSemantics_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMethodSemantics_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClassLayout_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFieldMarshal_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRVA_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetPermissionSetProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSigFromToken_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetModuleRefProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumModuleRefs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeSpecFromToken_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNameFromToken_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumUnresolvedMethods_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetUserString'([in] int32 'stk', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szString', [in] int32 'cchString', [out] int32& 'pchString') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetPinvokeMap_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumSignatures_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumTypeSpecs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumUserStrings_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetParamForMethodIndex_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumCustomAttributes'(native int& 'phEnum', int32 'tk', int32 'tkType', [out] int32& 'mdCustomAttribute', uint32 'cMax', [out] uint32& 'pcTokens') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 12 6D 64 43 75 73 74 6F 6D 41 74 74 72 69 62 75 74 65 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetCustomAttributeProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindTypeRef_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMemberProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFieldProps'(int32 'mb', [out] int32& 'mdTypeDef', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szField', int32 'cchField', [out] int32& 'pchField', [out] int32& 'pdwAttr', [out] native int& 'ppvSigBlob', [out] int32& 'pcbSigBlob', [out] int32& 'pdwCPlusTypeFlab', [out] native int& 'ppValue', [out] int32& 'pcchValue') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 55 56 43 50 5F 43 4F 4E 53 54 41 4E 54 2A 00 00) - .param [11] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetPropertyProps'(int32 'mb', [out] int32& 'mdTypeDef', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szProperty', int32 'cchProperty', [out] int32& 'pchProperty', [out] int32& 'pdwPropFlags', [out] native int& 'ppvSigBlob', [out] int32& 'pcbSigBlob', [out] int32& 'pdwCPlusTypeFlag', [out] native int& 'ppDefaultValue', [out] int32& 'pcchDefaultValue', [out] int32& 'mdSetter', [out] int32& 'mdGetter', [out] int32& 'rmdOtherMethod', int32 'cMax', [out] int32& 'pcOtherMethod') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 55 56 43 50 5F 43 4F 4E 53 54 41 4E 54 2A 00 00) - .param [11] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [12] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [13] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [14] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [15] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 05 55 4C 4F 4E 47 00 00) - .param [16] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetParamProps'(int32 'tk', [out] int32& 'pmd', [out] uint32& 'pulSequence', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName', uint32 'cchName', [out] uint32& 'pchName', [out] uint32& 'pdwAttr', [out] uint32& 'pdwCPlusTypeFlag', [out] native int& 'ppValue', [out] uint32& 'pcchValue') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 55 56 43 50 5F 43 4F 4E 53 54 41 4E 54 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance int32 'GetCustomAttributeByName'(int32 'tkObj', string marshal(lpwstr) 'szName', [out] native int& 'ppData', [out] uint32& 'pcbData') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance bool 'IsValidToken'([in] uint32 marshal(unsigned int32) 'tk') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNestedClassProps'(int32 'tdNestedClass', [out] int32& 'tdEnclosingClass') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetNativeCallConvFromSig_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsGlobal_'() - { - } - } - .class public interface abstract 'IMetadataImport2' - implements 'Microsoft.Samples.Debugging.CorMetadata.NativeApi'.'IMetadataImport' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 46 43 45 35 45 46 41 30 2D 38 42 42 41 2D 34 66 38 65 2D 41 30 33 36 2D 38 46 32 30 32 32 42 30 38 34 36 36 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'CloseEnum'(native int 'hEnum') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'CountEnum'(native int 'hEnum', [out] int32& 'pulCount') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'ResetEnum'(native int 'hEnum', int32 'ulPos') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumTypeDefs'(native int& 'phEnum', [out] int32& 'rTypeDefs', uint32 'cMax', [out] uint32& 'pcTypeDefs') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumInterfaceImpls_'(native int 'phEnum', int32 'td') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumTypeRefs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindTypeDefByName'([in] string marshal(lpwstr) 'szTypeDef', [in] int32 'tkEnclosingClass', [out] int32& 'token') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetScopeProps'([out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName', [in] int32 'cchName', [out] int32& 'pchName', [out] valuetype ['mscorlib']'System'.'Guid'& 'mvid') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetModuleFromScope_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeDefProps'([in] int32 'td', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szTypeDef', [in] int32 'cchTypeDef', [out] int32& 'pchTypeDef', [out] valuetype ['mscorlib']'System.Reflection'.'TypeAttributes'& marshal(unsigned int32) 'pdwTypeDefFlags', [out] int32& 'ptkExtends') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetInterfaceImplProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeRefProps'(int32 'tr', [out] int32& 'ptkResolutionScope', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName', [in] int32 'cchName', [out] int32& 'pchName') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'ResolveTypeRef'(int32 'tr', valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(iunknown) 'scope', [out] int32& 'typeDef') - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMembers_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMembersWithName_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethods'(native int& 'phEnum', int32 'cl', [out] int32& 'mdMethodDef', int32 'cMax', [out] int32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodsWithName_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumFields'(native int& 'phEnum', int32 'cl', [out] int32& 'mdFieldDef', int32 'cMax', [out] uint32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0B 6D 64 46 69 65 6C 64 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumFieldsWithName_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumParams'(native int& 'phEnum', int32 'mdMethodDef', [out] int32& 'mdParamDef', int32 'cMax', [out] uint32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0B 6D 64 50 61 72 61 6D 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMemberRefs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodImpls_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumPermissionSets_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindMember_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindMethod_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindField_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindMemberRef_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMethodProps'([in] uint32 'md', [out] int32& 'pClass', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szMethod', [in] int32 'cchMethod', [out] int32& 'pchMethod', [out] uint32& 'pdwAttr', [out] native int& 'ppvSigBlob', [out] uint32& 'pcbSigBlob', [out] uint32& 'pulCodeRVA', [out] uint32& 'pdwImplFlags') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetMemberRefProps'([in] uint32 'mr', [out] int32& 'ptk', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szMember', [in] int32 'cchMember', [out] uint32& 'pchMember', [out] native int& 'ppvSigBlob', [out] int32& 'pbSig') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 6D 62 65 72 52 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumProperties'(native int& 'phEnum', int32 'mdTypeDef', [out] int32& 'mdPropertyDef', int32 'countMax', [out] uint32& 'pcTokens') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 6D 64 50 72 6F 70 65 72 74 79 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumEvents_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetEventProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodSemantics_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMethodSemantics_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetClassLayout_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFieldMarshal_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetRVA_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetPermissionSetProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetSigFromToken_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetModuleRefProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumModuleRefs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTypeSpecFromToken_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNameFromToken_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumUnresolvedMethods_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetUserString'([in] int32 'stk', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szString', [in] int32 'cchString', [out] int32& 'pchString') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetPinvokeMap_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumSignatures_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumTypeSpecs_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumUserStrings_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetParamForMethodIndex_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumCustomAttributes'(native int& 'phEnum', int32 'tk', int32 'tkType', [out] int32& 'mdCustomAttribute', uint32 'cMax', [out] uint32& 'pcTokens') - { - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 12 6D 64 43 75 73 74 6F 6D 41 74 74 72 69 62 75 74 65 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetCustomAttributeProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'FindTypeRef_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetMemberProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetFieldProps'(int32 'mb', [out] int32& 'mdTypeDef', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szField', int32 'cchField', [out] int32& 'pchField', [out] int32& 'pdwAttr', [out] native int& 'ppvSigBlob', [out] int32& 'pcbSigBlob', [out] int32& 'pdwCPlusTypeFlab', [out] native int& 'ppValue', [out] int32& 'pcchValue') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 55 56 43 50 5F 43 4F 4E 53 54 41 4E 54 2A 00 00) - .param [11] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetPropertyProps'(int32 'mb', [out] int32& 'mdTypeDef', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szProperty', int32 'cchProperty', [out] int32& 'pchProperty', [out] int32& 'pdwPropFlags', [out] native int& 'ppvSigBlob', [out] int32& 'pcbSigBlob', [out] int32& 'pdwCPlusTypeFlag', [out] native int& 'ppDefaultValue', [out] int32& 'pcchDefaultValue', [out] int32& 'mdSetter', [out] int32& 'mdGetter', [out] int32& 'rmdOtherMethod', int32 'cMax', [out] int32& 'pcOtherMethod') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 55 56 43 50 5F 43 4F 4E 53 54 41 4E 54 2A 00 00) - .param [11] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [12] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [13] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [14] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [15] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 05 55 4C 4F 4E 47 00 00) - .param [16] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetParamProps'(int32 'tk', [out] int32& 'pmd', [out] uint32& 'pulSequence', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'szName', uint32 'cchName', [out] uint32& 'pchName', [out] uint32& 'pdwAttr', [out] uint32& 'pdwCPlusTypeFlag', [out] native int& 'ppValue', [out] uint32& 'pcchValue') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 44 65 66 2A 00 00) - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [6] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [7] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [9] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0E 55 56 43 50 5F 43 4F 4E 53 54 41 4E 54 2A 00 00) - .param [10] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance int32 'GetCustomAttributeByName'(int32 'tkObj', string marshal(lpwstr) 'szName', [out] native int& 'ppData', [out] uint32& 'pcbData') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance bool 'IsValidToken'([in] uint32 marshal(unsigned int32) 'tk') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNestedClassProps'(int32 'tdNestedClass', [out] int32& 'tdEnclosingClass') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0A 6D 64 54 79 70 65 44 65 66 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetNativeCallConvFromSig_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'IsGlobal_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumGenericParams'(native int& 'hEnum', int32 'tk', [out] int32& 'rGenericParams', uint32 'cMax', [out] uint32& 'pcGenericParams') - { - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0F 6D 64 47 65 6E 65 72 69 63 50 61 72 61 6D 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetGenericParamProps'(int32 'gp', [out] uint32& 'pulParamSeq', [out] int32& 'pdwParamFlags', [out] int32& 'ptOwner', [out] int32& 'ptkKind', [out] class ['mscorlib']'System.Text'.'StringBuilder' marshal(lpwstr) 'wzName', uint64 'cchName', [out] uint64& 'pchName') - { - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 44 57 4F 52 44 2A 00 00) - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - .param [5] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - .param [8] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'GetMethodSpecProps'(int32 'mi', [out] int32& 'tkParent', [out] native int& 'ppvSigBlob', [out] int32& 'pcbSigBlob') - { - .param [1] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 0C 6D 64 4D 65 74 68 6F 64 53 70 65 63 00 00) - .param [2] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 08 6D 64 54 6F 6B 65 6E 2A 00 00) - .param [3] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 10 50 43 43 4F 52 5F 53 49 47 4E 41 54 55 52 45 2A 00 00) - .param [4] - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComAliasNameAttribute'::.ctor(string) = (01 00 06 55 4C 4F 4E 47 2A 00 00) - } - .method public virtual hidebysig newslot abstract - instance void 'EnumGenericParamConstraints_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetGenericParamConstraintProps_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetPEKind_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetVersionString_'() - { - } - .method public virtual hidebysig newslot abstract - instance void 'EnumMethodSpecs_'() - { - } - } - .class public interface abstract 'IMetadataTables' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 44 38 46 35 37 39 41 42 2D 34 30 32 44 2D 34 62 38 65 2D 38 32 44 39 2D 35 44 36 33 42 31 30 36 35 43 36 38 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetStringHeapSize'([out] uint32& 'countBytesStrings') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetBlobHeapSize'([out] uint32& 'countBytesBlobs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetGuidHeapSize'([out] uint32& 'countBytesGuids') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetUserStringHeapSize'([out] uint32& 'countByteBlobs') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetNumTables'([out] uint32& 'countTables') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTableIndex'(uint32 'token', [out] uint32& 'tableIndex') - { - } - .method public virtual hidebysig newslot abstract - instance void 'GetTableInfo'(uint32 'tableIndex', [out] uint32& 'countByteRows', [out] uint32& 'countRows', [out] uint32& 'countColumns', [out] uint32& 'columnPrimaryKey', [out] string& marshal(lpstr) 'name') - { - } - } -} -.namespace 'Microsoft.Samples.Debugging.MetaDataLocator' -{ - .class public sealed 'CorDebugMetaDataLocator' - extends ['mscorlib']'System'.'Object' - implements 'Microsoft.Samples.Debugging.MetaDataLocator'.'ICorDebugMetaDataLocator' - { - .method public final virtual hidebysig newslot - instance void 'GetMetaData'(string 'imagePath', uint32 'dwImageTimeStamp', uint32 'dwImageSize', uint32 'cchPathBuffer', [out] uint32& 'pcchPathBuffer', char[] 'wszPathBuffer') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'searchPath') - { - ret - } - .method public hidebysig specialname - instance string 'get_SearchPath'() - { - ret - } - .method public hidebysig specialname - instance void 'set_SearchPath'(string 'value') - { - ret - } - .property instance string 'SearchPath'() - { - .get instance string 'Microsoft.Samples.Debugging.MetaDataLocator'.'CorDebugMetaDataLocator'::'get_SearchPath'() - .set instance void 'Microsoft.Samples.Debugging.MetaDataLocator'.'CorDebugMetaDataLocator'::'set_SearchPath'(string) - } - } - .class public interface abstract import 'ICorDebugMetaDataLocator' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 37 63 65 66 38 62 61 39 2D 32 65 66 37 2D 34 32 62 66 2D 39 37 33 66 2D 34 31 37 31 34 37 34 66 38 37 64 39 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'GetMetaData'([in] string marshal(lpwstr) 'imagePath', [in] uint32 'dwImageTimeStamp', [in] uint32 'dwImageSize', [in] uint32 'cchPathBuffer', [out] uint32& 'pcchPathBuffer', [in][out] char[] marshal([ + 3]) 'wszPathBuffer') - { - } - } -} -.namespace 'Microsoft.Samples.Debugging.Native' -{ - .class public sealed 'AMD64Flags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Flags' 'SINGLE_STEP_FLAG' = int32(0x00000100) - } - .class public sealed 'AMD64Offsets' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'ContextFlags' = int32(0x00000030) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'DebugControl' = int32(0x000004A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Dr0' = int32(0x00000048) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Dr1' = int32(0x00000050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Dr2' = int32(0x00000058) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Dr3' = int32(0x00000060) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Dr6' = int32(0x00000068) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Dr7' = int32(0x00000070) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'EFlags' = int32(0x00000044) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'FltSave' = int32(0x00000100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'LastBranchFromRip' = int32(0x000004B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'LastBranchToRip' = int32(0x000004B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'LastExceptionFromRip' = int32(0x000004C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'LastExceptionToRip' = int32(0x000004C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Legacy' = int32(0x00000120) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'MxCsr' = int32(0x00000034) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'P1Home' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'P2Home' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'P3Home' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'P4Home' = int32(0x00000018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'P5Home' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'P6Home' = int32(0x00000028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R10' = int32(0x000000C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R11' = int32(0x000000D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R12' = int32(0x000000D8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R13' = int32(0x000000E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R14' = int32(0x000000E8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R15' = int32(0x000000F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R8' = int32(0x000000B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'R9' = int32(0x000000C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rax' = int32(0x00000078) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rbp' = int32(0x000000A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rbx' = int32(0x00000090) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rcx' = int32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rdi' = int32(0x000000B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rdx' = int32(0x00000088) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rip' = int32(0x000000F8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rsi' = int32(0x000000A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Rsp' = int32(0x00000098) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'SegCs' = int32(0x00000038) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'SegDs' = int32(0x0000003A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'SegEs' = int32(0x0000003C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'SegFs' = int32(0x0000003E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'SegGs' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'SegSs' = int32(0x00000042) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'VectorControl' = int32(0x000004A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'VectorRegister' = int32(0x00000300) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm0' = int32(0x000001A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm1' = int32(0x000001B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm10' = int32(0x00000240) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm11' = int32(0x00000250) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm12' = int32(0x00000260) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm13' = int32(0x00000270) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm14' = int32(0x00000280) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm15' = int32(0x00000290) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm2' = int32(0x000001C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm3' = int32(0x000001D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm4' = int32(0x000001E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm5' = int32(0x000001F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm6' = int32(0x00000200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm7' = int32(0x00000210) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm8' = int32(0x00000220) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AMD64Offsets' 'Xmm9' = int32(0x00000230) - } - .class public sealed 'ARMFlags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMFlags' 'SINGLE_STEP_FLAG' = int32(0x00000000) - } - .class public sealed 'ARMOffsets' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Bcr' = int32(0x00000170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Bvr' = int32(0x00000150) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'ContextFlags' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Cpsr' = int32(0x00000044) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'D' = int32(0x00000050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr0' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr1' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr10' = int32(0x0000002C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr11' = int32(0x00000030) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr12' = int32(0x00000034) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr2' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr3' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr4' = int32(0x00000014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr5' = int32(0x00000018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr6' = int32(0x0000001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr7' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr8' = int32(0x00000024) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Dr9' = int32(0x00000028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Fpscr' = int32(0x00000048) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Lr' = int32(0x0000003C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Pc' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Q' = int32(0x00000050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'S' = int32(0x00000050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Sp' = int32(0x00000038) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Wcr' = int32(0x00000194) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ARMOffsets' 'Wvr' = int32(0x00000190) - } - .class public sealed 'AgnosticContextFlags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AgnosticContextFlags' 'ContextAll' = int32(0x0000003F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AgnosticContextFlags' 'ContextControl' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AgnosticContextFlags' 'ContextDebugRegisters' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AgnosticContextFlags' 'ContextFloatingPoint' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AgnosticContextFlags' 'ContextInteger' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'AgnosticContextFlags' 'None' = int32(0x00000000) - } - .class public sequential sealed 'CREATE_PROCESS_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public native int 'hFile' - .field public native int 'hProcess' - .field public native int 'hThread' - .field public native int 'lpBaseOfImage' - .field public uint32 'dwDebugInfoFileOffset' - .field public uint32 'nDebugInfoSize' - .field public native int 'lpThreadLocalBase' - .field public native int 'lpStartAddress' - .field public native int 'lpImageName' - .field public uint16 'fUnicode' - } - .class public sequential sealed 'CREATE_THREAD_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public native int 'hThread' - .field public native int 'lpThreadLocalBase' - .field public native int 'lpStartAddress' - } - .class public sealed 'ContextFlags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64Context' = int32(0x00100000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextAll' = int32(0x0010001F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextControl' = int32(0x00100001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextDebugRegisters' = int32(0x00100010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextFloatingPoint' = int32(0x00100008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextFull' = int32(0x0010000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextInteger' = int32(0x00100002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'AMD64ContextSegments' = int32(0x00100004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContext' = int32(0x00200000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContextAll' = int32(0x0020000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContextControl' = int32(0x00200001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContextDebugRegisters' = int32(0x00200008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContextFloatingPoint' = int32(0x00200004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContextFull' = int32(0x00200003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'ARMContextInteger' = int32(0x00200002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64Context' = int32(0x00080000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextAll' = int32(0x0008003F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextControl' = int32(0x00080001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextDebug' = int32(0x00080010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextFloatingPoint' = int32(0x00080006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextFull' = int32(0x0008002F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextHigherFloatingPoint' = int32(0x00080004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextIA32Control' = int32(0x00080020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextInteger' = int32(0x00080008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'IA64ContextLowerFloatingPoint' = int32(0x00080002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'None' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86Context' = int32(0x00010000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextAll' = int32(0x0001003F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextControl' = int32(0x00010001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextDebugRegisters' = int32(0x00010010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextExtendedRegisters' = int32(0x00010020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextFloatingPoint' = int32(0x00010008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextFull' = int32(0x00010007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextInteger' = int32(0x00010002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextFlags' 'X86ContextSegments' = int32(0x00010004) - } - .class public sealed 'ContextSize' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextSize' 'AMD64' = int32(0x000004D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextSize' 'ARM' = int32(0x000001A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextSize' 'IA64' = int32(0x00000A70) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextSize' 'None' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ContextSize' 'X86' = int32(0x000002CC) - } - .class public explicit sealed 'DebugEvent32' - extends ['mscorlib']'System'.'ValueType' - { - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'DebugEventHeader' 'header' - .field [12] public valuetype 'Microsoft.Samples.Debugging.Native'.'DebugEventUnion' 'union' - } - .class public explicit sealed 'DebugEvent64' - extends ['mscorlib']'System'.'ValueType' - { - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'DebugEventHeader' 'header' - .field [16] public valuetype 'Microsoft.Samples.Debugging.Native'.'DebugEventUnion' 'union' - } - .class public sequential sealed 'DebugEventHeader' - extends ['mscorlib']'System'.'ValueType' - { - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'dwDebugEventCode' - .field public uint32 'dwProcessId' - .field public uint32 'dwThreadId' - } - .class public explicit sealed 'DebugEventUnion' - extends ['mscorlib']'System'.'ValueType' - { - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'CREATE_PROCESS_DEBUG_INFO' 'CreateProcess' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'EXCEPTION_DEBUG_INFO' 'Exception' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'CREATE_THREAD_DEBUG_INFO' 'CreateThread' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'EXIT_THREAD_DEBUG_INFO' 'ExitThread' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'EXIT_PROCESS_DEBUG_INFO' 'ExitProcess' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'LOAD_DLL_DEBUG_INFO' 'LoadDll' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'UNLOAD_DLL_DEBUG_INFO' 'UnloadDll' - .field [0] public valuetype 'Microsoft.Samples.Debugging.Native'.'OUTPUT_DEBUG_STRING_INFO' 'OutputDebugString' - } - .class public serializable 'DumpException' - extends ['mscorlib']'System'.'Exception' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message', class ['mscorlib']'System'.'Exception' 'innerException') - { - ret - } - .method family hidebysig specialname - instance void '.ctor'(class ['mscorlib']'System.Runtime.Serialization'.'SerializationInfo' 'info', valuetype ['mscorlib']'System.Runtime.Serialization'.'StreamingContext' 'context') - { - ret - } - } - .class public serializable 'DumpFormatException' - extends 'Microsoft.Samples.Debugging.Native'.'DumpException' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message', class ['mscorlib']'System'.'Exception' 'innerException') - { - ret - } - .method family hidebysig specialname - instance void '.ctor'(class ['mscorlib']'System.Runtime.Serialization'.'SerializationInfo' 'info', valuetype ['mscorlib']'System.Runtime.Serialization'.'StreamingContext' 'context') - { - ret - } - } - .class public serializable 'DumpMissingDataException' - extends 'Microsoft.Samples.Debugging.Native'.'DumpException' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message', class ['mscorlib']'System'.'Exception' 'innerException') - { - ret - } - .method family hidebysig specialname - instance void '.ctor'(class ['mscorlib']'System.Runtime.Serialization'.'SerializationInfo' 'info', valuetype ['mscorlib']'System.Runtime.Serialization'.'StreamingContext' 'context') - { - ret - } - } - .class public 'DumpModule' - extends ['mscorlib']'System'.'Object' - { - .method public virtual hidebysig - instance bool 'Equals'(object 'obj') - { - ret - } - .method public virtual hidebysig - instance int32 'GetHashCode'() - { - ret - } - .method public hidebysig specialname - instance string 'get_FullName'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_BaseAddress'() - { - ret - } - .method public hidebysig specialname - instance uint32 'get_Size'() - { - ret - } - .method public hidebysig specialname - instance valuetype ['mscorlib']'System'.'DateTime' 'get_Timestamp'() - { - ret - } - .method public hidebysig specialname - instance uint32 'get_RawTimestamp'() - { - ret - } - .property instance uint64 'BaseAddress'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpModule'::'get_BaseAddress'() - } - .property instance string 'FullName'() - { - .get instance string 'Microsoft.Samples.Debugging.Native'.'DumpModule'::'get_FullName'() - } - .property instance uint32 'RawTimestamp'() - { - .get instance uint32 'Microsoft.Samples.Debugging.Native'.'DumpModule'::'get_RawTimestamp'() - } - .property instance uint32 'Size'() - { - .get instance uint32 'Microsoft.Samples.Debugging.Native'.'DumpModule'::'get_Size'() - } - .property instance valuetype ['mscorlib']'System'.'DateTime' 'Timestamp'() - { - .get instance valuetype ['mscorlib']'System'.'DateTime' 'Microsoft.Samples.Debugging.Native'.'DumpModule'::'get_Timestamp'() - } - } - .class public sequential sealed 'DumpPointer' - extends ['mscorlib']'System'.'ValueType' - { - .method public static hidebysig - valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'DangerousMakeDumpPointer'(native int 'rawPointer', uint32 'size') - { - ret - } - .method public hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'Shrink'(uint32 'size') - { - ret - } - .method public hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'Adjust'(uint32 'delta') - { - ret - } - .method public hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'Adjust'(uint64 'delta64') - { - ret - } - .method public hidebysig - instance void 'Copy'(native int 'destinationBuffer', uint32 'destinationBufferSizeInBytes', uint32 'indexDestination', uint32 'numberBytesToCopy') - { - ret - } - .method public hidebysig - instance void 'Copy'(native int 'destinationBuffer', uint32 'numberBytesToCopy') - { - ret - } - .method public hidebysig - instance int32 'ReadInt32'() - { - ret - } - .method public hidebysig - instance int64 'ReadInt64'() - { - ret - } - .method public hidebysig - instance uint32 'ReadUInt32'() - { - ret - } - .method public hidebysig - instance uint64 'ReadUInt64'() - { - ret - } - .method public hidebysig - instance string 'ReadAsUnicodeString'(int32 'lengthChars') - { - ret - } - .method public hidebysig - instance !!0 'PtrToStructure'<'T'>(uint32 'offset') - { - ret - } - .method public hidebysig - instance !!0 'PtrToStructureAdjustOffset'<'T'>(uint32& 'offset') - { - ret - } - .method public hidebysig - instance !!0 'PtrToStructure'<'T'>() - { - ret - } - - //This private field was generated by ASMMETA as a placeholder and does not exist in the actual assembly. - .field private int32 __Asmmeta_Private_Field - } - .class public 'DumpReader' - extends ['mscorlib']'System'.'Object' - implements ['mscorlib']'System'.'IDisposable' - { - .class nested famorassem abstract sealed 'NativeMethods' - extends ['mscorlib']'System'.'Object' - { - .class nested public interface abstract 'IMinidumpThreadList' - { - .method public virtual hidebysig newslot abstract - instance uint32 'Count'() - { - } - .method public virtual hidebysig newslot abstract - instance class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD' 'GetElement'(uint32 'idx') - { - } - } - .class nested public 'LoadedFileMemoryLookups' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig - instance void 'GetBytes'(string 'fileName', uint64 'offset', native int 'destination', uint32 'bytesRequested', uint32& 'bytesWritten') - { - ret - } - } - .class nested public sequential 'MINIDUMP_EXCEPTION' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance uint64 'get_ExceptionAddress'() - { - ret - } - .method public hidebysig specialname - instance void 'set_ExceptionAddress'(uint64 'value') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public uint32 'ExceptionCode' - .field public uint32 'ExceptionFlags' - .field public uint64 'ExceptionRecord' - .field public uint32 'NumberParameters' - .field public uint32 '__unusedAlignment' - .field public uint64[] 'ExceptionInformation' - .property instance uint64 'ExceptionAddress'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_EXCEPTION'::'get_ExceptionAddress'() - .set instance void 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_EXCEPTION'::'set_ExceptionAddress'(uint64) - } - } - .class nested public sequential 'MINIDUMP_EXCEPTION_STREAM' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'dump') - { - ret - } - .field public uint32 'ThreadId' - .field public uint32 '__alignment' - .field public class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_EXCEPTION' 'ExceptionRecord' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_LOCATION_DESCRIPTOR' 'ThreadContext' - } - .class nested public sequential sealed 'MINIDUMP_LOCATION_DESCRIPTOR' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig specialname - instance bool 'get_IsNull'() - { - ret - } - .field public uint32 'DataSize' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA' 'Rva' - .property instance bool 'IsNull'() - { - .get instance bool 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_LOCATION_DESCRIPTOR'::'get_IsNull'() - } - } - .class nested public sequential sealed 'MINIDUMP_LOCATION_DESCRIPTOR64' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint64 'DataSize' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA64' 'Rva' - } - .class nested public sequential sealed 'MINIDUMP_MEMORY_DESCRIPTOR' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig specialname - instance uint64 'get_StartOfMemoryRange'() - { - ret - } - .field static public literal int32 'SizeOf' = int32(0x00000010) - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_LOCATION_DESCRIPTOR' 'Memory' - - //This private field was generated by ASMMETA as a placeholder and does not exist in the actual assembly. - .field private int32 __Asmmeta_Private_Field - .property instance uint64 'StartOfMemoryRange'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR'::'get_StartOfMemoryRange'() - } - } - .class nested public sequential sealed 'MINIDUMP_MEMORY_DESCRIPTOR64' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig specialname - instance uint64 'get_StartOfMemoryRange'() - { - ret - } - .field static public literal int32 'SizeOf' = int32(0x00000010) - .field public uint64 'DataSize' - - //This private field was generated by ASMMETA as a placeholder and does not exist in the actual assembly. - .field private int32 __Asmmeta_Private_Field - .property instance uint64 'StartOfMemoryRange'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR64'::'get_StartOfMemoryRange'() - } - } - .class nested public sequential sealed 'MINIDUMP_MODULE' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance uint64 'get_BaseOfImage'() - { - ret - } - .method public hidebysig specialname - instance valuetype ['mscorlib']'System'.'DateTime' 'get_Timestamp'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public uint32 'SizeOfImage' - .field public uint32 'CheckSum' - .field public uint32 'TimeDateStamp' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA' 'ModuleNameRva' - .property instance uint64 'BaseOfImage'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MODULE'::'get_BaseOfImage'() - } - .property instance valuetype ['mscorlib']'System'.'DateTime' 'Timestamp'() - { - .get instance valuetype ['mscorlib']'System'.'DateTime' 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MODULE'::'get_Timestamp'() - } - } - .class nested public 'MINIDUMP_MODULE_LIST' - extends class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpArray`1' - { - } - .class nested public sealed 'MINIDUMP_STREAM_TYPE' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'CommentStreamA' = int32(0x0000000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'CommentStreamW' = int32(0x0000000B) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ExceptionStream' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'FunctionTableStream' = int32(0x0000000D) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'HandleDataStream' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'LastReservedStream' = int32(0x0000FFFF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'Memory64ListStream' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'MemoryInfoListStream' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'MemoryListStream' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'MiscInfoStream' = int32(0x0000000F) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ModuleListStream' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ReservedStream0' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ReservedStream1' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'SystemInfoStream' = int32(0x00000007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ThreadExListStream' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ThreadInfoListStream' = int32(0x00000011) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'ThreadListStream' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'UnloadedModuleListStream' = int32(0x0000000E) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'UnusedStream' = int32(0x00000000) - } - .class nested public sequential 'MINIDUMP_SYSTEM_INFO' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance class ['mscorlib']'System'.'Version' 'get_Version'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'ProcessorArchitecture' - .field public uint16 'ProcessorLevel' - .field public uint16 'ProcessorRevision' - .field public uint8 'NumberOfProcessors' - .field public uint8 'ProductType' - .field public uint32 'MajorVersion' - .field public uint32 'MinorVersion' - .field public uint32 'BuildNumber' - .field public valuetype ['mscorlib']'System'.'PlatformID' 'PlatformId' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA' 'CSDVersionRva' - .property instance class ['mscorlib']'System'.'Version' 'Version'() - { - .get instance class ['mscorlib']'System'.'Version' 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_SYSTEM_INFO'::'get_Version'() - } - } - .class nested public sequential 'MINIDUMP_THREAD' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance uint64 'get_Teb'() - { - ret - } - .method public virtual hidebysig newslot - instance bool 'HasBackingStore'() - { - ret - } - .method public virtual hidebysig newslot specialname - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'get_BackingStore'() - { - ret - } - .method public virtual hidebysig newslot specialname - instance void 'set_BackingStore'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'value') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public uint32 'ThreadId' - .field public uint32 'SuspendCount' - .field public uint32 'PriorityClass' - .field public uint32 'Priority' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'Stack' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_LOCATION_DESCRIPTOR' 'ThreadContext' - .property instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'BackingStore'() - { - .get instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD'::'get_BackingStore'() - .set instance void 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD'::'set_BackingStore'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR') - } - .property instance uint64 'Teb'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD'::'get_Teb'() - } - } - .class nested public sequential sealed 'MINIDUMP_THREAD_EX' - extends 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD' - { - .method public virtual hidebysig - instance bool 'HasBackingStore'() - { - ret - } - .method public virtual hidebysig specialname - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'get_BackingStore'() - { - ret - } - .method public virtual hidebysig specialname - instance void 'set_BackingStore'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'value') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .property instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'BackingStore'() - { - .get instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD_EX'::'get_BackingStore'() - .set instance void 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD_EX'::'set_BackingStore'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR') - } - } - .class nested public 'MINIDUMP_THREAD_LIST`1'<('Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD') 'T'> - extends class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpArray`1' - implements 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'IMinidumpThreadList' - { - .method public final virtual hidebysig newslot - instance class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_THREAD' 'GetElement'(uint32 'idx') - { - ret - } - .method public final virtual hidebysig newslot - instance uint32 'Count'() - { - ret - } - } - .class nested public 'MinidumpArray`1'<'T'> - extends ['mscorlib']'System'.'Object' - { - .method family hidebysig specialname - instance void '.ctor'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'streamPointer', valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'streamType') - { - ret - } - .method public hidebysig specialname - instance uint32 'get_Count'() - { - ret - } - .method public hidebysig - instance !0 'GetElement'(uint32 'idx') - { - ret - } - .property instance uint32 'Count'() - { - .get instance uint32 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpArray`1'::'get_Count'() - } - } - .class nested public 'MinidumpMemory64List' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'streamPointer') - { - ret - } - .method public hidebysig specialname - instance uint64 'get_Count'() - { - ret - } - .method public hidebysig specialname - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA64' 'get_BaseRva'() - { - ret - } - .method public hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR64' 'GetElement'(uint32 'idx') - { - ret - } - .property instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA64' 'BaseRva'() - { - .get instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA64' 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpMemory64List'::'get_BaseRva'() - } - .property instance uint64 'Count'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpMemory64List'::'get_Count'() - } - } - .class nested public 'MinidumpMemoryChunk' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public uint64 'RVA' - .field public uint64 'Size' - .field public uint64 'TargetEndAddress' - .field public uint64 'TargetStartAddress' - } - .class nested public 'MinidumpMemoryChunks' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig - instance uint64 'Size'(uint64 'i') - { - ret - } - .method public hidebysig - instance uint64 'RVA'(uint64 'i') - { - ret - } - .method public hidebysig - instance uint64 'StartAddress'(uint64 'i') - { - ret - } - .method public hidebysig - instance uint64 'EndAddress'(uint64 'i') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'rawStream', valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'type') - { - ret - } - .method public hidebysig - instance void 'InitFromMemoryList'() - { - ret - } - .method public hidebysig specialname - instance uint64 'get_Count'() - { - ret - } - .property instance uint64 'Count'() - { - .get instance uint64 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpMemoryChunks'::'get_Count'() - } - } - .class nested public 'MinidumpMemoryList' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'streamPointer') - { - ret - } - .method public hidebysig specialname - instance uint32 'get_Count'() - { - ret - } - .method public hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_MEMORY_DESCRIPTOR' 'GetElement'(uint32 'idx') - { - ret - } - .property instance uint32 'Count'() - { - .get instance uint32 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpMemoryList'::'get_Count'() - } - } - .class nested public sequential sealed 'RVA' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig specialname - instance bool 'get_IsNull'() - { - ret - } - .field public uint32 'Value' - .property instance bool 'IsNull'() - { - .get instance bool 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA'::'get_IsNull'() - } - } - .class nested public sequential sealed 'RVA64' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint64 'Value' - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'MiniDumpReadDumpStream'(native int 'pMiniDump', valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_STREAM_TYPE' 'streamType', [out] native int& 'dir', [out] native int& 'streamPointer', [out] uint32& 'cbStreamSize') - preservesig - { - } - .field static public literal uint32 'EXCEPTION_MAXIMUM_PARAMETERS' = uint32(0x0000000F) - } - .method famorassem hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'TranslateDescriptor'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MINIDUMP_LOCATION_DESCRIPTOR' 'location') - { - ret - } - .method famorassem hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'TranslateRVA'(uint64 'rva') - { - ret - } - .method famorassem hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'TranslateRVA'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA' 'rva') - { - ret - } - .method famorassem hidebysig - instance valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'TranslateRVA'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA64' 'rva') - { - ret - } - .method famorassem hidebysig - instance string 'GetString'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'RVA' 'rva') - { - ret - } - .method famorassem hidebysig - instance string 'GetString'(valuetype 'Microsoft.Samples.Debugging.Native'.'DumpPointer' 'ptr') - { - ret - } - .method public hidebysig - instance uint8[] 'ReadMemory'(uint64 'targetAddress', int32 'length') - { - ret - } - .method public hidebysig - instance void 'ReadMemory'(uint64 'targetAddress', uint8[] 'buffer') - { - ret - } - .method public hidebysig - instance void 'ReadMemory'(uint64 'targetRequestStart', native int 'destinationBuffer', uint32 'destinationBufferSizeInBytes') - { - ret - } - .method public virtual hidebysig newslot - instance uint32 'ReadPartialMemory'(uint64 'targetRequestStart', native int 'destinationBuffer', uint32 'destinationBufferSizeInBytes') - { - ret - } - .method family hidebysig - instance uint32 'ReadPartialMemoryInternal'(uint64 'targetRequestStart', native int 'destinationBuffer', uint32 'destinationBufferSizeInBytes', uint32 'startIndex') - { - ret - } - .method public virtual hidebysig - instance string 'ToString'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'path') - { - ret - } - .method public final virtual hidebysig newslot - instance void 'Dispose'() - { - ret - } - .method public hidebysig specialname - instance class ['mscorlib']'System'.'Version' 'get_Version'() - { - ret - } - .method public hidebysig specialname - instance class ['mscorlib']'System'.'OperatingSystem' 'get_OSVersion'() - { - ret - } - .method public hidebysig specialname - instance string 'get_OSVersionString'() - { - ret - } - .method public hidebysig specialname - instance valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'get_ProcessorArchitecture'() - { - ret - } - .method public hidebysig - instance class 'Microsoft.Samples.Debugging.Native'.'DumpThread' 'GetThread'(int32 'threadId') - { - ret - } - .method public hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateThreads'() - { - ret - } - .method public hidebysig - instance bool 'IsExceptionStream'() - { - ret - } - .method public hidebysig - instance uint32 'ExceptionStreamThreadId'() - { - ret - } - .method public hidebysig - instance class 'Microsoft.Samples.Debugging.Native'.'DumpModule' 'LookupModule'(string 'nameModule') - { - ret - } - .method public hidebysig - instance class 'Microsoft.Samples.Debugging.Native'.'DumpModule' 'TryLookupModuleByAddress'(uint64 'targetAddress') - { - ret - } - .method public hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateModules'() - { - ret - } - .field family class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'LoadedFileMemoryLookups' 'm_mappedFileMemory' - .field family class 'Microsoft.Samples.Debugging.Native'.'DumpReader'/'NativeMethods'/'MinidumpMemoryChunks' 'm_memoryChunks' - .property instance class ['mscorlib']'System'.'OperatingSystem' 'OSVersion'() - { - .get instance class ['mscorlib']'System'.'OperatingSystem' 'Microsoft.Samples.Debugging.Native'.'DumpReader'::'get_OSVersion'() - } - .property instance string 'OSVersionString'() - { - .get instance string 'Microsoft.Samples.Debugging.Native'.'DumpReader'::'get_OSVersionString'() - } - .property instance valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'ProcessorArchitecture'() - { - .get instance valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'Microsoft.Samples.Debugging.Native'.'DumpReader'::'get_ProcessorArchitecture'() - } - .property instance class ['mscorlib']'System'.'Version' 'Version'() - { - .get instance class ['mscorlib']'System'.'Version' 'Microsoft.Samples.Debugging.Native'.'DumpReader'::'get_Version'() - } - } - .class public 'DumpThread' - extends ['mscorlib']'System'.'Object' - { - .method public virtual hidebysig - instance bool 'Equals'(object 'obj') - { - ret - } - .method public virtual hidebysig - instance int32 'GetHashCode'() - { - ret - } - .method public virtual hidebysig - instance string 'ToString'() - { - ret - } - .method public hidebysig specialname - instance int32 'get_ThreadId'() - { - ret - } - .method public hidebysig - instance void 'GetThreadContext'(native int 'buffer', int32 'sizeBufferBytes') - { - ret - } - .property instance int32 'ThreadId'() - { - .get instance int32 'Microsoft.Samples.Debugging.Native'.'DumpThread'::'get_ThreadId'() - } - } - .class public abstract sealed 'DumpUtility' - extends ['mscorlib']'System'.'Object' - { - .method public static hidebysig - uint32 'GetTimestamp'(string 'file') - { - ret - } - } - .class public sequential sealed 'EXCEPTION_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'EXCEPTION_RECORD' 'ExceptionRecord' - .field public uint32 'dwFirstChance' - } - .class public sequential sealed 'EXCEPTION_RECORD' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig specialname - instance bool 'get_IsNotContinuable'() - { - ret - } - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'ExceptionCode' - .field public valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionRecordFlags' 'ExceptionFlags' - .field public native int 'ExceptionRecord' - .field public native int 'ExceptionAddress' - .field public uint32 'NumberParameters' - .field public native int 'ExceptionInformation0' - .field public native int 'ExceptionInformation1' - .field public native int 'ExceptionInformation2' - .field public native int 'ExceptionInformation3' - .field public native int 'ExceptionInformation4' - .field public native int 'ExceptionInformation5' - .field public native int 'ExceptionInformation6' - .field public native int 'ExceptionInformation7' - .field public native int 'ExceptionInformation8' - .field public native int 'ExceptionInformation9' - .field public native int 'ExceptionInformation10' - .field public native int 'ExceptionInformation11' - .field public native int 'ExceptionInformation12' - .field public native int 'ExceptionInformation13' - .field public native int 'ExceptionInformation14' - - //This private field was generated by ASMMETA as a placeholder and does not exist in the actual assembly. - .field private int32 __Asmmeta_Private_Field - .property instance bool 'IsNotContinuable'() - { - .get instance bool 'Microsoft.Samples.Debugging.Native'.'EXCEPTION_RECORD'::'get_IsNotContinuable'() - } - } - .class public sequential sealed 'EXIT_PROCESS_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'dwExitCode' - } - .class public sequential sealed 'EXIT_THREAD_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'dwExitCode' - } - .class public sealed 'ExceptionCode' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname uint32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'DBG_CONTROL_C' = uint32(0x40010005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'EXCEPTION_ACCESS_VIOLATION' = uint32(0xC0000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'EXCEPTION_INT_DIVIDE_BY_ZERO' = uint32(0xC0000094) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'EXCEPTION_NONCONTINUABLE_EXCEPTION' = uint32(0xC0000025) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'EXCEPTION_STACK_OVERFLOW' = uint32(0xC00000FD) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'None' = uint32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'STATUS_BREAKPOINT' = uint32(0x80000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionCode' 'STATUS_SINGLESTEP' = uint32(0x80000004) - } - .class public sealed 'ExceptionRecordFlags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname uint32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionRecordFlags' 'EXCEPTION_NONCONTINUABLE' = uint32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ExceptionRecordFlags' 'None' = uint32(0x00000000) - } - .class public sealed 'IA64Flags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int64 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Flags' 'IA64_BUNDLE_SIZE' = int64(0x10) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Flags' 'PSR_RI' = int64(0x29) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Flags' 'SINGLE_STEP_FLAG' = int64(0x1000000000) - } - .class public sealed 'IA64Offsets' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'ApCCV' = int32(0x000009D8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'ApDCR' = int32(0x000009E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'ApEC' = int32(0x000009D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'ApLC' = int32(0x000009C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'ApUNAT' = int32(0x000009C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrRp' = int32(0x00000980) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrS0' = int32(0x00000988) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrS1' = int32(0x00000990) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrS2' = int32(0x00000998) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrS3' = int32(0x000009A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrS4' = int32(0x000009A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrT0' = int32(0x000009B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'BrT1' = int32(0x000009B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'Cflag' = int32(0x00000A48) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'ContextFlags' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD0' = int32(0x00000050) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD1' = int32(0x00000058) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD2' = int32(0x00000060) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD3' = int32(0x00000068) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD4' = int32(0x00000070) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD5' = int32(0x00000078) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD6' = int32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbD7' = int32(0x00000088) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI0' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI1' = int32(0x00000018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI2' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI3' = int32(0x00000028) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI4' = int32(0x00000030) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI5' = int32(0x00000038) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI6' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'DbI7' = int32(0x00000048) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'Eflag' = int32(0x00000A30) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF100' = int32(0x000006B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF101' = int32(0x000006C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF102' = int32(0x000006D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF103' = int32(0x000006E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF104' = int32(0x000006F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF105' = int32(0x00000700) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF106' = int32(0x00000710) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF107' = int32(0x00000720) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF108' = int32(0x00000730) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF109' = int32(0x00000740) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF110' = int32(0x00000750) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF111' = int32(0x00000760) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF112' = int32(0x00000770) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF113' = int32(0x00000780) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF114' = int32(0x00000790) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF115' = int32(0x000007A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF116' = int32(0x000007B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF117' = int32(0x000007C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF118' = int32(0x000007D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF119' = int32(0x000007E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF120' = int32(0x000007F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF121' = int32(0x00000800) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF122' = int32(0x00000810) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF123' = int32(0x00000820) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF124' = int32(0x00000830) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF125' = int32(0x00000840) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF126' = int32(0x00000850) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF127' = int32(0x00000860) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF32' = int32(0x00000270) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF33' = int32(0x00000280) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF34' = int32(0x00000290) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF35' = int32(0x000002A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF36' = int32(0x000002B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF37' = int32(0x000002C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF38' = int32(0x000002D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF39' = int32(0x000002E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF40' = int32(0x000002F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF41' = int32(0x00000300) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF42' = int32(0x00000310) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF43' = int32(0x00000320) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF44' = int32(0x00000330) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF45' = int32(0x00000340) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF46' = int32(0x00000350) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF47' = int32(0x00000360) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF48' = int32(0x00000370) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF49' = int32(0x00000380) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF50' = int32(0x00000390) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF51' = int32(0x000003A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF52' = int32(0x000003B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF53' = int32(0x000003C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF54' = int32(0x000003D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF55' = int32(0x000003E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF56' = int32(0x000003F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF57' = int32(0x00000400) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF58' = int32(0x00000410) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF59' = int32(0x00000420) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF60' = int32(0x00000430) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF61' = int32(0x00000440) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF62' = int32(0x00000450) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF63' = int32(0x00000460) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF64' = int32(0x00000470) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF65' = int32(0x00000480) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF66' = int32(0x00000490) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF67' = int32(0x000004A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF68' = int32(0x000004B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF69' = int32(0x000004C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF70' = int32(0x000004D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF71' = int32(0x000004E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF72' = int32(0x000004F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF73' = int32(0x00000500) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF74' = int32(0x00000510) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF75' = int32(0x00000520) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF76' = int32(0x00000530) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF77' = int32(0x00000540) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF78' = int32(0x00000550) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF79' = int32(0x00000560) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF80' = int32(0x00000570) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF81' = int32(0x00000580) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF82' = int32(0x00000590) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF83' = int32(0x000005A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF84' = int32(0x000005B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF85' = int32(0x000005C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF86' = int32(0x000005D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF87' = int32(0x000005E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF88' = int32(0x000005F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF89' = int32(0x00000600) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF90' = int32(0x00000610) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF91' = int32(0x00000620) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF92' = int32(0x00000630) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF93' = int32(0x00000640) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF94' = int32(0x00000650) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF95' = int32(0x00000660) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF96' = int32(0x00000670) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF97' = int32(0x00000680) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF98' = int32(0x00000690) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltF99' = int32(0x000006A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS0' = int32(0x00000090) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS1' = int32(0x000000A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS10' = int32(0x000001D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS11' = int32(0x000001E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS12' = int32(0x000001F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS13' = int32(0x00000200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS14' = int32(0x00000210) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS15' = int32(0x00000220) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS16' = int32(0x00000230) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS17' = int32(0x00000240) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS18' = int32(0x00000250) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS19' = int32(0x00000260) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS2' = int32(0x000000B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS3' = int32(0x000000C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS4' = int32(0x00000170) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS5' = int32(0x00000180) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS6' = int32(0x00000190) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS7' = int32(0x000001A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS8' = int32(0x000001B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltS9' = int32(0x000001C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT0' = int32(0x000000D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT1' = int32(0x000000E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT2' = int32(0x000000F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT3' = int32(0x00000100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT4' = int32(0x00000110) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT5' = int32(0x00000120) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT6' = int32(0x00000130) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT7' = int32(0x00000140) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT8' = int32(0x00000150) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'FltT9' = int32(0x00000160) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntGp' = int32(0x00000878) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntNats' = int32(0x00000970) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntS0' = int32(0x00000890) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntS1' = int32(0x00000898) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntS2' = int32(0x000008A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntS3' = int32(0x000008A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntSp' = int32(0x000008D0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT0' = int32(0x00000880) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT1' = int32(0x00000888) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT10' = int32(0x00000908) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT11' = int32(0x00000910) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT12' = int32(0x00000918) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT13' = int32(0x00000920) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT14' = int32(0x00000928) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT15' = int32(0x00000930) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT16' = int32(0x00000938) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT17' = int32(0x00000940) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT18' = int32(0x00000948) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT19' = int32(0x00000950) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT2' = int32(0x000008B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT20' = int32(0x00000958) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT21' = int32(0x00000960) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT22' = int32(0x00000968) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT3' = int32(0x000008C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT4' = int32(0x000008C8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT5' = int32(0x000008E0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT6' = int32(0x000008E8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT7' = int32(0x000008F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT8' = int32(0x000008F8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntT9' = int32(0x00000900) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntTeb' = int32(0x000008D8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'IntV0' = int32(0x000008B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'Preds' = int32(0x00000978) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'RsBSP' = int32(0x000009F0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'RsBSPSTORE' = int32(0x000009F8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'RsPFS' = int32(0x000009E8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'RsRNAT' = int32(0x00000A08) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'RsRSC' = int32(0x00000A00) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'SegCSD' = int32(0x00000A38) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'SegSSD' = int32(0x00000A40) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StFCR' = int32(0x00000A28) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StFDR' = int32(0x00000A60) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StFIR' = int32(0x00000A58) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StFPSR' = int32(0x00000870) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StFSR' = int32(0x00000A50) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StIFS' = int32(0x00000A20) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StIIP' = int32(0x00000A18) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'StIPSR' = int32(0x00000A10) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'IA64Offsets' 'UNUSEDPACK' = int32(0x00000A68) - } - .class public interface abstract 'IMemoryReader' - { - .method public virtual hidebysig newslot abstract - instance void 'ReadMemory'(native int 'address', uint8[] 'buffer') - { - } - } - .class public sealed 'ImageFileMachine' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ImageFileMachine' 'AMD64' = int32(0x00008664) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ImageFileMachine' 'ARM' = int32(0x000001C4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ImageFileMachine' 'IA64' = int32(0x00000200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ImageFileMachine' 'X86' = int32(0x0000014C) - } - .class public sequential sealed 'LOAD_DLL_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig - instance string 'ReadImageNameFromTarget'(class 'Microsoft.Samples.Debugging.Native'.'IMemoryReader' 'reader') - { - ret - } - .field public native int 'hFile' - .field public native int 'lpBaseOfDll' - .field public uint32 'dwDebugInfoFileOffset' - .field public uint32 'nDebugInfoSize' - .field public native int 'lpImageName' - .field public uint16 'fUnicode' - } - .class public sequential sealed 'ModuleInfo' - extends ['mscorlib']'System'.'ValueType' - { - .field public native int 'lpBaseOfDll' - .field public uint32 'SizeOfImage' - .field public native int 'EntryPoint' - } - .class public sealed 'NativeDebugEventCode' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'CREATE_PROCESS_DEBUG_EVENT' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'CREATE_THREAD_DEBUG_EVENT' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'EXCEPTION_DEBUG_EVENT' = int32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'EXIT_PROCESS_DEBUG_EVENT' = int32(0x00000005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'EXIT_THREAD_DEBUG_EVENT' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'LOAD_DLL_DEBUG_EVENT' = int32(0x00000006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'None' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'OUTPUT_DEBUG_STRING_EVENT' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'RIP_EVENT' = int32(0x00000009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeDebugEventCode' 'UNLOAD_DLL_DEBUG_EVENT' = int32(0x00000007) - } - .class public abstract sealed 'NativeMethods' - extends ['mscorlib']'System'.'Object' - { - .class nested public sealed 'ContinueStatus' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname uint32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'ContinueStatus' 'CONTINUED' = uint32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'ContinueStatus' 'DBG_CONTINUE' = uint32(0x00010002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'ContinueStatus' 'DBG_EXCEPTION_NOT_HANDLED' = uint32(0x80010001) - } - .class nested public sealed 'CreateProcessFlags' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'CreateProcessFlags' 'CREATE_NEW_CONSOLE' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'CreateProcessFlags' 'DEBUG_ONLY_THIS_PROCESS' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'CreateProcessFlags' 'DEBUG_PROCESS' = int32(0x00000001) - } - .class nested public sealed 'LoadLibraryFlags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname uint32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'DontResolveDllReferences' = uint32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'LoadIgnoreCodeAuthzLevel' = uint32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'LoadLibraryAsDatafile' = uint32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'LoadLibraryAsDatafileExclusive' = uint32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'LoadLibraryAsImageResource' = uint32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'LoadWithAlteredSearchPath' = uint32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'LoadLibraryFlags' 'NoFlags' = uint32(0x00000000) - } - .class nested public sealed 'PageProtection' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname uint32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'Execute' = uint32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'ExecuteRead' = uint32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'ExecuteReadWrite' = uint32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'ExecuteWriteCopy' = uint32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'Guard' = uint32(0x00000100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'NoAccess' = uint32(0x00000001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'NoCache' = uint32(0x00000200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'ReadWrite' = uint32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'Readonly' = uint32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'WriteCombine' = uint32(0x00000400) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'WriteCopy' = uint32(0x00000008) - } - .class nested public sequential sealed 'SYSTEM_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public uint32 'dwPageSize' - .field public native int 'lpMinimumApplicationAddress' - .field public native int 'lpMaximumApplicationAddress' - .field public native int 'dwActiveProcessorMask' - .field public uint32 'dwNumberOfProcessors' - .field public uint32 'dwProcessorType' - .field public uint32 'dwAllocationGranularity' - .field public uint16 'dwProcessorLevel' - .field public uint16 'dwProcessorRevision' - - //This private field was generated by ASMMETA as a placeholder and does not exist in the actual assembly. - .field private int32 __Asmmeta_Private_Field - } - .class nested public sealed 'SafeLoadLibraryHandle' - extends ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeHandleZeroOrMinusOneIsInvalid' - { - .permissionset linkcheck = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 34 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 12 01 54 02 0D 55 6E 6D 61 6E 61 67 65 64 43 6F 64 65 01) - .method public hidebysig specialname - instance void '.ctor'(native int 'handle') - { - ret - } - .method family virtual hidebysig - instance bool 'ReleaseHandle'() - { - ret - } - .method public hidebysig specialname - instance native int 'get_BaseAddress'() - { - ret - } - .property instance native int 'BaseAddress'() - { - .get instance native int 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'SafeLoadLibraryHandle'::'get_BaseAddress'() - } - } - .class nested public sealed 'SafeMapViewHandle' - extends ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeHandleZeroOrMinusOneIsInvalid' - { - .permissionset linkcheck = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 34 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 12 01 54 02 0D 55 6E 6D 61 6E 61 67 65 64 43 6F 64 65 01) - .method family virtual hidebysig - instance bool 'ReleaseHandle'() - { - ret - } - .method public hidebysig specialname - instance native int 'get_BaseAddress'() - { - ret - } - .property instance native int 'BaseAddress'() - { - .get instance native int 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'SafeMapViewHandle'::'get_BaseAddress'() - } - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'CloseHandle'(native int 'handle') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - int32 'WaitForSingleObject'(native int 'hHandle', uint32 'dwMilliseconds') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'GetThreadContext'(native int 'hThread', native int 'lpContext') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - native int 'OpenThread'(valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'dwDesiredAccess', bool marshal(bool) 'bInheritHandle', uint32 'dwThreadId') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - class 'Microsoft.Samples.Debugging.Native'.'SafeWin32Handle' 'OpenProcess'(int32 'dwDesiredAccess', bool 'bInheritHandle', int32 'dwProcessId') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'SetThreadContext'(native int 'hThread', native int 'lpContext') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - int32 'GetCurrentThreadId'() - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'IsWow64Process'(class 'Microsoft.Samples.Debugging.Native'.'SafeWin32Handle' 'hProcess', bool& 'isWow') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - class 'Microsoft.Samples.Debugging.Native'.'SafeWin32Handle' 'CreateFileMapping'(class ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeFileHandle' 'hFile', native int 'lpFileMappingAttributes', valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'PageProtection' 'flProtect', uint32 'dwMaximumSizeHigh', uint32 'dwMaximumSizeLow', string 'lpName') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'UnmapViewOfFile'(native int 'baseAddress') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - class 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'SafeMapViewHandle' 'MapViewOfFile'(class 'Microsoft.Samples.Debugging.Native'.'SafeWin32Handle' 'hFileMappingObject', uint32 'dwDesiredAccess', uint32 'dwFileOffsetHigh', uint32 'dwFileOffsetLow', native int 'dwNumberOfBytesToMap') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'GetFileSizeEx'(native int 'hFile', [out] int64& 'lpFileSize') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'GetModuleInformation'(native int 'hProcess', native int 'hModule', [out] valuetype 'Microsoft.Samples.Debugging.Native'.'ModuleInfo'& 'lpmodinfo', uint32 'countBytes') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'ReadProcessMemory'(native int 'hProcess', native int 'lpBaseAddress', uint8[] 'lpBuffer', native uint 'nSize', [out] int32& 'lpNumberOfBytesRead') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'DebugSetProcessKillOnExit'(bool marshal(bool) 'KillOnExit') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'DebugBreakProcess'(native int 'hProcess') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'SetEvent'(class 'Microsoft.Samples.Debugging.Native'.'SafeWin32Handle' 'eventHandle') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'CreateProcess'(string 'lpApplicationName', string 'lpCommandLine', native int 'lpProcessAttributes', native int 'lpThreadAttributes', bool marshal(bool) 'bInheritHandles', valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'CreateProcessFlags' 'dwCreationFlags', native int 'lpEnvironment', string 'lpCurrentDirectory', class 'Microsoft.Samples.Debugging.NativeApi'.'STARTUPINFO' 'lpStartupInfo', class 'Microsoft.Samples.Debugging.NativeApi'.'PROCESS_INFORMATION' 'lpProcessInformation') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'DebugActiveProcess'(uint32 'dwProcessId') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'DebugActiveProcessStop'(uint32 'dwProcessId') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'TerminateProcess'(native int 'hProcess', uint32 'uExitCode') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'WaitForDebugEvent32'(valuetype 'Microsoft.Samples.Debugging.Native'.'DebugEvent32'& 'pDebugEvent', int32 'dwMilliseconds') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'WaitForDebugEvent64'(valuetype 'Microsoft.Samples.Debugging.Native'.'DebugEvent64'& 'pDebugEvent', int32 'dwMilliseconds') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool marshal(bool) 'ContinueDebugEvent'(uint32 'dwProcessId', uint32 'dwThreadId', valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'ContinueStatus' 'dwContinueStatus') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - void 'GetSystemInfo'([out] valuetype 'Microsoft.Samples.Debugging.Native'.'NativeMethods'/'SYSTEM_INFO'& marshal(struct) 'lpSystemInfo') - preservesig - { - } - } - .class public sequential sealed 'OUTPUT_DEBUG_STRING_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .method public hidebysig - instance string 'ReadMessageFromTarget'(class 'Microsoft.Samples.Debugging.Native'.'IMemoryReader' 'reader') - { - ret - } - .field public native int 'lpDebugStringData' - .field public uint16 'fUnicode' - .field public uint16 'nDebugStringLength' - } - .class public sealed 'Platform' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'Platform' 'AMD64' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'Platform' 'ARM' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'Platform' 'IA64' = int32(0x00000003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'Platform' 'None' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'Platform' 'X86' = int32(0x00000001) - } - .class public sealed 'ProcessorArchitecture' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname uint16 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_ALPHA' = uint16(0x0002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_ALPHA64' = uint16(0x0007) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_AMD64' = uint16(0x0009) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_ARM' = uint16(0x0005) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_IA32_ON_WIN64' = uint16(0x000A) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_IA64' = uint16(0x0006) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_INTEL' = uint16(0x0000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_MIPS' = uint16(0x0001) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_MSIL' = uint16(0x0008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_PPC' = uint16(0x0003) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ProcessorArchitecture' 'PROCESSOR_ARCHITECTURE_SHX' = uint16(0x0004) - } - .class public serializable 'ReadMemoryFailureException' - extends ['mscorlib']'System'.'InvalidOperationException' - { - .method public hidebysig specialname - instance void '.ctor'(native int 'address', int32 'countBytes') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(native int 'address', int32 'countBytes', class ['mscorlib']'System'.'Exception' 'innerException') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(string 'message', class ['mscorlib']'System'.'Exception' 'innerException') - { - ret - } - .method family hidebysig specialname - instance void '.ctor'(class ['mscorlib']'System.Runtime.Serialization'.'SerializationInfo' 'info', valuetype ['mscorlib']'System.Runtime.Serialization'.'StreamingContext' 'context') - { - ret - } - } - .class public sealed 'SafeWin32Handle' - extends ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeHandleZeroOrMinusOneIsInvalid' - { - .permissionset linkcheck = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 34 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 12 01 54 02 0D 55 6E 6D 61 6E 61 67 65 64 43 6F 64 65 01) - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'(native int 'handle') - { - ret - } - .method family virtual hidebysig - instance bool 'ReleaseHandle'() - { - ret - } - } - .class public sealed 'ThreadAccess' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'None' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_ALL_ACCESS' = int32(0x001F03FF) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_DIRECT_IMPERSONATION' = int32(0x00000200) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_GET_CONTEXT' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_IMPERSONATE' = int32(0x00000100) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_QUERY_INFORMATION' = int32(0x00000040) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_QUERY_LIMITED_INFORMATION' = int32(0x00000800) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_SET_CONTEXT' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_SET_INFORMATION' = int32(0x00000020) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_SET_LIMITED_INFORMATION' = int32(0x00000400) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_SET_THREAD_TOKEN' = int32(0x00000080) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_SUSPEND_RESUME' = int32(0x00000002) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'ThreadAccess' 'THREAD_TERMINATE' = int32(0x00000001) - } - .class public sequential sealed 'UNLOAD_DLL_DEBUG_INFO' - extends ['mscorlib']'System'.'ValueType' - { - .field public native int 'lpBaseOfDll' - } - .class public sealed 'X86Flags' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Flags' 'SINGLE_STEP_FLAG' = int32(0x00000100) - } - .class public sealed 'X86Offsets' - extends ['mscorlib']'System'.'Enum' - { - .custom instance void ['mscorlib']'System'.'FlagsAttribute'::.ctor() = (01 00 00 00) - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'ContextFlags' = int32(0x00000000) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Dr0' = int32(0x00000004) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Dr1' = int32(0x00000008) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Dr2' = int32(0x0000000C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Dr3' = int32(0x00000010) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Dr6' = int32(0x00000014) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Dr7' = int32(0x00000018) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'EFlags' = int32(0x000000C0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Eax' = int32(0x000000B0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Ebp' = int32(0x000000B4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Ebx' = int32(0x000000A4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Ecx' = int32(0x000000AC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Edi' = int32(0x0000009C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Edx' = int32(0x000000A8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Eip' = int32(0x000000B8) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Esi' = int32(0x000000A0) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'Esp' = int32(0x000000C4) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'ExtendedRegisters' = int32(0x000000CB) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'FloatSave' = int32(0x0000001C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'SegCs' = int32(0x000000BC) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'SegDs' = int32(0x00000098) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'SegEs' = int32(0x00000094) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'SegFs' = int32(0x00000090) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'SegGs' = int32(0x0000008C) - .field static public literal valuetype 'Microsoft.Samples.Debugging.Native'.'X86Offsets' 'SegSs' = int32(0x000000C8) - } -} -.namespace 'Microsoft.Samples.Debugging.NativeApi' -{ - .class public sequential 'PROCESS_INFORMATION' - extends ['mscorlib']'System'.'Object' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComVisibleAttribute'::.ctor(bool) = (01 00 00 00 00) - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public native int 'hProcess' - .field public native int 'hThread' - .field public int32 'dwProcessId' - .field public int32 'dwThreadId' - } - .class public sequential 'SECURITY_ATTRIBUTES' - extends ['mscorlib']'System'.'Object' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComVisibleAttribute'::.ctor(bool) = (01 00 00 00 00) - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public int32 'nLength' - .field public native int 'lpSecurityDescriptor' - .field public bool 'bInheritHandle' - } - .class public sequential autochar 'STARTUPINFO' - extends ['mscorlib']'System'.'Object' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComVisibleAttribute'::.ctor(bool) = (01 00 00 00 00) - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .field public int32 'cb' - .field public string 'lpReserved' - .field public string 'lpDesktop' - .field public string 'lpTitle' - .field public int32 'dwX' - .field public int32 'dwY' - .field public int32 'dwXSize' - .field public int32 'dwYSize' - .field public int32 'dwXCountChars' - .field public int32 'dwYCountChars' - .field public int32 'dwFillAttribute' - .field public int32 'dwFlags' - .field public int16 'wShowWindow' - .field public int16 'cbReserved2' - .field public native int 'lpReserved2' - .field public class ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeFileHandle' 'hStdInput' - .field public class ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeFileHandle' 'hStdOutput' - .field public class ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeFileHandle' 'hStdError' - } -} -.namespace 'Profiler' -{ - .class public sealed 'CLRDebugging' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig - instance class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'OpenVirtualProcess'(uint64 'moduleBaseAddress', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugDataTarget' 'dataTarget', class 'Profiler'.'ICLRDebuggingLibraryProvider' 'libraryProvider', class ['mscorlib']'System'.'Version' 'maxDebuggerSupportedVersion', [out] class ['mscorlib']'System'.'Version'& 'version', [out] valuetype 'Profiler'.'ClrDebuggingProcessFlags'& 'flags') - { - ret - } - .method public hidebysig - instance int32 'TryOpenVirtualProcess'(uint64 'moduleBaseAddress', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugDataTarget' 'dataTarget', class 'Profiler'.'ICLRDebuggingLibraryProvider' 'libraryProvider', class ['mscorlib']'System'.'Version' 'maxDebuggerSupportedVersion', [out] class ['mscorlib']'System'.'Version'& 'version', [out] valuetype 'Profiler'.'ClrDebuggingProcessFlags'& 'flags', [out] class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess'& 'process') - { - ret - } - .method public hidebysig - instance bool 'CanUnloadNow'(native int 'moduleHandle') - { - ret - } - } - .class public sealed 'CLRMetaHost' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .method public hidebysig - instance class 'Profiler'.'CLRRuntimeInfo' 'GetInstalledRuntimeByVersion'(string 'version') - { - ret - } - .method public hidebysig - instance class 'Profiler'.'CLRRuntimeInfo' 'GetLoadedRuntimeByVersion'(int32 'processId', string 'version') - { - ret - } - .method public hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateInstalledRuntimes'() - { - ret - } - .method public hidebysig - instance class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'EnumerateLoadedRuntimes'(int32 'processId') - { - ret - } - .method public hidebysig - instance class 'Profiler'.'CLRRuntimeInfo' 'GetRuntime'(string 'version') - { - ret - } - .field static public literal int32 'MaxVersionStringLength' = int32(0x0000001A) - } - .class public sealed 'CLRRuntimeInfo' - extends ['mscorlib']'System'.'Object' - { - .method public hidebysig specialname - instance void '.ctor'(object 'clrRuntimeInfo') - { - ret - } - .method public hidebysig - instance string 'GetVersionString'() - { - ret - } - .method public hidebysig - instance string 'GetRuntimeDirectory'() - { - ret - } - .method public hidebysig - instance class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' 'GetLegacyICorDebugInterface'() - { - ret - } - .method public hidebysig - instance class 'ICLRProfiling' 'GetProfilingInterface'() - { - ret - } - .method public hidebysig - instance class 'Profiler'.'IMetaDataDispenser' 'GetIMetaDataDispenser'() - { - ret - } - } - .class public sealed 'ClrDebuggingProcessFlags' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Profiler'.'ClrDebuggingProcessFlags' 'ManagedDebugEventPending' = int32(0x00000001) - } - .class public sequential sealed 'ClrDebuggingVersion' - extends ['mscorlib']'System'.'ValueType' - { - .field public int16 'StructVersion' - .field public int16 'Major' - .field public int16 'Minor' - .field public int16 'Build' - .field public int16 'Revision' - } - .class public 'Debugger' - extends ['mscorlib']'System'.'Object' - { - .method public static hidebysig - class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' 'GetDebuggerForProcess'(int32 'processID', string 'minimumVersion', [opt] class 'Profiler'.'DebuggerCallBacks' 'callBacks') - { - .param [3] = nullref - ret - } - .method public static hidebysig - class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'GetDebuggerHandleFromProcessDump'(string 'processDumpFile', [opt] int64 'clrInstanceId') - { - .param [2] = int64(0x0) - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - } - .class public 'DebuggerCallBacks' - extends ['mscorlib']'System'.'Object' - implements 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback3', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback2', 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugManagedCallback' - { - .method public virtual hidebysig newslot - instance void 'CustomNotification'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain') - { - ret - } - .method public virtual hidebysig newslot - instance void 'FunctionRemapOpportunity'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' 'pOldFunction', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' 'pNewFunction', uint32 'oldILOffset') - { - ret - } - .method public virtual hidebysig newslot - instance void 'CreateConnection'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess', uint32 'dwConnectionId', uint16& 'pConnName') - { - ret - } - .method public virtual hidebysig newslot - instance void 'ChangeConnection'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess', uint32 'dwConnectionId') - { - ret - } - .method public virtual hidebysig newslot - instance void 'DestroyConnection'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess', uint32 'dwConnectionId') - { - ret - } - .method public virtual hidebysig newslot - instance void 'Exception'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFrame' 'pFrame', uint32 'nOffset', valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionCallbackType' 'dwEventType', uint32 'dwFlags') - { - ret - } - .method public virtual hidebysig newslot - instance void 'ExceptionUnwind'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugExceptionUnwindCallbackType' 'dwEventType', uint32 'dwFlags') - { - ret - } - .method public virtual hidebysig newslot - instance void 'FunctionRemapComplete'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' 'pFunction') - { - ret - } - .method public virtual hidebysig newslot - instance void 'MDANotification'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugController' 'pController', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugMDA' 'pMDA') - { - ret - } - .method public virtual hidebysig newslot - instance void 'Breakpoint'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' 'pBreakpoint') - { - ret - } - .method public virtual hidebysig newslot - instance void 'StepComplete'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugStepper' 'pStepper', valuetype 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'CorDebugStepReason' 'reason') - { - ret - } - .method public virtual hidebysig newslot - instance void 'Break'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'thread') - { - ret - } - .method public virtual hidebysig newslot - instance void 'Exception'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', int32 'unhandled') - { - ret - } - .method public virtual hidebysig newslot - instance void 'EvalComplete'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEval' 'pEval') - { - ret - } - .method public virtual hidebysig newslot - instance void 'EvalException'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugEval' 'pEval') - { - ret - } - .method public virtual hidebysig newslot - instance void 'CreateProcess'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess') - { - ret - } - .method public virtual hidebysig newslot - instance void 'ExitProcess'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess') - { - ret - } - .method public virtual hidebysig newslot - instance void 'CreateThread'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'thread') - { - ret - } - .method public virtual hidebysig newslot - instance void 'ExitThread'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'thread') - { - ret - } - .method public virtual hidebysig newslot - instance void 'LoadModule'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' 'pModule') - { - ret - } - .method public virtual hidebysig newslot - instance void 'UnloadModule'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' 'pModule') - { - ret - } - .method public virtual hidebysig newslot - instance void 'LoadClass'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' 'c') - { - ret - } - .method public virtual hidebysig newslot - instance void 'UnloadClass'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugClass' 'c') - { - ret - } - .method public virtual hidebysig newslot - instance void 'DebuggerError'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess', int32 'errorHR', uint32 'errorCode') - { - ret - } - .method public virtual hidebysig newslot - instance void 'LogMessage'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', int32 'lLevel', string 'pLogSwitchName', string 'pMessage') - { - ret - } - .method public virtual hidebysig newslot - instance void 'LogSwitch'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', int32 'lLevel', uint32 'ulReason', string 'pLogSwitchName', string 'pParentName') - { - ret - } - .method public virtual hidebysig newslot - instance void 'CreateAppDomain'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain') - { - ret - } - .method public virtual hidebysig newslot - instance void 'ExitAppDomain'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain') - { - ret - } - .method public virtual hidebysig newslot - instance void 'LoadAssembly'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly' 'pAssembly') - { - ret - } - .method public virtual hidebysig newslot - instance void 'UnloadAssembly'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAssembly' 'pAssembly') - { - ret - } - .method public virtual hidebysig newslot - instance void 'ControlCTrap'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugProcess' 'pProcess') - { - ret - } - .method public virtual hidebysig newslot - instance void 'NameChange'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread') - { - ret - } - .method public virtual hidebysig newslot - instance void 'UpdateModuleSymbols'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugModule' 'pModule', class ['mscorlib']'System.Runtime.InteropServices.ComTypes'.'IStream' 'pSymbolStream') - { - ret - } - .method public virtual hidebysig newslot - instance void 'EditAndContinueRemap'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugFunction' 'pFunction', int32 'fAccurate') - { - ret - } - .method public virtual hidebysig newslot - instance void 'BreakpointSetError'(class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugAppDomain' 'pAppDomain', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugThread' 'pThread', class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebugBreakpoint' 'pBreakpoint', uint32 'dwError') - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - } - .class public interface abstract import 'ICLRDebugging' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 44 32 38 46 33 43 35 41 2D 39 36 33 34 2D 34 32 30 36 2D 41 35 30 39 2D 34 37 37 35 35 32 45 45 46 42 31 30 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance int32 'OpenVirtualProcess'([in] uint64 'moduleBaseAddress', [in] object marshal(iunknown) 'dataTarget', [in] class 'Profiler'.'ICLRDebuggingLibraryProvider' marshal(interface) 'libraryProvider', [in] valuetype 'Profiler'.'ClrDebuggingVersion'& 'maxDebuggerSupportedVersion', [in] valuetype ['mscorlib']'System'.'Guid'& 'riidProcess', [out] object& marshal(iunknown) 'process', [in][out] valuetype 'Profiler'.'ClrDebuggingVersion'& 'version', [out] valuetype 'Profiler'.'ClrDebuggingProcessFlags'& 'flags') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance int32 'CanUnloadNow'(native int 'moduleHandle') - preservesig - { - } - } - .class public interface abstract import 'ICLRDebuggingLibraryProvider' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 33 31 35 31 43 30 38 44 2D 34 44 30 39 2D 34 66 39 62 2D 38 38 33 38 2D 32 38 38 30 42 46 31 38 46 45 35 31 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance int32 'ProvideLibrary'([in] string marshal(lpwstr) 'fileName', int32 'timestamp', int32 'sizeOfImage', [out] native int& 'hModule') - preservesig - { - } - } - .class public interface abstract import 'IMetaDataDispenser' - { - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 38 30 39 43 36 35 32 45 2D 37 33 39 36 2D 31 31 44 32 2D 39 37 37 31 2D 30 30 41 30 43 39 42 34 44 35 30 43 00 00) - .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'InterfaceTypeAttribute'::.ctor(valuetype ['mscorlib']'System.Runtime.InteropServices'.'ComInterfaceType') = (01 00 01 00 00 00 00 00) - .method public virtual hidebysig newslot abstract - instance void 'DefineScope'([in] valuetype ['mscorlib']'System'.'Guid'& 'rclsid', [in] uint32 'dwCreateFlags', [in] valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(interface) 'ppIUnk') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'OpenScope'([in] string marshal(lpwstr) 'szScope', [in] int32 'dwOpenFlags', [in] valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(interface) 'ppIUnk') - preservesig - { - } - .method public virtual hidebysig newslot abstract - instance void 'OpenScopeOnMemory'([in] native int 'pData', [in] uint32 'cbData', [in] int32 'dwOpenFlags', [in] valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(iunknown) 'ppIUnk') - preservesig - { - } - } - .class public 'LibraryProvider' - extends ['mscorlib']'System'.'Object' - implements 'Profiler'.'ICLRDebuggingLibraryProvider' - { - .method public final virtual hidebysig newslot - instance int32 'ProvideLibrary'(string 'fileName', int32 'timestamp', int32 'sizeOfImage', [out] native int& 'hModule') - { - ret - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - native int 'LoadLibrary'(string 'fileName') - preservesig - { - } - .method public hidebysig specialname - instance string 'get_LastLoadedDbi'() - { - ret - } - .method public hidebysig specialname - instance string 'get_LastLoadedDac'() - { - ret - } - .method public hidebysig specialname - instance void '.ctor'() - { - ret - } - .property instance string 'LastLoadedDac'() - { - .get instance string 'Profiler'.'LibraryProvider'::'get_LastLoadedDac'() - } - .property instance string 'LastLoadedDbi'() - { - .get instance string 'Profiler'.'LibraryProvider'::'get_LastLoadedDbi'() - } - } - .class public abstract sealed 'NativeMethods' - extends ['mscorlib']'System'.'Object' - { - .class nested public sealed 'ProcessAccessOptions' - extends ['mscorlib']'System'.'Enum' - { - .field public rtspecialname specialname int32 'value__' - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessCreateProcess' = int32(0x00000080) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessCreateThread' = int32(0x00000002) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessDupHandle' = int32(0x00000040) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessQueryInformation' = int32(0x00000400) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessSetInformation' = int32(0x00000200) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessSetQuota' = int32(0x00000100) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessSetSessionID' = int32(0x00000004) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessSuspendResume' = int32(0x00000800) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessTerminate' = int32(0x00000001) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessVMOperation' = int32(0x00000008) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessVMRead' = int32(0x00000010) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'ProcessVMWrite' = int32(0x00000020) - .field static public literal valuetype 'Profiler'.'NativeMethods'/'ProcessAccessOptions' 'Synchronize' = int32(0x00100000) - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - bool 'CloseHandle'(native int 'handle') - preservesig - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - class 'Microsoft.Samples.Debugging.CorDebug.NativeApi'.'ICorDebug' 'CreateDebuggingInterfaceFromVersion'(int32 'iDebuggerVersion', string 'szDebuggeeVersion') - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - void 'GetVersionFromProcess'(class 'Profiler'.'ProcessSafeHandle' 'hProcess', class ['mscorlib']'System.Text'.'StringBuilder' 'versionString', int32 'bufferSize', [out] int32& 'dwLength') - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - void 'GetRequestedRuntimeVersion'(string 'pExe', class ['mscorlib']'System.Text'.'StringBuilder' 'pVersion', int32 'cchBuffer', [out] int32& 'dwLength') - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - void 'CLRCreateInstance'(valuetype ['mscorlib']'System'.'Guid'& 'clsid', valuetype ['mscorlib']'System'.'Guid'& 'riid', [out] object& marshal(interface) 'metahostInterface') - { - } - .method public static hidebysig pinvokeimpl("dummy" winapi) - class 'Profiler'.'ProcessSafeHandle' 'OpenProcess'(int32 'dwDesiredAccess', bool 'bInheritHandle', int32 'dwProcessId') - preservesig - { - } - .field static public literal int32 'MAX_PATH' = int32(0x00000104) - } - .class public 'ProcessSafeHandle' - extends ['mscorlib']'Microsoft.Win32.SafeHandles'.'SafeHandleZeroOrMinusOneIsInvalid' - { - .method family virtual hidebysig - instance bool 'ReleaseHandle'() - { - .permissionset linkcheck = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 34 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 12 01 54 02 0D 55 6E 6D 61 6E 61 67 65 64 43 6F 64 65 01) - ret - } - } -} diff --git a/src/HeapDump/Program.cs b/src/HeapDump/Program.cs index 6fab003f4..061d07504 100644 --- a/src/HeapDump/Program.cs +++ b/src/HeapDump/Program.cs @@ -270,19 +270,15 @@ public static int GetProcessID(string processNameOrID) private static int PointerSizeForProcess(int processID) { - var ret = 4; - var procArch = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); - if (string.Compare(procArch, "AMD64", StringComparison.OrdinalIgnoreCase) != 0) - return ret; - ret = 8; + if (!Environment.Is64BitOperatingSystem) + return 4; + var process = Process.GetProcessById(processID); bool is32Bit = false; if (!IsWow64Process(process.Handle, out is32Bit)) throw new ApplicationException("Could not access process " + processID + " to determine target process architecture."); GC.KeepAlive(process); - if (is32Bit) - ret = 4; - return ret; + return is32Bit ? 4 : 8; } [DllImport("kernel32.dll", SetLastError = true), SuppressUnmanagedCodeSecurityAttribute] diff --git a/src/HeapDump/Properties/AssemblyInfo.cs b/src/HeapDump/Properties/AssemblyInfo.cs index 1ad863fc4..493d86f55 100644 --- a/src/HeapDump/Properties/AssemblyInfo.cs +++ b/src/HeapDump/Properties/AssemblyInfo.cs @@ -1,18 +1,4 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("HeapDump")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("HeapDump")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] +using System.Runtime.InteropServices; // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from @@ -21,16 +7,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("71c3bba5-ed89-4d4f-b5ca-334d6952143a")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/HeapDump/Utilities/commandLine.cs b/src/HeapDump/Utilities/commandLine.cs index dddbe2efb..74d74984c 100644 --- a/src/HeapDump/Utilities/commandLine.cs +++ b/src/HeapDump/Utilities/commandLine.cs @@ -111,42 +111,41 @@ /// The following example shows the steps for defining the parameters and qualifiers for the example. Note /// that the order is important. qualifiers that apply to all commands must be specified first, then each /// parameter set then finally the default parameter set. Most steps are optional. -#if EXAMPLE1 - class CommandLineParserExample1 - { - enum Command { checkout, checkin, list }; - static void Main() - { - string dataBaseName = "myDefaultDataBase"; - string comment = ""; - Command command = checkout; - string[] fileNames = null; - - // Step 1 define the parser. - CommandLineParser commandLineParser = new CommandLineParser(); // by default uses Environment.CommandLine - - // Step 2 (optional) define qualifiers that apply to all parameter sets. - commandLineParser.DefineOptionalParameter("dataBaseName", ref dataBaseName, "Help for database."); - - // Step 3A define the checkin command this includes all parameters and qualifiers specific to this command - commandLineParser.DefineParameterSet("checkin", ref command, Command.checkin, "Help for checkin."); - commandLineParser.DefineOptionalqualifiers("comment", ref comment, "Help for -comment."); - - // Step 3B define the list command this includes all parameters and qualifiers specific to this command - commandLineParser.DefineParameterSet("list", ref command, Command.list, "Help for list."); - - // Step 4 (optional) define the default parameter set (in this case checkout). - commandLineParser.DefineDefaultParameterSet("checkout", ref command, Command.checkout, "Help for checkout."); - commandLineParser.DefineParamter("fileNames", ref fileNames, "Help for fileNames."); - - // Step 5, do final validation (look for undefined qualifiers, extra parameters ... - commandLineParser.CompleteValidation(); - - // Step 6 use the parsed values - Console.WriteLine("Got {0} {1} {2} {3} {4}", dataBaseName, command, comment, string.Join(',', fileNames)); - } - } -#endif +/// class CommandLineParserExample1 +/// { +/// enum Command { checkout, checkin, list }; +/// static void Main() +/// { +/// string dataBaseName = "myDefaultDataBase"; +/// string comment = ""; +/// Command command = checkout; +/// string[] fileNames = null; +/// +/// // Step 1 define the parser. +/// CommandLineParser commandLineParser = new CommandLineParser(); // by default uses Environment.CommandLine +/// +/// // Step 2 (optional) define qualifiers that apply to all parameter sets. +/// commandLineParser.DefineOptionalParameter("dataBaseName", ref dataBaseName, "Help for database."); +/// +/// // Step 3A define the checkin command this includes all parameters and qualifiers specific to this command +/// commandLineParser.DefineParameterSet("checkin", ref command, Command.checkin, "Help for checkin."); +/// commandLineParser.DefineOptionalqualifiers("comment", ref comment, "Help for -comment."); +/// +/// // Step 3B define the list command this includes all parameters and qualifiers specific to this command +/// commandLineParser.DefineParameterSet("list", ref command, Command.list, "Help for list."); +/// +/// // Step 4 (optional) define the default parameter set (in this case checkout). +/// commandLineParser.DefineDefaultParameterSet("checkout", ref command, Command.checkout, "Help for checkout."); +/// commandLineParser.DefineParamter("fileNames", ref fileNames, "Help for fileNames."); +/// +/// // Step 5, do final validation (look for undefined qualifiers, extra parameters ... +/// commandLineParser.CompleteValidation(); +/// +/// // Step 6 use the parsed values +/// Console.WriteLine("Got {0} {1} {2} {3} {4}", dataBaseName, command, comment, string.Join(',', fileNames)); +/// } +/// } +/// /// #RequiredAndOptional /// /// Parameters and qualifiers can be specified as required (the default), or optional. Makeing the default @@ -228,62 +227,60 @@ static void Main() /// of command line parsing. Here is an example which defines a 'Ping' command. If you will notice there are /// very few lines of code that are not expressing something very specific to this applications. This is how /// it should be! -#if EXAMPLE2 - class CommandLineParserExample2 - { - static void Main() - { - // Step 1: Initialize to the defaults - string Host = null; - int Timeout = 1000; - bool Forever = false; - - // Step 2: Define the parameters, in this case there is only the default parameter set. - CommandLineParser.ParseForConsoleApplication(args, delegate(CommandLineParser parser) - { - parser.DefineOptionalQualifier("Timeout", ref Timeout, "Timeout in milliseconds to wait for each reply."); - parser.DefineOptionalQualifier("Forever", ref Forever, "Ping forever."); - parser.DefineDefaultParameterSet("Ping sends a network request to a host to reply to the message (to check for liveness)."); - parser.DefineParameter("Host", ref Host, "The Host to send a ping message to."); - }); - - // Step 3, use the parameters - Console.WriteLine("Got {0} {1} {2} {3}", Host, Timeout, Forever); - } - } -#endif +/// class CommandLineParserExample2 +/// { +/// static void Main() +/// { +/// // Step 1: Initialize to the defaults +/// string Host = null; +/// int Timeout = 1000; +/// bool Forever = false; +/// +/// // Step 2: Define the parameters, in this case there is only the default parameter set. +/// CommandLineParser.ParseForConsoleApplication(args, delegate(CommandLineParser parser) +/// { +/// parser.DefineOptionalQualifier("Timeout", ref Timeout, "Timeout in milliseconds to wait for each reply."); +/// parser.DefineOptionalQualifier("Forever", ref Forever, "Ping forever."); +/// parser.DefineDefaultParameterSet("Ping sends a network request to a host to reply to the message (to check for liveness)."); +/// parser.DefineParameter("Host", ref Host, "The Host to send a ping message to."); +/// }); +/// +/// // Step 3, use the parameters +/// Console.WriteLine("Got {0} {1} {2} {3}", Host, Timeout, Forever); +/// } +/// } +/// /// Using local variables for the parsed arguments if fine when the program is not complex and the values /// don't need to be passed around to many routines. In general, however it is often a better idea to /// create a class whose sole purpose is to act as a repository for the parsed arguments. This also nicely /// separates all command line processing into a single class. This is how the ping example would look in /// that style. Notice that the main program no longer holds any command line processing logic. and that /// 'commandLine' can be passed to other routines in bulk easily. -#if EXAMPLE3 -class CommandLineParserExample3 -{ - static void Main() - { - CommandLine commandLine = new CommandLine(); - Console.WriteLine("Got {0} {1} {2} {3}", commandLine.Host, commandLine.Timeout, commandLine.Forever); - } -} -class CommandLine -{ - public CommandLine() - { - CommandLineParser.ParseForConsoleApplication(args, delegate(CommandLineParser parser) - { - parser.DefineOptionalQualifier("Timeout", ref Timeout, "Timeout in milliseconds to wait for each reply."); - parser.DefineOptionalQualifier("Forever", ref Forever, "Ping forever."); - parser.DefineDefaultParameterSet("Ping sends a network request to a host to reply to the message (to check for liveness)."); - parser.DefineParameter("Host", ref Host, "The Host to send a ping message to."); - }); - } - public string Host = null; - public int Timeout = 1000; - public bool Forever = false; -}; -#endif +/// class CommandLineParserExample3 +/// { +/// static void Main() +/// { +/// CommandLine commandLine = new CommandLine(); +/// Console.WriteLine("Got {0} {1} {2} {3}", commandLine.Host, commandLine.Timeout, commandLine.Forever); +/// } +/// } +/// class CommandLine +/// { +/// public CommandLine() +/// { +/// CommandLineParser.ParseForConsoleApplication(args, delegate(CommandLineParser parser) +/// { +/// parser.DefineOptionalQualifier("Timeout", ref Timeout, "Timeout in milliseconds to wait for each reply."); +/// parser.DefineOptionalQualifier("Forever", ref Forever, "Ping forever."); +/// parser.DefineDefaultParameterSet("Ping sends a network request to a host to reply to the message (to check for liveness)."); +/// parser.DefineParameter("Host", ref Host, "The Host to send a ping message to."); +/// }); +/// } +/// public string Host = null; +/// public int Timeout = 1000; +/// public bool Forever = false; +/// }; +/// /// see code:#Overview for more /// public class CommandLineParser diff --git a/src/HeapDump/obj/HeapDump.csproj.CrossTargeting.targets b/src/HeapDump/obj/HeapDump.csproj.CrossTargeting.targets new file mode 100644 index 000000000..c3e293125 --- /dev/null +++ b/src/HeapDump/obj/HeapDump.csproj.CrossTargeting.targets @@ -0,0 +1,28 @@ + + + + + + + <_TargetPlatform Include="$(Platforms)" /> + <_TargetFramework Include="$(TargetFrameworks)" Platform="%(_TargetPlatform.Identity)" /> + <_InnerBuildProjects Include="$(MSBuildProjectFile)"> + TargetFramework=%(_TargetFramework.Identity);Platform=%(Platform) + + + + + + + + + + + diff --git a/src/HeapDump/packages.config b/src/HeapDump/packages.config deleted file mode 100644 index 912e80821..000000000 --- a/src/HeapDump/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/HeapDump/sigparser.cs b/src/HeapDump/sigparser.cs deleted file mode 100644 index cb2a53833..000000000 --- a/src/HeapDump/sigparser.cs +++ /dev/null @@ -1,724 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace PerfView -{ - internal struct SigParser - { - private byte[] _sig; - private int _len; - private int _offs; - - public SigParser(byte[] sig, int len) - { - _sig = sig; - _len = len; - _offs = 0; - } - - - public SigParser(SigParser rhs) - { - _sig = rhs._sig; - _len = rhs._len; - _offs = rhs._offs; - } - - public SigParser(IntPtr sig, int len) - { - if (len != 0) - { - _sig = new byte[len]; - Marshal.Copy(sig, _sig, 0, _sig.Length); - } - else - { - _sig = null; - } - - - - _len = len; - _offs = 0; - } - - public bool IsNull() - { - return _sig == null; - } - - private void CopyFrom(SigParser rhs) - { - _sig = rhs._sig; - _len = rhs._len; - _offs = rhs._offs; - } - - - private void SkipBytes(int bytes) - { - Debug.Assert(bytes <= _len); - _offs += bytes; - _len -= bytes; - Debug.Assert(_len <= 0 || _offs < _sig.Length); - } - - private bool SkipInt() - { - int tmp; - return GetData(out tmp); - } - - public bool GetData(out int data) - { - int size = 0; - if (UncompressData(out data, out size)) - { - SkipBytes(size); - return true; - } - - return false; - } - - private bool GetByte(out byte data) - { - if (_len <= 0) - { - data = 0xcc; - return false; - } - - data = _sig[_offs]; - SkipBytes(1); - return true; - } - - private bool PeekByte(out byte data) - { - if (_len <= 0) - { - data = 0xcc; - return false; - } - - data = _sig[_offs]; - return true; - } - - private bool GetElemTypeSlow(out int etype) - { - SigParser sigTemp = new SigParser(this); - if (sigTemp.SkipCustomModifiers()) - { - byte elemType; - if (sigTemp.GetByte(out elemType)) - { - etype = elemType; - this.CopyFrom(sigTemp); - return true; - } - } - - etype = 0; - return false; - } - - public bool GetElemType(out int etype) - { - if (_len > 0) - { - byte type = _sig[_offs]; - - if (type < ELEMENT_TYPE_CMOD_REQD) // fast path with no modifiers: single byte - { - etype = type; - SkipBytes(1); - return true; - } - } - - // Slower/normal path - return GetElemTypeSlow(out etype); - } - - - public bool PeekCallingConvInfo(out int data) - { - return PeekByte(out data); - } - - // Note: Calling convention is always one byte, not four bytes - public bool GetCallingConvInfo(out int data) - { - if (PeekByte(out data)) - { - SkipBytes(1); - return true; - } - - return false; - } - - private bool GetCallingConv(out int data) - { - if (GetCallingConvInfo(out data)) - { - data &= IMAGE_CEE_CS_CALLCONV_MASK; - return true; - } - - return false; - } - - private bool PeekData(out int data) - { - int size; - return UncompressData(out data, out size); - } - - private bool PeekElemTypeSlow(out int etype) - { - SigParser sigTemp = new SigParser(this); - return sigTemp.GetElemType(out etype); - } - - public bool PeekElemType(out int etype) - { - if (_len > 0) - { - byte type = _sig[_offs]; - if (type < ELEMENT_TYPE_CMOD_REQD) - { - etype = type; - return true; - } - } - - return PeekElemTypeSlow(out etype); - } - - private bool PeekElemTypeSize(out int pSize) - { - pSize = 0; - SigParser sigTemp = new SigParser(this); - - if (!sigTemp.SkipAnyVASentinel()) - return false; - - byte bElementType = 0; - if (!sigTemp.GetByte(out bElementType)) - return false; - - - switch (bElementType) - { - case ELEMENT_TYPE_I8: - case ELEMENT_TYPE_U8: - case ELEMENT_TYPE_R8: - pSize = 8; - break; - - case ELEMENT_TYPE_I4: - case ELEMENT_TYPE_U4: - case ELEMENT_TYPE_R4: - pSize = 4; - break; - - case ELEMENT_TYPE_I2: - case ELEMENT_TYPE_U2: - case ELEMENT_TYPE_CHAR: - pSize = 2; - break; - - case ELEMENT_TYPE_I1: - case ELEMENT_TYPE_U1: - case ELEMENT_TYPE_BOOLEAN: - pSize = 1; - break; - - case ELEMENT_TYPE_I: - case ELEMENT_TYPE_U: - case ELEMENT_TYPE_STRING: - case ELEMENT_TYPE_PTR: - case ELEMENT_TYPE_BYREF: - case ELEMENT_TYPE_CLASS: - case ELEMENT_TYPE_OBJECT: - case ELEMENT_TYPE_FNPTR: - case ELEMENT_TYPE_TYPEDBYREF: - case ELEMENT_TYPE_ARRAY: - case ELEMENT_TYPE_SZARRAY: - pSize = IntPtr.Size; - break; - - case ELEMENT_TYPE_VOID: - break; - - case ELEMENT_TYPE_END: - case ELEMENT_TYPE_CMOD_REQD: - case ELEMENT_TYPE_CMOD_OPT: - case ELEMENT_TYPE_VALUETYPE: - Debug.Fail("Asked for the size of an element that doesn't have a size!"); - return false; - - default: - Debug.Fail("CorSigGetElementTypeSize given invalid signature to size!"); - return false; - } - - return true; ; - } - - private bool AtSentinel() - { - if (_len > 0) - return _sig[_offs] == ELEMENT_TYPE_SENTINEL; - else - return false; - } - - public bool GetToken(out int token) - { - int size; - if (UncompressToken(out token, out size)) - { - SkipBytes(size); - return true; - } - - return false; - } - - public bool SkipCustomModifiers() - { - SigParser sigTemp = new SigParser(this); - - if (!sigTemp.SkipAnyVASentinel()) - return false; - - byte bElementType = 0; - if (!sigTemp.PeekByte(out bElementType)) - return false; - - - while ((ELEMENT_TYPE_CMOD_REQD == bElementType) || (ELEMENT_TYPE_CMOD_OPT == bElementType)) - { - sigTemp.SkipBytes(1); - - int token; - if (!sigTemp.GetToken(out token)) - return false; - - if (!sigTemp.PeekByte(out bElementType)) - return false; - } - - // Following custom modifiers must be an element type value which is less than ELEMENT_TYPE_MAX, or one of the other element types - // that we support while parsing various signatures - if (bElementType >= ELEMENT_TYPE_MAX) - { - switch (bElementType) - { - case ELEMENT_TYPE_PINNED: - break; - default: - return false; - } - } - - CopyFrom(sigTemp); - return true; - } - - private bool SkipFunkyAndCustomModifiers() - { - SigParser sigTemp = new SigParser(this); - if (!sigTemp.SkipAnyVASentinel()) - return false; - - - byte bElementType = 0; - - if (!sigTemp.PeekByte(out bElementType)) - return false; - - while (ELEMENT_TYPE_CMOD_REQD == bElementType || - ELEMENT_TYPE_CMOD_OPT == bElementType || - ELEMENT_TYPE_MODIFIER == bElementType || - ELEMENT_TYPE_PINNED == bElementType) - { - sigTemp.SkipBytes(1); - - int token; - if (!sigTemp.GetToken(out token)) - return false; - - if (!sigTemp.PeekByte(out bElementType)) - return false; - } - - // Following custom modifiers must be an element type value which is less than ELEMENT_TYPE_MAX, or one of the other element types - // that we support while parsing various signatures - if (bElementType >= ELEMENT_TYPE_MAX) - { - switch (bElementType) - { - case ELEMENT_TYPE_PINNED: - break; - default: - return false; - } - } - - CopyFrom(sigTemp); - return true; - }// SkipFunkyAndCustomModifiers - - private bool SkipAnyVASentinel() - { - byte bElementType = 0; - if (!PeekByte(out bElementType)) - return false; - - if (bElementType == ELEMENT_TYPE_SENTINEL) - SkipBytes(1); - - return true; - }// SkipAnyVASentinel - - - public bool SkipExactlyOne() - { - int typ; - if (!GetElemType(out typ)) - return false; - - int tmp; - if (!Microsoft.Diagnostics.Runtime.Desktop.DesktopRuntimeBase.IsPrimitive((ClrElementType)typ)) - { - switch (typ) - { - default: - return false; - - case ELEMENT_TYPE_VAR: - case ELEMENT_TYPE_MVAR: - if (!GetData(out tmp)) - return false; - break; - - case ELEMENT_TYPE_OBJECT: - case ELEMENT_TYPE_STRING: - case ELEMENT_TYPE_TYPEDBYREF: - break; - - case ELEMENT_TYPE_BYREF: - case ELEMENT_TYPE_PTR: - case ELEMENT_TYPE_PINNED: - case ELEMENT_TYPE_SZARRAY: - if (!SkipExactlyOne()) - return false; - break; - - case ELEMENT_TYPE_VALUETYPE: - case ELEMENT_TYPE_CLASS: - if (!GetToken(out tmp)) - return false; - break; - - case ELEMENT_TYPE_FNPTR: - if (!SkipSignature()) - return false; - break; - - case ELEMENT_TYPE_ARRAY: - // Skip element type - if (!SkipExactlyOne()) - return false; - - // Get rank; - int rank; - if (!GetData(out rank)) - return false; - - if (rank > 0) - { - int sizes; - if (!GetData(out sizes)) - return false; - - while (sizes-- != 0) - if (!GetData(out tmp)) - return false; - - int bounds; - if (!GetData(out bounds)) - return false; - while (bounds-- != 0) - if (!GetData(out tmp)) - return false; - } - break; - - case ELEMENT_TYPE_SENTINEL: - // Should be unreachable since GetElem strips it - break; - - case ELEMENT_TYPE_INTERNAL: - if (!GetData(out tmp)) - return false; - break; - - case ELEMENT_TYPE_GENERICINST: - // Skip generic type - if (!SkipExactlyOne()) - return false; - - // Get number of parameters - int argCnt; - if (!GetData(out argCnt)) - return false; - - // Skip the parameters - while (argCnt-- != 0) - SkipExactlyOne(); - break; - } - } - - return true; - } - - private bool SkipMethodHeaderSignature(out int pcArgs) - { - pcArgs = 0; - - // Skip calling convention - int uCallConv, tmp; - if (!GetCallingConvInfo(out uCallConv)) - return false; - - if ((uCallConv == IMAGE_CEE_CS_CALLCONV_FIELD) || - (uCallConv == IMAGE_CEE_CS_CALLCONV_LOCAL_SIG)) - { - return false; - } - - // Skip type parameter count - if ((uCallConv & IMAGE_CEE_CS_CALLCONV_GENERIC) == IMAGE_CEE_CS_CALLCONV_GENERIC) - if (!GetData(out tmp)) - return false; - - // Get arg count; - if (!GetData(out pcArgs)) - return false; - - // Skip return type; - if (!SkipExactlyOne()) - return false; - - return true; - } // SigParser::SkipMethodHeaderSignature - - - private bool SkipSignature() - { - int args; - if (!SkipMethodHeaderSignature(out args)) - return false; - - - // Skip args. - while (args-- > 0) - if (!SkipExactlyOne()) - return false; - - return false; - } - - private bool UncompressToken(out int token, out int size) - { - if (!UncompressData(out token, out size)) - return false; - - var tkType = s_tkCorEncodeToken[token & 3]; - token = (token >> 2) | tkType; - return true; - } - - private byte GetSig(int offs) - { - Debug.Assert(offs < _len); - return _sig[_offs + offs]; - } - - private bool UncompressData(out int pDataOut, out int pDataLen) - { - pDataOut = 0; - pDataLen = 0; - - if (_len <= 0) - return false; - - byte byte0 = GetSig(0); - - // Smallest. - if ((byte0 & 0x80) == 0x00) // 0??? ???? - { - if (_len < 1) - { - return false; - } - else - { - pDataOut = byte0; - pDataLen = 1; - } - } - // Medium. - else if ((byte0 & 0xC0) == 0x80) // 10?? ???? - { - if (_len < 2) - { - return false; - } - else - { - pDataOut = (int)(((byte0 & 0x3f) << 8 | GetSig(1))); - pDataLen = 2; - } - } - else if ((byte0 & 0xE0) == 0xC0) // 110? ???? - { - if (_len < 4) - { - return false; - } - else - { - pDataOut = (int)(((byte0 & 0x1f) << 24 | GetSig(1) << 16 | GetSig(2) << 8 | GetSig(3))); - pDataLen = 4; - } - } - else // We don't recognize this encoding - { - return false; - } - - return true; - } - - - - - private bool PeekByte(out int data) - { - byte tmp; - if (!PeekByte(out tmp)) - { - data = 0xcc; - return false; - } - - data = tmp; - return true; - } - - - - private const int mdtModule = 0x00000000; // - private const int mdtTypeRef = 0x01000000; // - private const int mdtTypeDef = 0x02000000; // - private const int mdtFieldDef = 0x04000000; // - private const int mdtMethodDef = 0x06000000; // - private const int mdtParamDef = 0x08000000; // - private const int mdtInterfaceImpl = 0x09000000; // - private const int mdtMemberRef = 0x0a000000; // - private const int mdtCustomAttribute = 0x0c000000; // - private const int mdtPermission = 0x0e000000; // - private const int mdtSignature = 0x11000000; // - private const int mdtEvent = 0x14000000; // - private const int mdtProperty = 0x17000000; // - private const int mdtMethodImpl = 0x19000000; // - private const int mdtModuleRef = 0x1a000000; // - private const int mdtTypeSpec = 0x1b000000; // - private const int mdtAssembly = 0x20000000; // - private const int mdtAssemblyRef = 0x23000000; // - private const int mdtFile = 0x26000000; // - private const int mdtExportedType = 0x27000000; // - private const int mdtManifestResource = 0x28000000; // - private const int mdtGenericParam = 0x2a000000; // - private const int mdtMethodSpec = 0x2b000000; // - private const int mdtGenericParamConstraint = 0x2c000000; - - private const int mdtString = 0x70000000; // - private const int mdtName = 0x71000000; // - private const int mdtBaseType = 0x72000000; // Leave this on the high end value. This does not correspond to metadata table - - private readonly static int[] s_tkCorEncodeToken = new int[] { mdtTypeDef, mdtTypeRef, mdtTypeSpec, mdtBaseType }; - - private const int IMAGE_CEE_CS_CALLCONV_DEFAULT = 0x0; - - public const int IMAGE_CEE_CS_CALLCONV_VARARG = 0x5; - public const int IMAGE_CEE_CS_CALLCONV_FIELD = 0x6; - public const int IMAGE_CEE_CS_CALLCONV_LOCAL_SIG = 0x7; - public const int IMAGE_CEE_CS_CALLCONV_PROPERTY = 0x8; - public const int IMAGE_CEE_CS_CALLCONV_UNMGD = 0x9; - public const int IMAGE_CEE_CS_CALLCONV_GENERICINST = 0xa; - public const int IMAGE_CEE_CS_CALLCONV_NATIVEVARARG = 0xb; - public const int IMAGE_CEE_CS_CALLCONV_MAX = 0xc; - - public const int IMAGE_CEE_CS_CALLCONV_MASK = 0x0f; - public const int IMAGE_CEE_CS_CALLCONV_HASTHIS = 0x20; - public const int IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS = 0x40; - public const int IMAGE_CEE_CS_CALLCONV_GENERIC = 0x10; - - - private const int ELEMENT_TYPE_END = 0x0; - private const int ELEMENT_TYPE_VOID = 0x1; - private const int ELEMENT_TYPE_BOOLEAN = 0x2; - private const int ELEMENT_TYPE_CHAR = 0x3; - private const int ELEMENT_TYPE_I1 = 0x4; - private const int ELEMENT_TYPE_U1 = 0x5; - private const int ELEMENT_TYPE_I2 = 0x6; - private const int ELEMENT_TYPE_U2 = 0x7; - private const int ELEMENT_TYPE_I4 = 0x8; - private const int ELEMENT_TYPE_U4 = 0x9; - private const int ELEMENT_TYPE_I8 = 0xa; - private const int ELEMENT_TYPE_U8 = 0xb; - private const int ELEMENT_TYPE_R4 = 0xc; - private const int ELEMENT_TYPE_R8 = 0xd; - private const int ELEMENT_TYPE_STRING = 0xe; - - private const int ELEMENT_TYPE_PTR = 0xf; - private const int ELEMENT_TYPE_BYREF = 0x10; - - private const int ELEMENT_TYPE_VALUETYPE = 0x11; - private const int ELEMENT_TYPE_CLASS = 0x12; - private const int ELEMENT_TYPE_VAR = 0x13; - private const int ELEMENT_TYPE_ARRAY = 0x14; - private const int ELEMENT_TYPE_GENERICINST = 0x15; - private const int ELEMENT_TYPE_TYPEDBYREF = 0x16; - - private const int ELEMENT_TYPE_I = 0x18; - private const int ELEMENT_TYPE_U = 0x19; - private const int ELEMENT_TYPE_FNPTR = 0x1B; - private const int ELEMENT_TYPE_OBJECT = 0x1C; - private const int ELEMENT_TYPE_SZARRAY = 0x1D; - private const int ELEMENT_TYPE_MVAR = 0x1e; - - private const int ELEMENT_TYPE_CMOD_REQD = 0x1F; - private const int ELEMENT_TYPE_CMOD_OPT = 0x20; - - private const int ELEMENT_TYPE_INTERNAL = 0x21; - private const int ELEMENT_TYPE_MAX = 0x22; - - private const int ELEMENT_TYPE_MODIFIER = 0x40; - private const int ELEMENT_TYPE_SENTINEL = 0x01 | ELEMENT_TYPE_MODIFIER; - private const int ELEMENT_TYPE_PINNED = 0x05 | ELEMENT_TYPE_MODIFIER; - } -} diff --git a/src/HeapDumpInterface/HeapDumpInterface.csproj b/src/HeapDumpInterface/HeapDumpInterface.csproj index 8a3313d5b..d2a491c68 100644 --- a/src/HeapDumpInterface/HeapDumpInterface.csproj +++ b/src/HeapDumpInterface/HeapDumpInterface.csproj @@ -1,94 +1,16 @@  - + + - Debug - x86 - 8.0.30703 - 2.0 - {CE854091-F55D-4AD1-AA57-49CB9B60CAC0} Exe - Properties + net45 HeapDump HeapDump - v4.0 - Client - 512 - SAK - SAK - SAK - SAK + + Microsoft + HeapDump + A reference assembly for HeapDump. + Copyright © Microsoft 2011 - - x86 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x86 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - bin\Debug\ - DEBUG;TRACE - full - AnyCPU - bin\Debug\HeapDumpInterface.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - true - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - bin\Release\ - TRACE - true - pdbonly - AnyCPU - bin\Release\HeapDumpInterface.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - true - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - - - - - - - - - - - - - - - - \ No newline at end of file + + diff --git a/src/HeapDumpInterface/Properties/AssemblyInfo.cs b/src/HeapDumpInterface/Properties/AssemblyInfo.cs index 4cc8e99bb..c816bdca3 100644 --- a/src/HeapDumpInterface/Properties/AssemblyInfo.cs +++ b/src/HeapDumpInterface/Properties/AssemblyInfo.cs @@ -1,18 +1,4 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("HeapDumpInterface")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] -[assembly: AssemblyProduct("HeapDumpInterface")] -[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] +using System.Runtime.InteropServices; // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from @@ -21,16 +7,3 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("017a5b61-2216-43de-8160-92bae74141c7")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/HtmlJs/.gitignore b/src/HtmlJs/.gitignore new file mode 100644 index 000000000..38eedcb5a --- /dev/null +++ b/src/HtmlJs/.gitignore @@ -0,0 +1 @@ +project.lock.json diff --git a/src/HtmlJs/PerfDataService.sln b/src/HtmlJs/PerfDataService.sln new file mode 100644 index 000000000..999d939c2 --- /dev/null +++ b/src/HtmlJs/PerfDataService.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfDataService", "PerfDataService\PerfDataService.csproj", "{3A0A3256-F32A-4BA5-B3D5-E7D888629ECF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3A0A3256-F32A-4BA5-B3D5-E7D888629ECF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A0A3256-F32A-4BA5-B3D5-E7D888629ECF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A0A3256-F32A-4BA5-B3D5-E7D888629ECF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A0A3256-F32A-4BA5-B3D5-E7D888629ECF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/HtmlJs/PerfDataService/CacheExpirationTimeProvider.cs b/src/HtmlJs/PerfDataService/CacheExpirationTimeProvider.cs new file mode 100644 index 000000000..854fbe80d --- /dev/null +++ b/src/HtmlJs/PerfDataService/CacheExpirationTimeProvider.cs @@ -0,0 +1,9 @@ +namespace PerfDataService +{ + using System; + + public sealed class CacheExpirationTimeProvider : ICacheExpirationTimeProvider + { + public DateTimeOffset Expiration => DateTimeOffset.UtcNow + TimeSpan.FromHours(1); // TODO: make this config driven + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/CallTreeDataProvider.cs b/src/HtmlJs/PerfDataService/CallTreeDataProvider.cs new file mode 100644 index 000000000..4c127bcd9 --- /dev/null +++ b/src/HtmlJs/PerfDataService/CallTreeDataProvider.cs @@ -0,0 +1,581 @@ +namespace PerfDataService +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.IO.Compression; + using System.Linq; + using System.Reflection; + using System.Text.RegularExpressions; + using Diagnostics.Tracing.StackSources; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Diagnostics.Tracing.Stacks; + using Microsoft.Diagnostics.Symbols; + using Models; + + public sealed class CallTreeDataProvider : ICallTreeDataProvider + { + private readonly CallTree callTree; + + private readonly SymbolReader reader; + + private readonly FilterStackSource stacksource; + + private List summary; + + private readonly Func summaryPredicate; + + private readonly Dictionary nodeNameCache = new Dictionary(); + + private readonly Dictionary callerTreeCache = new Dictionary(); + + private readonly Dictionary calleeTreeCache = new Dictionary(); + + private readonly object lockobj = new object(); + + public CallTreeDataProvider(TraceLog log, FilterParams filterParams, SymbolReader reader, ITraceDataPlugin plugin) + { + if (log == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(log)); + } + + if (filterParams == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(filterParams)); + } + + if (reader == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(reader)); + } + + if (plugin == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(plugin)); + } + + this.reader = reader; + TraceEvents events = log.Events; + var unfilteredStacksource = plugin.GetStackSource(events); + this.summaryPredicate = plugin.SummaryPredicate; + CallTree.DisableParallelism = true; // important + this.stacksource = new FilterStackSource(filterParams, unfilteredStacksource, ScalingPolicyKind.TimeMetric); + this.callTree = new CallTree(ScalingPolicyKind.TimeMetric) { StackSource = this.stacksource }; + + // Indicate I want the Time histograms to be computed. + double startTimeRelativeMsec = 0; + double.TryParse(filterParams.StartTimeRelativeMSec, out startTimeRelativeMsec); + //System.Diagnostics.Debug.WriteLine("\n\nTIME: 1" + filterParams.StartTimeRelativeMSec + "\n2 " + startTimeRelativeMsec + "\n3 " + this.stacksource.SampleTimeRelativeMSecLimit + "\n\n"); + callTree.TimeHistogramController = new TimeHistogramController(callTree, startTimeRelativeMsec, this.stacksource.SampleTimeRelativeMSecLimit); + float minIncusiveTimePercent; + if (float.TryParse(filterParams.MinInclusiveTimePercent, out minIncusiveTimePercent) && minIncusiveTimePercent > 0) + { + this.callTree.FoldNodesUnder(minIncusiveTimePercent * this.callTree.Root.InclusiveMetric / 100, true); + } + } + + public TreeNode GetNode(string name) + { + lock (this.lockobj) + { + if (this.nodeNameCache.ContainsKey(name)) + { + CallTreeDataProviderEventSource.Log.NodeCacheHit(name); + return new TreeNode(this.nodeNameCache[name]); + } + else + { + foreach (var node in this.callTree.ByID) + { + if (node.Name == name) + { + this.nodeNameCache.Add(name, node); + CallTreeDataProviderEventSource.Log.NodeCacheMisss(name); + return new TreeNode(node); + } + } + + CallTreeDataProviderEventSource.Log.NodeCacheNotFound(name); + return null; + } + } + } + + public TreeNode GetCallerTreeNode(string name, string path = "") + { + lock (this.lockobj) + { + if (name == null) { return null; } + + CallTreeNodeBase node = this.GetNode(name).BackingNode; + TreeNode callerTreeNode; + + if (this.callerTreeCache.ContainsKey(node)) + { + callerTreeNode = this.callerTreeCache[node]; + } + else + { + callerTreeNode = new TreeNode(AggregateCallTreeNode.CallerTree(node)); + this.callerTreeCache.Add(node, callerTreeNode); + } + + if (string.IsNullOrEmpty(path)) + { + return callerTreeNode; + } + + var pathArr = path.Split('/'); + var pathNodeRoot = callerTreeNode.Children[int.Parse(pathArr[0])]; + + for (int i = 1; i < pathArr.Length; ++i) + { + pathNodeRoot = pathNodeRoot.Children[int.Parse(pathArr[i])]; + } + + return pathNodeRoot; + } + } + + public TreeNode GetCalleeTreeNode(string name, string path = "") + { + lock (this.lockobj) + { + if (name == null) { return null; } + + CallTreeNodeBase node = this.GetNode(name).BackingNode; + TreeNode calleeTreeNode; + + if (this.calleeTreeCache.ContainsKey(node)) + { + calleeTreeNode = this.calleeTreeCache[node]; + } + else + { + calleeTreeNode = new TreeNode(AggregateCallTreeNode.CalleeTree(node)); + this.calleeTreeCache.Add(node, calleeTreeNode); + } + + if (string.IsNullOrEmpty(path)) + { + return calleeTreeNode; + } + + var pathArr = path.Split('/'); + var pathNodeRoot = calleeTreeNode.Children[int.Parse(pathArr[0])]; + + for (int i = 1; i < pathArr.Length; ++i) + { + pathNodeRoot = pathNodeRoot.Children[int.Parse(pathArr[i])]; + } + + return pathNodeRoot; + } + } + + public TreeNode[] GetCallerTree(string name) + { + return this.GetCallerTreeNode(name).Children; + } + + /* + * Return all paths found from Depth First Search for 'target' on all trees in array 'nodes' + */ + private TreeNode[] searchForTarget(TreeNode[] nodes, string target) + { + target = target.ToLower(); + SortedSet pathsFound = new SortedSet(new SortNodeByContextId()); + + int flagCount = 1; + foreach (TreeNode node in nodes) + { + searchHelper(node, pathsFound, target, ref flagCount); + } + + TreeNode[] result = new TreeNode[pathsFound.Count()]; // This function promised to return an array, not a list + int index = 0; + foreach (TreeNode tn in pathsFound) + { + tn.Visited = false; // Undo visited set (cleanup in prep for another search); we're aiming for statelessness here + result[index] = tn; + index++; + } + + return result; + } + + public class SortNodeByContextId : IComparer + { + public int Compare(TreeNode node1, TreeNode node2) + { + return String.Compare(node1.ContextId, node2.ContextId); + } + } + + private void searchHelper(TreeNode node, SortedSet pathsFound, string target, ref int flagCount) + { + if (node == null || target == null) { return; } + + node.FindFlag = ""; + + if (node.Name.ToLower().Contains(target)) { + node.FindFlag = flagCount.ToString(); + flagCount++; + } + + if (node.HasChildren) + { + foreach (TreeNode child in node.Children) + { + searchHelper(child, pathsFound, target, ref flagCount); + } + } + + if (!string.IsNullOrEmpty(node.FindFlag)) + { + TreeNode tempNode = node; + while (tempNode != null) + { + // Add current node plus all of its siblings + if (tempNode.ParentNode != null && tempNode.ParentNode.HasChildren) + { + foreach (TreeNode n in tempNode.ParentNode.Children) + { + if (!n.Visited) + { + pathsFound.Add(n); + n.Visited = true; + } + } + } + tempNode = tempNode.ParentNode; + } + + if (node.ParentNode == null) + { + // This a top level node; just add itself + if (!node.Visited) + { + pathsFound.Add(node); + node.Visited = true; + } + } + } + } + + public TreeNode[] GetCallerTree(string name, string path, string find) + { + TreeNode[] children = this.GetCallerTreeNode(name, path).Children; + if (!string.IsNullOrEmpty(find)) + { + children = searchForTarget(children, find); + } + return children; + } + + public TreeNode[] GetCalleeTree(string name) + { + return this.GetCalleeTreeNode(name).Children; + } + + public TreeNode[] GetCalleeTree(string name, string path, string find) + { + TreeNode[] children = this.GetCalleeTreeNode(name, path).Children; + if (!string.IsNullOrEmpty(find)) + { + children = searchForTarget(children, find); + } + return children; + } + + public List GetSummaryTree(int numNodes, string find) + { + lock (this.lockobj) + { + if (this.summary == null) + { + IEnumerable nodes; + if (numNodes >= 0) + { + nodes = this.callTree.ByIDSortedExclusiveMetric().Where(this.summaryPredicate).Take(numNodes); + } + else + { + // numNodes < 0 --> Take ALL the nodes + numNodes = this.callTree.ByIDSortedExclusiveMetric().Where(this.summaryPredicate).Count(); + nodes = this.callTree.ByIDSortedExclusiveMetric().Where(this.summaryPredicate).Take(numNodes); + } + + this.summary = new List(); + int findCount = 1; + foreach (CallTreeNodeBase node in nodes) + { + TreeNode tn = new TreeNode(node); + if (!string.IsNullOrEmpty(find)) + { + // TODO: Search each node name to see if it contains find as a substring + if (node.Name.ToLower().Contains(find.ToLower())) + { + tn.FindFlag = findCount.ToString(); + findCount++; + } + } + this.summary.Add(tn); + } + } + + return this.summary; + } + } + + public SourceInformation Source(TreeNode node) + { + SortedDictionary metricOnLine; + var sourceLocation = this.GetSourceLocation(node.BackingNode, node.BackingNode.Name, out metricOnLine); + + if (sourceLocation != null) + { + var sourceFile = sourceLocation.SourceFile; + FieldInfo fi = typeof(SourceFile).GetField("m_symbolModule", BindingFlags.NonPublic | BindingFlags.Instance); + if (fi != null) + { + PropertyInfo pi = typeof(SymbolModule).GetProperty("PdbForSourceServer", BindingFlags.NonPublic | BindingFlags.Instance); + if (pi != null) + { + MethodInfo mi = typeof(SymbolModule).GetMethod("GetSrcSrvStream", BindingFlags.NonPublic | BindingFlags.Instance); + if (mi != null) + { + string srcStream = mi.Invoke(pi.GetValue(fi.GetValue(sourceFile)), null) as string; + if (srcStream != null) + { + string[] lines = srcStream.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None); + foreach (var line in lines) + { + // TFS DevDiv support + if (line.StartsWith(sourceFile.BuildTimeFilePath)) + { + var split = line.Split('*'); + + var sourceInfo = new SourceInformation + { + Url = "http://vstfdevdiv:8080/DevDiv2/DevDiv/_versionControl/changeset/" + split[3].Trim() + "#path=" + split[2].Trim() + "&_a=contents", + Type = "Url", + Summary = metricOnLine.Select(m => new LineInformation { Metric = m.Value, LineNumber = m.Key + 1, Line = string.Empty }).ToList() + }; + + return sourceInfo; + } + } + + // support for source depot? + return null; + } + } + } + } + + // Source Database Format + { + var sdbFiles = Directory.GetFiles(this.reader.SourcePath, "*.sdb", SearchOption.AllDirectories); + SourceInformation sourceInfo = null; + + foreach (var sdbFile in sdbFiles) + { + using (ZipArchive archive = ZipFile.OpenRead(sdbFile)) + { + foreach (ZipArchiveEntry entry in archive.Entries) + { + if (sourceFile.BuildTimeFilePath.EndsWith(entry.FullName, StringComparison.OrdinalIgnoreCase)) + { + int i = 0; + + var summaryLineMetrics = new List(); + var linemetrics = new List(); + sourceInfo = new SourceInformation(); + sourceInfo.Lines = linemetrics; + sourceInfo.Summary = summaryLineMetrics; + sourceInfo.Type = "Lines"; + + using (var sr = new StreamReader(entry.Open())) + { + string line; + while ((line = sr.ReadLine()) != null) + { + i++; + float value = 0; + if (metricOnLine.TryGetValue(i, out value)) + { + var lineInfo = new LineInformation { LineNumber = i, Metric = value, Line = line }; + summaryLineMetrics.Add(lineInfo); + linemetrics.Add(lineInfo); + } + else + { + linemetrics.Add(new LineInformation { LineNumber = i, Metric = value, Line = line }); + } + } + } + + break; + } + } + } + } + + return sourceInfo; + } + } + + return null; + } + + private SourceLocation GetSourceLocation(CallTreeNodeBase asCallTreeNodeBase, string cellText, out SortedDictionary metricOnLine) + { + metricOnLine = null; + var m = Regex.Match(cellText, "<<(.*!.*)>>"); + + if (m.Success) + { + cellText = m.Groups[1].Value; + } + + var frameIndexCounts = new Dictionary(); + asCallTreeNodeBase.GetSamples(false, delegate (StackSourceSampleIndex sampleIdx) + { + var matchingFrameIndex = StackSourceFrameIndex.Invalid; + var sample = this.stacksource.GetSampleByIndex(sampleIdx); + var callStackIdx = sample.StackIndex; + while (callStackIdx != StackSourceCallStackIndex.Invalid) + { + var frameIndex = this.stacksource.GetFrameIndex(callStackIdx); + var frameName = this.stacksource.GetFrameName(frameIndex, false); + if (frameName == cellText) + matchingFrameIndex = frameIndex; // We keep overwriting it, so we get the entry closest to the root. + callStackIdx = this.stacksource.GetCallerIndex(callStackIdx); + } + if (matchingFrameIndex != StackSourceFrameIndex.Invalid) + { + float count = 0; + frameIndexCounts.TryGetValue(matchingFrameIndex, out count); + frameIndexCounts[matchingFrameIndex] = count + sample.Metric; + } + return true; + }); + + var maxFrameIdx = StackSourceFrameIndex.Invalid; + float maxFrameIdxCount = -1; + foreach (var keyValue in frameIndexCounts) + { + if (keyValue.Value >= maxFrameIdxCount) + { + maxFrameIdxCount = keyValue.Value; + maxFrameIdx = keyValue.Key; + } + } + + if (maxFrameIdx == StackSourceFrameIndex.Invalid) + { + return null; + } + + // Find the most primitive TraceEventStackSource + TraceEventStackSource asTraceEventStackSource = GetTraceEventStackSource(this.stacksource); + if (asTraceEventStackSource == null) + { + return null; + } + + var frameToLine = new Dictionary(); + + var sourceLocation = asTraceEventStackSource.GetSourceLine(maxFrameIdx, this.reader); + if (sourceLocation != null) + { + var filePathForMax = sourceLocation.SourceFile.BuildTimeFilePath; + metricOnLine = new SortedDictionary(); + + // Accumulate the counts on a line basis + foreach (StackSourceFrameIndex frameIdx in frameIndexCounts.Keys) + { + var loc = asTraceEventStackSource.GetSourceLine(frameIdx, this.reader); + if (loc != null && loc.SourceFile.BuildTimeFilePath == filePathForMax) + { + frameToLine[frameIdx] = loc.LineNumber; + float metric; + metricOnLine.TryGetValue(loc.LineNumber, out metric); + metric += frameIndexCounts[frameIdx]; + metricOnLine[loc.LineNumber] = metric; + } + } + } + + bool commonMethodIdxSet = false; + MethodIndex commonMethodIdx = MethodIndex.Invalid; + + var nativeAddressFreq = new SortedDictionary>(); + foreach (var keyValue in frameIndexCounts) + { + var codeAddr = asTraceEventStackSource.GetFrameCodeAddress(keyValue.Key); + if (codeAddr != CodeAddressIndex.Invalid) + { + var methodIdx = asTraceEventStackSource.TraceLog.CodeAddresses.MethodIndex(codeAddr); + if (methodIdx != MethodIndex.Invalid) + { + if (!commonMethodIdxSet) + commonMethodIdx = methodIdx; // First time, set it as the common method. + else if (methodIdx != commonMethodIdx) + methodIdx = MethodIndex.Invalid; // More than one method, give up. + commonMethodIdxSet = true; + } + + var nativeAddr = asTraceEventStackSource.TraceLog.CodeAddresses.Address(codeAddr); + var lineNum = 0; + frameToLine.TryGetValue(keyValue.Key, out lineNum); + nativeAddressFreq[nativeAddr] = new Tuple(lineNum, keyValue.Value); + } + } + + foreach (var keyValue in nativeAddressFreq) + Console.WriteLine(" {0,12:x} : {1,6} {2,10:f1}", keyValue.Key, keyValue.Value.Item1, keyValue.Value.Item2); + + if (sourceLocation == null) + { + return null; + } + + foreach (var keyVal in metricOnLine) + Console.WriteLine(" Line {0,5}: Metric {1,5:n1}", keyVal.Key, keyVal.Value); + + return sourceLocation; + } + + internal static TraceEventStackSource GetTraceEventStackSource(StackSource source) + { + StackSourceStacks rawSource = source; + for (;;) + { + var asTraceEventStackSource = rawSource as TraceEventStackSource; + if (asTraceEventStackSource != null) + { + return asTraceEventStackSource; + } + + var asCopyStackSource = rawSource as CopyStackSource; + if (asCopyStackSource != null) + { + rawSource = asCopyStackSource.SourceStacks; + continue; + } + + var asStackSource = rawSource as StackSource; + if (asStackSource != null && asStackSource != asStackSource.BaseStackSource) + { + rawSource = asStackSource.BaseStackSource; + continue; + } + + return null; + } + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/CallTreeDataProviderEventSource.cs b/src/HtmlJs/PerfDataService/CallTreeDataProviderEventSource.cs new file mode 100644 index 000000000..1d79ef274 --- /dev/null +++ b/src/HtmlJs/PerfDataService/CallTreeDataProviderEventSource.cs @@ -0,0 +1,24 @@ +namespace PerfDataService +{ + using System.Diagnostics.Tracing; + + public sealed class CallTreeDataProviderEventSource : EventSource + { + public static CallTreeDataProviderEventSource Log = new CallTreeDataProviderEventSource(); + + public void NodeCacheHit(string node) + { + this.WriteEvent(1, node); + } + + public void NodeCacheMisss(string node) + { + this.WriteEvent(2, node); + } + + public void NodeCacheNotFound(string node) + { + this.WriteEvent(3, node); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/CallTreeDataProviderFactory.cs b/src/HtmlJs/PerfDataService/CallTreeDataProviderFactory.cs new file mode 100644 index 000000000..9081f3132 --- /dev/null +++ b/src/HtmlJs/PerfDataService/CallTreeDataProviderFactory.cs @@ -0,0 +1,208 @@ +namespace PerfDataService +{ + using System; + using System.IO; + using System.IO.Compression; + using System.Linq; + using Diagnostics.Tracing.StackSources; + using Microsoft.AspNetCore.Http; + using Microsoft.Diagnostics.Symbols; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Extensions.Caching.Memory; + using System.Text; + using System.Text.RegularExpressions; + using Microsoft.Diagnostics.Tracing; + + public sealed class CallTreeDataProviderFactory : ICallTreeDataProviderFactory + { + private const string etlExtension = ".etl"; + + private const string etlxExtension = ".etlx"; + + private readonly HttpRequest httpRequest; + + private readonly TextWriter textWriter; + + private readonly EtlxCache etlxCache; + + private readonly StackViewerSessionCache stackViewerSessionCache; + + private readonly DateTimeOffset cacheExpirationTime; + + private readonly string tempPath; + + public CallTreeDataProviderFactory(IHttpContextAccessor httpContextAccessor, ITemporaryPathProvider temporaryPathProvider, ICacheExpirationTimeProvider cacheExpirationTimeProvider, TextWriter textWriter, EtlxCache etlxCache, StackViewerSessionCache stackViewerSessionCache) + { + if (httpContextAccessor == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(httpContextAccessor)); + } + + if (temporaryPathProvider == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(temporaryPathProvider)); + } + + if (cacheExpirationTimeProvider == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(cacheExpirationTimeProvider)); + } + + if (textWriter == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(textWriter)); + } + + if (etlxCache == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(etlxCache)); + } + + if (stackViewerSessionCache == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(stackViewerSessionCache)); + } + + this.httpRequest = httpContextAccessor.HttpContext.Request; + this.textWriter = textWriter; + this.tempPath = temporaryPathProvider.Path; + this.cacheExpirationTime = cacheExpirationTimeProvider.Expiration; + this.etlxCache = etlxCache; + this.stackViewerSessionCache = stackViewerSessionCache; + } + + public ICallTreeDataProvider Get() + { + var queryString = this.httpRequest.Query; + + string filename = queryString["filename"]; + string stacktype = queryString["stacktype"]; + + if (string.IsNullOrEmpty(filename)) + { + throw new ArgumentNullException("filename"); + } + + if (string.IsNullOrEmpty(stacktype)) + { + throw new ArgumentNullException("stacktype"); + } + + /* symbols and sources related parameters */ + string sympathStr = (string)queryString["sympath"] ?? SymbolPath.MicrosoftSymbolServerPath; + SymbolPath symPath = new SymbolPath(sympathStr); + string defaultSymbolCache = symPath.DefaultSymbolCache(); + + // Normalize the symbol path. + symPath = symPath.InsureHasCache(defaultSymbolCache); + sympathStr = symPath.ToString(); + + string srcpath = (string)queryString["srcpath"]; + //TODO FIX NOW: Dont spew to the Console, send it back to the client. + SymbolReader symbolReader = new SymbolReader(Console.Out, sympathStr); + if (srcpath != null) + symbolReader.SourcePath = srcpath; + + string modulePatStr = (string)queryString["symLookupPats"] ?? @"^(clr|ntoskrnl|ntdll|.*\.ni)"; + + /* filtering parameters */ + string start = (string)queryString["start"] ?? string.Empty; + string end = (string)queryString["end"] ?? string.Empty; + string incpats = (string)queryString["incpats"] ?? string.Empty; + string excpats = (string)queryString["excpats"] ?? string.Empty; + string foldpats = (string)queryString["foldpats"] ?? string.Empty; + string grouppats = (string)queryString["grouppats"] ?? string.Empty; + string foldpct = (string)queryString["foldpct"] ?? string.Empty; + string find = (string)queryString["find"] ?? string.Empty; + + EtlxFile etlxFile; + + // Do it twice so that XXX.etl.zip becomes XXX. + string etlxFilePath = Path.ChangeExtension(Path.ChangeExtension(filename, null), ".etlx"); + lock (this.etlxCache) + { + if (this.etlxCache.TryGetValue(filename, out etlxFile)) + { + if (etlxFile == null) + { + throw new ArgumentNullException("etlxFile"); + } + } + else + { + etlxFile = new EtlxFile(filename) { Pending = true }; + this.etlxCache.Set(filename, etlxFile, this.cacheExpirationTime); + } + } + + lock (etlxFile) + { + if (etlxFile.Pending) + { + if (!File.Exists(etlxFilePath)) + { + // if it's a zip file + if (string.Equals(Path.GetExtension(filename), ".zip", StringComparison.OrdinalIgnoreCase)) + { + //TODO FIX NOW: Dont spew to the Console, send it back to the client. + ZippedETLReader reader = new ZippedETLReader(filename, Console.Out); + reader.SymbolDirectory = defaultSymbolCache; + reader.EtlFileName = Path.ChangeExtension(etlxFilePath, etlExtension); + reader.UnpackAchive(); + TraceLog.CreateFromEventTraceLogFile(reader.EtlFileName, etlxFilePath); + } + else + { + TraceLog.CreateFromEventTraceLogFile(filename, etlxFilePath); + } + } + + etlxFile.TraceLog = TraceLog.OpenOrConvert(etlxFilePath); + etlxFile.Pending = false; + } + + Regex modulePat = new Regex(modulePatStr, RegexOptions.IgnoreCase); + foreach (var moduleFile in etlxFile.TraceLog.ModuleFiles) + { + if (modulePat.IsMatch(moduleFile.Name)) + { + etlxFile.TraceLog.CodeAddresses.LookupSymbolsForModule(symbolReader, moduleFile); + } + } + } + + StackViewerSession stackViewerSession; + lock (this.stackViewerSessionCache) + { + var filterParams = new FilterParams { Name = filename + stacktype, StartTimeRelativeMSec = start, EndTimeRelativeMSec = end, MinInclusiveTimePercent = foldpct, FoldRegExs = foldpats, IncludeRegExs = incpats, ExcludeRegExs = excpats, GroupRegExs = grouppats }; + var keyBuilder = new StringBuilder(); + keyBuilder.Append(filterParams.Name).Append("?" + filterParams.StartTimeRelativeMSec).Append("?" + filterParams.EndTimeRelativeMSec).Append("?" + filterParams.MinInclusiveTimePercent).Append("?" + filterParams.FoldRegExs).Append("?" + filterParams.IncludeRegExs).Append("?" + filterParams.ExcludeRegExs).Append("?" + filterParams.GroupRegExs).Append("?" + find); + + var stackViewerKey = keyBuilder.ToString(); + if (this.stackViewerSessionCache.TryGetValue(stackViewerKey, out stackViewerSession)) + { + if (stackViewerSession == null) + { + throw new ArgumentNullException("stackViewerSession"); + } + } + else + { + stackViewerSession = new StackViewerSession(filename, stacktype, etlxFile.TraceLog, filterParams, symbolReader); + this.stackViewerSessionCache.Set(stackViewerKey, stackViewerSession, cacheExpirationTime); + } + } + + lock (stackViewerSession) + { + if (stackViewerSession.Pending) + { + stackViewerSession.InitializeDataProvider(); + stackViewerSession.Pending = false; + } + } + + return stackViewerSession.GetDataProvider(); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Controllers/DataController.cs b/src/HtmlJs/PerfDataService/Controllers/DataController.cs new file mode 100644 index 000000000..e850e4978 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Controllers/DataController.cs @@ -0,0 +1,347 @@ +using System; +using System.IO; +using System.Net; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using PerfViewExtensibility; +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Etlx; + +// For more information on enabling Web API for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 + +namespace PerfDataService.Controllers +{ + + public class DataController : Controller + { + string[] logicalDrives; + + // GET: api/data + [HttpGet] + [Route("api/[controller]/open")] + public string Get([FromQuery]string path) + { + logicalDrives = Environment.GetLogicalDrives(); + if (string.IsNullOrEmpty(path)) { path = PerfDataService.Startup.config["HomeDirectory"]; } + path = cleanUpPath(path); + + /* Create Dictionary to be returned as JSON in response */ + // Dictionary containing entire hierarchy + Dictionary tree = new Dictionary(); + tree.Add("status", "OK"); + if (logicalDrives.Contains(path.ToUpper())) { + tree.Add("text", path); + } else + { + tree.Add("text", Path.GetFileName(path)); + } + tree.Add("path", path); + tree.Add("type", getTypeOfItem(path)); + + try + { + List children = new List(); + if (Directory.Exists(path)) + { + // path leads to a valid directory + children = getChildrenForPath(path); + } + else if (new FileInfo(path).Exists) + { + // path leads to a valid file (e.g. .etl.zip, .etl) + children = getDataForFile(path); + } + tree.Add("children", children); + } catch (UnauthorizedAccessException) + { + // TODO: Form a proper response for this + } + + string json = JsonConvert.SerializeObject(tree, Formatting.Indented); + + if (string.IsNullOrEmpty(json)) + { + return "[]"; + } + else + { + return json; + } + } + + + [HttpGet] + [Route("/api/[controller]/stackviewer/summary")] + public string GetStackSummary([FromQuery]string filename, [FromQuery]string stackType) // TODO: Remove these parameters + { + // Ensure the required properties are present + if (string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(stackType)) + { + // TODO: Form proper resposne + return null; + } + + using (var client = new WebClient()) + { + var url = AppSettings.targetUrl + "/stackviewer/summary" + Request.QueryString; + var json = client.DownloadString(url); + + if (string.IsNullOrEmpty(json)) + { + return "[]"; + } + else + { + return json; + } + } + } + + + [HttpGet] + [Route("/api/[controller]/stackviewer/node")] + public string GetNode([FromQuery]string filename, [FromQuery]string name, [FromQuery]string stackType) // TODO: Remove these parameters + { + // Ensure the required properties are present + if (string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(stackType) || string.IsNullOrEmpty(name)) + { + // TODO: Form proper resposne + return null; + } + + using (var client = new WebClient()) + { + var url = AppSettings.targetUrl + "/stackviewer/node" + Request.QueryString.Value; + var json = client.DownloadString(url); + + if (string.IsNullOrEmpty(json)) + { + return "[]"; + } + else + { + return json; + } + } + } + + + [HttpGet] + [Route("/api/[controller]/stackviewer/callertree")] + public string GetCallers([FromQuery]string filename, [FromQuery]string name, [FromQuery]string stackType) // TODO: Remove these parameters + { + // Ensure the required properties are present + if (string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(stackType) || string.IsNullOrEmpty(name)) + { + // TODO: Form proper resposne + return null; + } + + using (var client = new WebClient()) + { + var url = AppSettings.targetUrl + "/stackviewer/callertree" + Request.QueryString.Value; + var json = client.DownloadString(url); + + if (string.IsNullOrEmpty(json)) + { + return "[]"; + } + else + { + return json; + } + } + } + + + [HttpGet] + [Route("/api/[controller]/stackviewer/calleetree")] + public string GetCallees([FromQuery]string filename, [FromQuery]string name, [FromQuery]string stackType) // TODO: Remove these parameters + { + // Ensure the required properties are present + if (string.IsNullOrEmpty(filename) || string.IsNullOrEmpty(stackType) || string.IsNullOrEmpty(name)) + { + // TODO: Form proper resposne + return null; + } + + using (var client = new WebClient()) + { + var url = AppSettings.targetUrl + "/stackviewer/calleetree" + Request.QueryString.Value; + var json = client.DownloadString(url); + + if (string.IsNullOrEmpty(json)) + { + return "[]"; + } else + { + return json; + } + } + } + + + public string cleanUpPath(string path) + { + string possibleDrive = Path.GetFullPath(path).ToUpper(); + if (path.Last() == '/' && !logicalDrives.Contains(possibleDrive)) { + path = path.Substring(0, path.Length - 1); + } + else if (logicalDrives.Contains(possibleDrive)) + { + return possibleDrive; + } + + return path; + } + + + public List getChildrenForPath(string pathToItem) + { + List childrenContainer = new List(); + + /* IF DIRECTORY */ + if (Directory.Exists(pathToItem)) + { + // Get all children in the directory, if applicable + IEnumerable children; + try + { + // This will succeed if the directory has subdirectories or files to enumerate over + children = Directory.EnumerateFileSystemEntries(pathToItem); + } + catch + { + // This means the directory has no children, so we're going to create an empty list + children = new List(); + } + + if (!logicalDrives.Contains(pathToItem.ToUpper())) // TODO: Use Path.GetRootDirectory (store it in a global property) + { + // Add '..' directory + Dictionary upDir = new Dictionary(); + upDir.Add("text", ".."); // Name of item + upDir.Add("type", "dir"); // Type of item + if (!logicalDrives.Contains(pathToItem.ToUpper())) + { + upDir.Add("path", Directory.GetParent(pathToItem).FullName); // Path to item + } + upDir.Add("hasChildren", false); // TODO: Create method to derive hasChildren property of child item + childrenContainer.Add(upDir); + } + + // Package them into dictionary objects + foreach (string child in children) + { + string type = getTypeOfItem(child); + if (type == null) { continue; } // Unsupported file types return null + + // This is a file type we want to return! + Dictionary dir = new Dictionary(); + dir.Add("text", child.Split('\\').Last()); // Name of item + dir.Add("type", type); // Type of item + dir.Add("path", child); // Path to item + try { dir.Add("hasChildren", hasChildren(child)); } + catch { dir.Add("hasChildren", false); } // If this directory has an unauthorized access exception + childrenContainer.Add(dir); + } + } + + return childrenContainer; + } + + public List getDataForFile(string pathToItem) { + List childrenContainer = new List(); + + // IF REAL FILE (e.g. .etl.zip, .etl) + if (new FileInfo(pathToItem).Exists) + { + // TODO: Separate this into another function, if not another endpoint + // Assume only .etl.zip for now + string etlFileName = pathToItem; + var etlFile = PerfViewExtensibility.CommandEnvironment.OpenETLFile(etlFileName); + TraceEvents events = etlFile.TraceLog.Events; + + // Create CPU Stacks as child + Stacks CPUStacks = etlFile.CPUStacks(); + + Dictionary child = new Dictionary(); + childrenContainer.Add(child); + child.Add("text", "CPU Stacks"); + child.Add("type", "stacks"); + child.Add("stackType", "CPU"); + child.Add("path", pathToItem); + child.Add("hasChildren", false); + + // TODO: Create Process / Files / Registry Stacks as child + // TODO: Create TraceInfo htmlReport as child + // TODO: Create Processes htmlReport as child + // TODO: Create Events as child + // TODO: Create Memory Group as child + // TODO: Create Advanced Group as child + } + + // TODO: Form proper response + return childrenContainer; + } + + + public string getTypeOfItem(string itemPath) + { + if (Directory.Exists(itemPath)) + { + return "dir"; + } + else if (new FileInfo(itemPath).Exists) + { + string fileExtension = itemPath.Split('.').Last(); + + // Add more types as they are implemented + switch (fileExtension) + { + case "zip": + return "file"; + case "etl": + return "file"; + default: + // This file type is currently unsupported + return null; + } + } + + // Something went wrong between this point and the discovery of the item + return null; + } + + + public Boolean hasChildren(string itemPath) + { + if (Directory.Exists(itemPath) && Directory.EnumerateFileSystemEntries(itemPath).Count() > 0) + { + // It's a directory and we have confirmed that it has children + return true; + } + else if (new FileInfo(itemPath).Exists) + { + string type = getTypeOfItem(itemPath); + + // It's a file, and we must check that it's a type we expect to have children + // Add more types as they are implemented + switch (type) + { + case "file": + return true; + default: + // This file type is currently unsupported + return false; + } + } + + return false; + } + + } +} diff --git a/src/HtmlJs/PerfDataService/Controllers/StackViewerController.cs b/src/HtmlJs/PerfDataService/Controllers/StackViewerController.cs new file mode 100644 index 000000000..24d8e51d4 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Controllers/StackViewerController.cs @@ -0,0 +1,76 @@ +namespace PerfDataService.Controllers +{ + using System.Collections.Generic; + using Microsoft.AspNetCore.Mvc; + using Models; + + public sealed class StackViewerController + { + private readonly ICallTreeDataProvider dataProvider; + + public StackViewerController(ICallTreeDataProviderFactory dataProviderFactory) + { + if (dataProviderFactory == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(dataProviderFactory)); + } + + this.dataProvider = dataProviderFactory.Get(); + } + + [HttpGet] + [Route("stackviewer/summary")] + public List Get(int numNodes, string find="") + { + return this.dataProvider.GetSummaryTree(numNodes, find); + } + + [HttpGet] + [Route("stackviewer/node")] + public TreeNode Node(string name) + { + if (name == null) { return null; } + return this.dataProvider.GetNode(name); + } + + [HttpGet] + [Route("stackviewer/callertree")] + public TreeNode[] CallerTree(string name, string path="", string find="") + { + if (name == null) { return null; } + return this.dataProvider.GetCallerTree(name, path, find); + } + + [HttpGet] + [Route("stackviewer/calleetree")] + public TreeNode[] CalleeTree(string name, string path="", string find="") + { + if (name == null) { return null; } + return this.dataProvider.GetCalleeTree(name, path, find); + } + + [HttpGet] + [Route("stackviewer/source")] + public SourceInformation Source(string name) + { + if (name == null) { return null; } + return this.dataProvider.Source(this.dataProvider.GetNode(name)); + } + + [HttpGet] + [Route("stackviewer/source/caller")] + public SourceInformation CallerContextSource(string name, string path="") + { + if (name == null) { return null; } + return this.dataProvider.Source(this.dataProvider.GetCallerTreeNode(name, path)); + } + + [HttpGet] + [Route("stackviewer/source/callee")] + public SourceInformation CalleeContextSource(string name, string path="") + { + if (name == null) { return null; } + return this.dataProvider.Source(this.dataProvider.GetCalleeTreeNode(name, path)); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/EtlxCache.cs b/src/HtmlJs/PerfDataService/EtlxCache.cs new file mode 100644 index 000000000..07397a5aa --- /dev/null +++ b/src/HtmlJs/PerfDataService/EtlxCache.cs @@ -0,0 +1,13 @@ +namespace PerfDataService +{ + using Microsoft.Extensions.Caching.Memory; + using Microsoft.Extensions.Options; + + public sealed class EtlxCache : MemoryCache + { + public EtlxCache(IOptions optionsAccessor) + : base(optionsAccessor) + { + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/EtlxFile.cs b/src/HtmlJs/PerfDataService/EtlxFile.cs new file mode 100644 index 000000000..4540d717c --- /dev/null +++ b/src/HtmlJs/PerfDataService/EtlxFile.cs @@ -0,0 +1,18 @@ +namespace PerfDataService +{ + using Microsoft.Diagnostics.Tracing.Etlx; + + public sealed class EtlxFile + { + public EtlxFile(string filename) + { + this.FileName = filename; + } + + public string FileName { get; private set; } + + public bool Pending { get; set; } + + public TraceLog TraceLog { get; set; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/EventSourceTextWriter.cs b/src/HtmlJs/PerfDataService/EventSourceTextWriter.cs new file mode 100644 index 000000000..4b0587993 --- /dev/null +++ b/src/HtmlJs/PerfDataService/EventSourceTextWriter.cs @@ -0,0 +1,86 @@ +namespace PerfDataService +{ + using System.Diagnostics.Tracing; + using System.IO; + using System.Text; + + public sealed class EventSourceTextWriter : TextWriter + { + private static readonly TextWriterEventSource textWriterEventSource = new TextWriterEventSource(); + + public override void Write(string value) + { + textWriterEventSource.WriteMessage(value); + } + + public override void Write(string format, object arg0) + { + textWriterEventSource.WriteMessage(string.Format(format, arg0)); + } + + public override void Write(string format, object arg0, object arg1) + { + textWriterEventSource.WriteMessage(string.Format(format, arg0, arg1)); + } + + public override void Write(string format, object arg0, object arg1, object arg2) + { + textWriterEventSource.WriteMessage(string.Format(format, arg0, arg1, arg2)); + } + + public override void Write(string format, params object[] arg) + { + textWriterEventSource.WriteMessage(string.Format(format, arg)); + } + + public override void Write(char value) + { + textWriterEventSource.WriteMessage(value.ToString()); + } + + public override void WriteLine() + { + textWriterEventSource.WriteMessage(string.Empty); + } + + public override void WriteLine(string value) + { + textWriterEventSource.WriteLine(value); + } + + public override void WriteLine(string format, object arg0) + { + textWriterEventSource.WriteLine(string.Format(format, arg0)); + } + + public override void WriteLine(string format, object arg0, object arg1) + { + textWriterEventSource.WriteLine(string.Format(format, arg0, arg1)); + } + + public override void WriteLine(string format, object arg0, object arg1, object arg2) + { + textWriterEventSource.WriteLine(string.Format(format, arg0, arg1, arg2)); + } + + public override void WriteLine(string format, params object[] arg) + { + textWriterEventSource.WriteLine(string.Format(format, arg)); + } + + public override Encoding Encoding => Encoding.UTF8; + + private class TextWriterEventSource : EventSource + { + public void WriteMessage(string message) + { + this.WriteEvent(1, message); + } + + public void WriteLine(string message) + { + this.WriteEvent(2, message); + } + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/ICacheExpirationTimeProvider.cs b/src/HtmlJs/PerfDataService/ICacheExpirationTimeProvider.cs new file mode 100644 index 000000000..e29dd8a18 --- /dev/null +++ b/src/HtmlJs/PerfDataService/ICacheExpirationTimeProvider.cs @@ -0,0 +1,9 @@ +namespace PerfDataService +{ + using System; + + public interface ICacheExpirationTimeProvider + { + DateTimeOffset Expiration { get; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/ICallTreeDataProvider.cs b/src/HtmlJs/PerfDataService/ICallTreeDataProvider.cs new file mode 100644 index 000000000..003ade3b8 --- /dev/null +++ b/src/HtmlJs/PerfDataService/ICallTreeDataProvider.cs @@ -0,0 +1,34 @@ +namespace PerfDataService +{ + using System.Collections.Generic; + using Models; + + public interface ICallTreeDataProvider + { + // gets a node without a context + TreeNode GetNode(string name); + + // gets a node with a caller tree context and looks up the path + TreeNode GetCallerTreeNode(string name, string path = ""); + + // gets a node with a callee tree context and looks up the path + TreeNode GetCalleeTreeNode(string name, string path = ""); + + // gets a list of nodes with no context + List GetSummaryTree(int numNodes, string find); + + // returns a flat caller tree given a node + TreeNode[] GetCallerTree(string name); + + // returns a flat caller tree given a node and its context + TreeNode[] GetCallerTree(string name, string path, string find); + + // returns a flat callee tree given a node + TreeNode[] GetCalleeTree(string name); + + // returns a flat callee tree given a node and its context + TreeNode[] GetCalleeTree(string name, string path, string find); + + SourceInformation Source(TreeNode node); + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/ICallTreeDataProviderFactory.cs b/src/HtmlJs/PerfDataService/ICallTreeDataProviderFactory.cs new file mode 100644 index 000000000..f478054bd --- /dev/null +++ b/src/HtmlJs/PerfDataService/ICallTreeDataProviderFactory.cs @@ -0,0 +1,7 @@ +namespace PerfDataService +{ + public interface ICallTreeDataProviderFactory + { + ICallTreeDataProvider Get(); + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/ITemporaryPathProvider.cs b/src/HtmlJs/PerfDataService/ITemporaryPathProvider.cs new file mode 100644 index 000000000..795f29ec4 --- /dev/null +++ b/src/HtmlJs/PerfDataService/ITemporaryPathProvider.cs @@ -0,0 +1,7 @@ +namespace PerfDataService +{ + public interface ITemporaryPathProvider + { + string Path { get; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/ITraceDataPlugin.cs b/src/HtmlJs/PerfDataService/ITraceDataPlugin.cs new file mode 100644 index 000000000..e17efd310 --- /dev/null +++ b/src/HtmlJs/PerfDataService/ITraceDataPlugin.cs @@ -0,0 +1,15 @@ +namespace PerfDataService +{ + using System; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Diagnostics.Tracing.Stacks; + + public interface ITraceDataPlugin + { + string Type { get; } + + StackSource GetStackSource(TraceEvents eventSource); + + Func SummaryPredicate { get; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/CacheFiles.cs b/src/HtmlJs/PerfDataService/Models/CacheFiles.cs new file mode 100644 index 000000000..efd8109b0 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/CacheFiles.cs @@ -0,0 +1,118 @@ +using System.IO; +using System; +using Microsoft.Diagnostics.Utilities; +using System.Reflection; +using System.Diagnostics; + +namespace Utilities +{ + /// + /// Some applications need to make files that are associated with the application + /// but also have affinity with other files on the disk. This class helps manage this + /// + static class CacheFiles + { + public static float KeepTimeInDays { get; set; } + public static string CacheDir + { + get + { + if (s_CacheDir == null) + { + ////var exeAssembly = Assembly.GetExecutingAssembly(); + var exeAssembly = typeof(CacheFiles).GetTypeInfo().Assembly; + var exePath = exeAssembly.ManifestModule.FullyQualifiedName; + var exeName = Path.GetFileNameWithoutExtension(exePath); + var tempDir = Environment.GetEnvironmentVariable("TEMP"); + if (tempDir == null) + tempDir = "."; + s_CacheDir = Path.Combine(tempDir, exeName); + Directory.CreateDirectory(s_CacheDir); + } + return s_CacheDir; + } + set { s_CacheDir = value; } + } + + /// + /// Find a path name for the file 'baseFilePath' (which can be a path name to anywhere). + /// which has the extension 'extension'. It will always return something in 'CacheDir' + /// and thus might go away. + /// + /// + /// Note that the file 'baseFilePath' is assumed to exist. + /// + public static string FindFile(string baseFilePath, string extension = "") + { + // TODO FIX NOW add collision detection + + // We expect the original file to exist + Debug.Assert(File.Exists(baseFilePath)); + + var baseFileName = Path.GetFileNameWithoutExtension(baseFilePath); + var baseFileInfo = new FileInfo(baseFilePath); + + // The hash is a combination of full path, size and last write timestamp + var hashData = Tuple.Create(Path.GetFullPath(baseFilePath), baseFileInfo.Length, baseFileInfo.LastWriteTimeUtc); + int hash = hashData.GetHashCode(); + + string ret = Path.Combine(CacheDir, baseFileName + "_" + hash.ToString("x") + extension); + if (File.Exists(ret)) + { + // See if it is up to date. + if (File.GetLastWriteTimeUtc(ret) < baseFileInfo.LastWriteTimeUtc) + FileUtilities.ForceDelete(ret); + else + { + // Set the last access time so we can clean up files based on their last usage. + // However if someone else is actual using the file, we don't want an 'in use' + // exception, so treat this part as optional. + try { File.SetLastAccessTimeUtc(ret, DateTime.UtcNow); } + catch (Exception) { } + } + } + if (!s_didCleanup) + { + s_didCleanup = true; + Cleanup(); + } + return ret; + } + static public void Cleanup() + { + CleanupDirectory(CacheDir, KeepTimeInDays); + } + + static public void CleanupDirectory(string directory, float keepTimeInDays) + { + if (keepTimeInDays == 0) + keepTimeInDays = 5; + + var nowUTC = DateTime.UtcNow; + foreach (var file in Directory.EnumerateFiles(directory, "*", SearchOption.AllDirectories)) + { + if ((nowUTC - File.GetLastAccessTimeUtc(file)).TotalDays > keepTimeInDays) + { + try + { + FileUtilities.ForceDelete(file); + } + catch (Exception) { } + } + } + } + + /// + /// Returns true if the output file is up to date with respect to the input file (exists and created after it). + /// + public static bool UpToDate(string outputFile, string inputFile) + { + return File.Exists(outputFile) && File.GetLastWriteTimeUtc(inputFile) <= File.GetLastWriteTimeUtc(outputFile); + } + + #region private + static string s_CacheDir; + static bool s_didCleanup; + #endregion + } +} diff --git a/src/HtmlJs/PerfDataService/Models/CallersViewStackViewerViewModel.cs b/src/HtmlJs/PerfDataService/Models/CallersViewStackViewerViewModel.cs new file mode 100644 index 000000000..7aa9e7026 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/CallersViewStackViewerViewModel.cs @@ -0,0 +1,7 @@ +namespace PerfDataService.Models +{ + public sealed class CallersViewStackViewerViewModel : StackViewerViewModel + { + public TreeNode Node { get; set; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/DirectoryUtilities.cs b/src/HtmlJs/PerfDataService/Models/DirectoryUtilities.cs new file mode 100644 index 000000000..35041276d --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/DirectoryUtilities.cs @@ -0,0 +1,182 @@ +/****************************************************************************/ +/* DirectoryUtilities.cs */ +/****************************************************************************/ + +/* Copyright (c) Microsoft Corporation. All rights reserved. */ +/* AUTHOR: Vance Morrison + * Date : 10/20/2007 */ +/****************************************************************************/ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; + +namespace Microsoft.Diagnostics.Utilities +{ + /******************************************************************************/ + /// + /// General purpose utilities dealing with archiveFile system directories. + /// +#if UTILITIES_PUBLIC + public +#endif + static class DirectoryUtilities + { + /// + /// SafeCopy sourceDirectory to directoryToVersion recursively. The target directory does + /// no need to exist + /// + public static void Copy(string sourceDirectory, string targetDirectory) + { + Copy(sourceDirectory, targetDirectory, SearchOption.AllDirectories); + } + + /// + /// SafeCopy all files from sourceDirectory to directoryToVersion. If searchOptions == AllDirectories + /// then the copy is recursive, otherwise it is just one level. The target directory does not + /// need to exist. + /// + public static void Copy(string sourceDirectory, string targetDirectory, SearchOption searchOptions) + { + if (!Directory.Exists(targetDirectory)) + Directory.CreateDirectory(targetDirectory); + + foreach (string sourceFile in Directory.GetFiles(sourceDirectory)) + { + string targetFile = Path.Combine(targetDirectory, Path.GetFileName(sourceFile)); + FileUtilities.ForceCopy(sourceFile, targetFile); + } + if (searchOptions == SearchOption.AllDirectories) + { + foreach (string sourceDir in Directory.GetDirectories(sourceDirectory)) + { + string targetDir = Path.Combine(targetDirectory, Path.GetFileName(sourceDir)); + Copy(sourceDir, targetDir, searchOptions); + } + } + } + + /// + /// Clean is sort of a 'safe' recursive delete of a directory. It either deletes the + /// files or moves them to '*.deleting' names. It deletes directories that are completely + /// empty. Thus it will do a recursive delete when that is possible. There will only + /// be *.deleting files after this returns. It returns the number of files and directories + /// that could not be deleted. + /// + public static int Clean(string directory) + { + if (!Directory.Exists(directory)) + return 0; + + int ret = 0; + foreach (string file in Directory.GetFiles(directory)) + if (!FileUtilities.ForceDelete(file)) + ret++; + + foreach (string subDir in Directory.GetDirectories(directory)) + ret += Clean(subDir); + + if (ret == 0) + { + try + { + Directory.Delete(directory, true); + } + catch + { + ret++; + } + } + else + ret++; + return ret; + } + + /// + /// Removes the oldest directories directly under 'directoryPath' so that + /// only 'numberToKeep' are left. + /// + /// Directory to removed old files from. + /// The number of files to keep. + /// true if there were no errors deleting files + public static bool DeleteOldest(string directoryPath, int numberToKeep) + { + if (!Directory.Exists(directoryPath)) + return true; + + string[] dirs = Directory.GetDirectories(directoryPath); + int numToDelete = dirs.Length - numberToKeep; + if (numToDelete <= 0) + return true; + + Array.Sort(dirs, delegate(string x, string y) + { + return File.GetLastWriteTimeUtc(x).CompareTo(File.GetLastWriteTimeUtc(y)); + }); + + bool ret = true; + for (int i = 0; i < numToDelete; i++) + { + try + { + Directory.Delete(dirs[i]); + } + catch (Exception) + { + // TODO trace message; + ret = false; + } + } + return ret; + } + + /// + /// DirectoryUtilities.GetFiles is basicaly the same as Directory.GetFiles + /// however it returns IEnumerator, which means that it lazy. This is very important + /// for large directory trees. A searchPattern can be specified (Windows wildcard conventions) + /// that can be used to filter the set of archiveFile names returned. + /// + /// Suggested Usage + /// + /// foreach(string fileName in DirectoryUtilities.GetFiles("c:\", "*.txt")){ + /// Console.WriteLine(fileName); + /// } + /// + /// + /// The base directory to enumerate + /// A pattern to filter the names (windows filename wildcards * ?) + /// Indicate if the search is recursive or not. + /// The enumerator for all archiveFile names in the directory (recursively). + public static IEnumerable GetFiles(string directoryPath, string searchPattern, SearchOption searchOptions) + { + + string[] fileNames = Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly); + Array.Sort(fileNames, StringComparer.OrdinalIgnoreCase); + foreach (string fileName in fileNames) + { + yield return fileName; + } + + if (searchOptions == SearchOption.AllDirectories) + { + string[] subDirNames = Directory.GetDirectories(directoryPath); + Array.Sort(subDirNames); + foreach (string subDir in subDirNames) + { + foreach (string fileName in DirectoryUtilities.GetFiles(subDir, searchPattern, searchOptions)) + { + yield return fileName; + } + } + } + } + + /// + /// Returns a lazy enumerable for every path in 'directoryName' that matchs 'searchPattern' (default is *)MO + /// + public static IEnumerable GetFiles(string directoryName, string searchPattern = "*") + { + return GetFiles(directoryName, searchPattern, SearchOption.TopDirectoryOnly); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/Extensibility.cs b/src/HtmlJs/PerfDataService/Models/Extensibility.cs new file mode 100644 index 000000000..c6f646000 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/Extensibility.cs @@ -0,0 +1,3743 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Xml; +using Microsoft.Diagnostics.Tracing; +using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Diagnostics.Tracing.Stacks; +//using Graphs; +//using PerfView; +//using PerfView.GuiUtilities; +//using PerfViewModel; +using Microsoft.Diagnostics.Symbols; +using Utilities; +////using FastSerialization; +using Microsoft.Diagnostics.Utilities; +using Microsoft.Diagnostics.Tracing.Etlx; +using Microsoft.Diagnostics.Tracing.Session; +using Diagnostics.Tracing.StackSources; +using Microsoft.Diagnostics.Tracing.Parsers.Kernel; +using Microsoft.Diagnostics.Tracing.Parsers.Clr; +using Address = System.UInt64; +using System.Threading.Tasks; +using System.ComponentModel; +//using PerfView.Dialogs; +//using PerfView.CapStats; +////using EventSources; +using PerfDataService; + + +namespace PerfViewExtensibility +{ + /// + /// CommandEnvironment defines the 'primitive starting points' that a PerfView Extension uses + /// to start doing interesting things. + /// + public class CommandEnvironment + { + // logging + /// + /// The log file is a place to write verbose diagnostics. It is either the console or the GUI log, or + /// a file that use redirected logging to with the /logFile=XXX qualifier. + /// + ////public static TextWriter LogFile { get { return App.CommandProcessor.LogFile; } } + + // File I/O + /// + /// Open an ETL file (same as new TraceLog(etlFileName)) + /// + /// + /// + public static ETLDataFile OpenETLFile(string etlFileName) { return new ETLDataFile(etlFileName); } + /// + /// Opens a *.perfView.xml.zip or *.perfview.xml + /// + ////public static Stacks OpenPerfViewXmlFile(string perfViewXmlFileName) + ////{ + //// var guiState = new StackWindowGuiState(); + //// var source = new XmlStackSource(perfViewXmlFileName, delegate (XmlReader reader) + //// { + //// if (reader.Name == "StackWindowGuiState") + //// guiState.ReadFromXml(reader); + //// // These are here for backward compatibility. Can remove after 2013. + //// else if (reader.Name == "FilterXml") + //// guiState.FilterGuiState.ReadFromXml(reader); + //// else if (reader.Name == "Log") + //// guiState.Log = reader.ReadElementContentAsString().Trim(); + //// else if (reader.Name == "Notes") + //// guiState.Notes = reader.ReadElementContentAsString().Trim(); + //// else + //// reader.Skip(); + //// }); + //// var ret = new Stacks(source, perfViewXmlFileName); + //// ret.GuiState = guiState; + //// ret.Name = perfViewXmlFileName; + //// return ret; + ////} + /// + /// Opens a GCHeap dump (created with HeapSnapshot) + /// + //// public static Stacks OpenGCDumpFile(string gcDumpFileName) + //// { + //// var log = App.CommandProcessor.LogFile; + //// var gcDump = new GCHeapDump(gcDumpFileName); + + //// Graph graph = gcDump.MemoryGraph; + + //// log.WriteLine( + //// "Opened Graph {0} Bytes: {1:f3}M NumObjects: {2:f3}K NumRefs: {3:f3}K Types: {4:f3}K RepresentationSize: {5:f1}M", + //// gcDumpFileName, graph.TotalSize / 1000000.0, (int)graph.NodeIndexLimit / 1000.0, + //// graph.TotalNumberOfReferences / 1000.0, (int)graph.NodeTypeIndexLimit / 1000.0, + //// graph.SizeOfGraphDescription() / 1000000.0); + + ////#if false // TODO FIX NOW remove + //// using (StreamWriter writer = File.CreateText(Path.ChangeExtension(this.FilePath, ".heapDump.xml"))) + //// { + //// ((MemoryGraph)graph).DumpNormalized(writer); + //// } + ////#endif + //// var retSource = new MemoryGraphStackSource(graph, log, gcDump.CountMultipliersByType); + + //// // Set the sampling ratio so that the number of objects does not get too far out of control. + //// if (2000000 <= (int)graph.NodeIndexLimit) + //// { + //// retSource.SamplingRate = ((int)graph.NodeIndexLimit / 1000000); + //// log.WriteLine("Setting the sampling rate to {0} to keep processing under control.", retSource.SamplingRate); + //// } + + //// // Figure out the multiplier + //// string extraTopStats = ""; + //// if (gcDump.CountMultipliersByType != null) + //// { + //// extraTopStats += string.Format(" Heap Sampled: Mean Count Multiplier {0:f2} Mean Size Multiplier {1:f2}", + //// gcDump.AverageCountMultiplier, gcDump.AverageSizeMultiplier); + //// } + + //// log.WriteLine("Type Histograph > 1% of heap size"); + //// log.Write(graph.HistogramByTypeXml(graph.TotalSize / 100)); + + //// // TODO FIX NOW better name. + //// var retStacks = new Stacks(retSource, "GC Heap Dump of " + Path.GetFileName(gcDumpFileName)); + //// retStacks.m_fileName = gcDumpFileName; + //// retStacks.ExtraTopStats = extraTopStats; + //// return retStacks; + //// } + + // Data Collection + /// + /// Runs the command 'commandLine' with ETW enabled. Creates data file 'outputFileName'. + /// By default this is a Zipped ETL file. + /// + /// The command line to run. + /// The data file to place the profile data. If omitted it is the parsedParams.DataFile + /// Any other arguments for the run command. + /// If omitted it is inherited from the CommandEnvironment.CommandLineArgs + ////public static void Run(string commandLine, string dataFile = null, CommandLineArgs parsedCommandLine = null) + ////{ + //// if (parsedCommandLine == null) + //// parsedCommandLine = App.CommandLineArgs; + + //// parsedCommandLine.CommandLine = commandLine; + //// if (dataFile != null) + //// parsedCommandLine.DataFile = dataFile; + //// App.CommandProcessor.Run(parsedCommandLine); + ////} + /// + /// Run the 'Collect command creating the data file outputFileName. By default this is a Zipped ETL file. + /// + /// The data file to place the profile data. If omitted it is the parsedParams.DataFile + /// Any other arguments for the run command. + /// If ommited it is inherited from the CommandEnvironment.CommandLineArgs + ////public static void Collect(string dataFile = null, CommandLineArgs parsedCommandLine = null) + ////{ + //// if (parsedCommandLine == null) + //// parsedCommandLine = App.CommandLineArgs; + + //// if (dataFile != null) + //// parsedCommandLine.DataFile = dataFile; + //// App.CommandProcessor.Collect(parsedCommandLine); + ////} + /// + /// Collect a heap snapshot from 'process' placing the data in 'outputFileName' (a gcdump file) + /// + /// The name of the process or the process ID. + /// If there is more than one process with the same name, the one that was started LAST is chosen. + /// The data file (.gcdump) to generate. + ////public static void HeapSnapshot(string process, string outputFileName = null) + ////{ + //// CommandLineArgs.Process = process; + //// if (outputFileName != null) + //// CommandLineArgs.DataFile = outputFileName; + //// App.CommandProcessor.HeapSnapshot(CommandLineArgs); + ////} + /// + /// Collect a heap snapshot from a process dump file 'dumpFile' placing the data in 'outputFileName' (a gcdump file) + /// + /// The dump file to extract the heap from. + /// The data file (.gcdump) to generate. + ////public static void HeapSnapshotFromProcessDump(string inputDumpFile, string outputFileName = null) + ////{ + //// CommandLineArgs.ProcessDumpFile = inputDumpFile; + //// if (outputFileName != null) + //// CommandLineArgs.DataFile = outputFileName; + //// App.CommandProcessor.HeapSnapshot(CommandLineArgs); + ////} + + // gui operations + /// + /// Open a new stack viewer GUI window in the dat in 'stacks' + /// + /// + /// + ////public static void OpenStackViewer(Stacks stacks, Action OnOpened = null) + ////{ + //// ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate () + //// ////{ + //// // TODO FIX NOW Major hacks. + //// PerfViewStackSource perfViewStackSource; + //// string filePath; + //// if (stacks.m_EtlFile != null) + //// { + //// filePath = stacks.m_EtlFile.FilePath; + //// ETLPerfViewData file = (ETLPerfViewData)PerfViewFile.Get(filePath); + //// ////file.OpenWithoutWorker(GuiApp.MainWindow, GuiApp.MainWindow.StatusBar); + //// var stackSourceName = stacks.Name.Substring(0, stacks.Name.IndexOf(" file")); + //// perfViewStackSource = file.GetStackSource(stackSourceName); + //// if (perfViewStackSource == null) + //// perfViewStackSource = new PerfViewStackSource(file, ""); + //// } + //// else + //// { + //// if (stacks.m_fileName != null) + //// filePath = stacks.m_fileName; + //// else + //// filePath = stacks.Name; + //// if (string.IsNullOrWhiteSpace(filePath)) + //// filePath = "X.PERFVIEW.XML"; // MAJOR HACK. + + //// var perfViewFile = PerfViewFile.Get(filePath); + //// var gcDumpFile = perfViewFile as HeapDumpPerfViewFile; + //// if (gcDumpFile != null) + //// { + //// ////gcDumpFile.OpenWithoutWorker(GuiApp.MainWindow, GuiApp.MainWindow.StatusBar); + //// var gcDump = gcDumpFile.GCDump; + //// if (gcDump.CreationTool != null && gcDump.CreationTool == "ILSize") + //// { + //// // Right now we set nothing. + //// stacks.GuiState = new StackWindowGuiState(); + //// stacks.GuiState.Columns = new List { "NameColumn", + //// "ExcPercentColumn", "ExcColumn", "ExcCountColumn", + //// "IncPercentColumn", "IncColumn", "IncCountColumn", + //// "FoldColumn", "FoldCountColumn" }; + //// } + //// perfViewStackSource = gcDumpFile.GetStackSource(); + + //// } + //// else + //// { + //// var xmlFile = perfViewFile as XmlPerfViewFile; + //// if (xmlFile == null) + //// throw new Exception("Currently only support ETL files and XML files"); + //// perfViewStackSource = new PerfViewStackSource(xmlFile, ""); + //// } + //// } + //// ////var stackWindow = new StackWindow(GuiApp.MainWindow, perfViewStackSource); + //// if (stacks.HasGuiState) + //// ////stackWindow.RestoreWindow(stacks.GuiState, filePath); + //// ////stackWindow.Filter = stacks.Filter; + //// ////stackWindow.SetStackSource(stacks.StackSource, delegate + //// ////{ + //// //// if (stacks.HasGuiState) + //// //// stackWindow.GuiState = stacks.GuiState; + //// //// else + //// //// perfViewStackSource.ConfigureStackWindow(stackWindow); + + //// LogFile.WriteLine("[Opened stack viewer {0}]", filePath); + //// //// if (OnOpened != null) + //// //// OnOpened(stackWindow); + //// ////}); + //// ////stackWindow.Show(); + //// //}); + ////} + /// + /// Open a new EventViewer with the given set of events + /// + /// + /// If non-null an action to perform after the window is opened (on the GUI thread) + /// + ////public static void OpenEventViewer(Events events, Action OnOpened = null) + ////{ + //// ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate() + //// ////{ + //// // TODO FIX NOW this is probably a hack? + //// var file = PerfViewFile.Get(events.m_EtlFile.FilePath); + //// var eventSource = new PerfViewEventSource(file); + //// eventSource.m_eventSource = events; + //// ////eventSource.Viewer = new EventWindow(GuiApp.MainWindow, eventSource); + //// ////eventSource.Viewer.Show(); + //// ////if (OnOpened != null) + //// //// eventSource.Viewer.Loaded += delegate { OnOpened(eventSource.Viewer); }; + //// ////}); + ////} + //// / + //// / Displays an HTML file htmlFilePath, (typically created using CommandEnvironment.CreateUniqueCacheFileName()) + //// / in a new window. + //// / + //// / The path to the file containing the HTML. + //// / The title for the new window. + //// / Docommand(string command, TextWriter log), is a action that is called any time a URL of the + //// / form is clicked on.The XXXX is passed as the command and a TextWriter that can display + //// / messages to the windows log is given, and a handle to the web browser window itself.Messages surrounded by[] in + //// / the log are also displayed on the windows one line status bar. Thus important messages should be surrounded by[]. + //// / This callback is NOT on the GUI thread, so you have to use the window.Dispatcher.BeginInvoke() to cause actions on + //// / the GUI thread. + //// / If non-null an action to perform after the window is opened(on the GUI thread) + //// public static void OpenHtmlReport(string htmlFilePath, string title, + //// Action DoCommand = null, Action OnOpened = null) + ////{ + //// GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate () + //// { + //// var viewer = new WebBrowserWindow(); + //// viewer.Browser.Navigating += delegate (object sender, System.Windows.Navigation.NavigatingCancelEventArgs e) + //// { + //// if (e.Uri != null) + //// { + //// if (e.Uri.Scheme == "command") + //// { + //// e.Cancel = true; + //// if (viewer.StatusBar.Visibility != System.Windows.Visibility.Visible) + //// viewer.StatusBar.Visibility = System.Windows.Visibility.Visible; + //// viewer.StatusBar.StartWork("Following Hyperlink", delegate () + //// { + //// if (DoCommand != null) + //// DoCommand(e.Uri.LocalPath, viewer.StatusBar.LogWriter, viewer); + //// else + //// viewer.StatusBar.Log("This view does not support command URLs."); + //// viewer.StatusBar.EndWork(null); + //// }); + //// } + //// } + //// }; + //// viewer.Width = 1000; + //// viewer.Height = 600; + //// viewer.Title = title; + //// WebBrowserWindow.Navigate(viewer.Browser, Path.GetFullPath(htmlFilePath)); + //// viewer.Show(); + //// if (OnOpened != null) + //// viewer.Loaded += delegate { OnOpened(viewer); }; + + //// }); + ////} + /////// + /////// Open Excel on csvFilePath. + /////// + ////public static void OpenExcel(string csvFilePath) + ////{ + //// LogFile.WriteLine("[Opening CSV on {0}]", csvFilePath); + //// Command.Run(Command.Quote(csvFilePath), new CommandOptions().AddStart().AddTimeout(CommandOptions.Infinite)); + ////} + /////// + /////// Opens the log window if this is running under the GUI, otherwise does nothing. + /////// + ////public static void OpenLog() + ////{ + //// if (App.CommandLineArgs.NoGui) + //// return; + //// ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate() + //// ////{ + //// //// GuiApp.MainWindow.StatusBar.OpenLog(); + //// ////}); + ////} + + ////// environment support + /////// + /////// The command lines passed to perfView itself. These are also populated by default values. + /////// Setting these values in CommandLineArgs will cause the commands below to use the updated values. + /////// + ////public static CommandLineArgs CommandLineArgs { get { return App.CommandLineArgs; } } + /////// + /////// ConfigData is a set of key-value dictionary that is persisted (as AppData\Roaming\PerfView\UserConfig.xml) + /////// so it is remembered across invocations of the program. + /////// + ////public static ConfigData ConfigData { get { return App.ConfigData; } } + /////// + /////// This is a directory where you can place temporary files. These files will be cleaned up + /////// eventually if the number grows too large. (this is %TEMP%\PerfView) + /////// + ////public static string CacheFileDirectory { get { return CacheFiles.CacheDir; } } + /////// + /////// Creates a file name that is in the CacheFileDirectory that will not collide with any other file. + /////// You give it the base name (file name without extension), as well as the extension, and it returns + /////// a full file path that is guaranteed to be unique. + /////// + /////// The file name without extension (a suffix will be added to this) + /////// optionally an extension to add to the file name (must have a . in front) + /////// The full path of a unique file in the CacheFileDirectory + ////public static string CreateUniqueCacheFileName(string baseFilePath, string extension = "") + ////{ + //// return CacheFiles.FindFile(baseFilePath, extension); + ////} + /////// + /////// This is the directory that all extensions live in (e.g. PerfViewExtensibity next to PerfView.exe) + /////// + ////public static string ExtensionsDirectory { get { return Extensions.ExtensionsDirectory; } } + /////// + /////// This is the directory where support files can go (.e.g AppData\Roaming\PerfView\VER.*) + /////// + ////public static string SupportFilesDirectory { get { return SupportFiles.SupportFileDir; } } +} + + public class DataFile : IDisposable + { /// + /// The path of the data file + /// + public string FilePath { get { return m_FilePath; } } + public void Close() { Dispose(); } + public virtual void Dispose() { } + + #region private + protected string m_FilePath; + #endregion + } + + /// + /// ETL file is a simplified wrapper over the TraceLog class, which represents an ETL data file. + /// If you need 'advanced' features access the TraceLog property. + /// + public class ETLDataFile : DataFile + { + // TODO: This symbolPath static property is only a temporary fix. + + // + // TODO: lt72: do not hardcode paths, you could use a configuration setting in case... (Settings.cs or web.config or app.settings...) + // in web.config you read: 'Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380' + // + + static string symbolPath = PerfDataService.Startup.config["SymbolPath"]; + + + // We have the concept of a process to focus on. All STACK sampling will be filtered by this. + // If null, then no filtering is done. Do try to limit to one process if possible as it makes + // analysis and symbol lookup faster. + public void SetFilterProcess(TraceProcess process) { m_FilterProcess = process; } + public void SetFilterProcess(string name) { m_FilterProcess = Processes.LastProcessWithName(name); } + public void SetFilterProcess(int processId) { m_FilterProcess = Processes.LastProcessWithID(processId); } + public TraceProcess FilterProcess { get { return m_FilterProcess; } } + + /// + /// ETL files collect machine wide, but it is good practice to focus on a particular process + /// as quickly as possible. TraceProcesses is a shortcut to TraceLog.Process that let you + /// find a process of interest quickly. + /// + public TraceProcesses Processes { get { return TraceLog.Processes; } } + /// + /// If the ETL file has stack samples, fetch them. + /// + public Stacks CPUStacks(bool loadAllCachedSymbols = false) + { + return new Stacks(TraceLog.CPUStacks(m_FilterProcess), "CPU", this, loadAllCachedSymbols); + } + /// + /// If the ETL file has stack samples, fetch them. + /// + ////public Stacks ThreadTimeStacks(bool loadAllCachedSymbols = false) + ////{ + //// return new Stacks(TraceLog.ThreadTimeStacks(m_FilterProcess), "Thread Time", this, loadAllCachedSymbols); + ////} + /////// + /////// If the ETL file has stack samples, fetch them as an activity aware stack source. + /////// + ////public Stacks ThreadTimeWithTasksStacks(bool loadAllCachedSymbols = false) + ////{ + //// return new Stacks(TraceLog.ThreadTimeWithTasksStacks(m_FilterProcess), "Thread Time (with Tasks)", this, loadAllCachedSymbols); + ////} + /// + /// Get the list of raw events. + /// + ////public Events Events { get { return new Events(this); } } + + /// + /// Open an existing ETL file by name + /// + /// The name of the ETL file to open + /// If non-null, this method is called when there are lost events (with the count of lost events) + public ETLDataFile(string fileName, Action onLostEvents = null) + { + ////var log = App.CommandProcessor.LogFile; + m_FilePath = fileName; + + var etlOrEtlXFileName = FilePath; + + // TODO: Probably need the following for .etl.zip + TextWriter log = File.CreateText("./log.txt"); + UnZipIfNecessary(ref etlOrEtlXFileName, log); + + for (; ; ) // RETRY Loop + { + var usedAnExistingEtlxFile = false; + var etlxFileName = etlOrEtlXFileName; + if (etlOrEtlXFileName.EndsWith(".etl", StringComparison.OrdinalIgnoreCase)) + { + etlxFileName = CacheFiles.FindFile(etlOrEtlXFileName, ".etlx"); + if (File.Exists(etlxFileName) && File.GetLastWriteTimeUtc(etlOrEtlXFileName) <= File.GetLastWriteTimeUtc(etlxFileName)) + { + usedAnExistingEtlxFile = true; + log.WriteLine("Found a existing ETLX file in cache: {0}", etlxFileName); + } + else + { + var options = new TraceLogOptions(); + ////options.ConversionLog = log; + ////if (App.CommandLineArgs.KeepAllEvents) + //// options.KeepAllEvents = true; + ////options.MaxEventCount = App.CommandLineArgs.MaxEventCount; + ////options.SkipMSec = App.CommandLineArgs.SkipMSec; + options.OnLostEvents = onLostEvents; + options.LocalSymbolsOnly = false; + options.ShouldResolveSymbols = delegate(string moduleFilePath) { return false; }; + + log.WriteLine("Creating ETLX file {0} from {1}", etlxFileName, etlOrEtlXFileName); + TraceLog.CreateFromEventTraceLogFile(etlOrEtlXFileName, etlxFileName, options); + + var dataFileSize = "Unknown"; + if (File.Exists(etlOrEtlXFileName)) + dataFileSize = ((new System.IO.FileInfo(etlOrEtlXFileName)).Length / 1000000.0).ToString("n3") + " MB"; + + log.WriteLine("ETL Size {0} ETLX Size {1:n3} MB", + dataFileSize, (new System.IO.FileInfo(etlxFileName)).Length / 1000000.0); + } + } + // At this point we have an etlxFileName set, so we can open the TraceLog file. + try + { + m_TraceLog = new TraceLog(etlxFileName); + } + catch (Exception) + { + // Failure! If we used an existing ETLX file we should try to regenerate the file + if (usedAnExistingEtlxFile) + { + log.WriteLine("Could not open the ETLX file, regenerating..."); + FileUtilities.ForceDelete(etlxFileName); + if (!File.Exists(etlxFileName)) + continue; // Retry + } + throw; + } + break; + } + + log.Flush(); + log.Close(); + // Yeah we have opened the log file! + ////if (App.CommandLineArgs.UnsafePDBMatch) + //// m_TraceLog.CodeAddresses.UnsafePDBMatching = true; + } + /// + /// Lookup all symbols for any module with 'simpleFileName'. If processID==0 then all processes are searched. + /// + /// The name of the module without directory or extension + /// Options for symbol reading + ////public void LookupSymbolsForModule(string simpleModuleName, SymbolReaderOptions symbolFlags = SymbolReaderOptions.None) + ////{ + //// var symbolReader = GetSymbolReader(symbolFlags); + //// ////var log = App.CommandProcessor.LogFile; + + //// // Remove any extensions. + //// simpleModuleName = Path.GetFileNameWithoutExtension(simpleModuleName); + + //// // If we have a process, look the DLL up just there + //// var moduleFiles = new Dictionary(); + //// if (m_FilterProcess != null) + //// { + //// foreach (var loadedModule in m_FilterProcess.LoadedModules) + //// { + //// var baseName = Path.GetFileNameWithoutExtension(loadedModule.Name); + //// if (string.Compare(baseName, simpleModuleName, StringComparison.OrdinalIgnoreCase) == 0) + //// moduleFiles[(int)loadedModule.ModuleFile.ModuleFileIndex] = loadedModule.ModuleFile; + //// } + //// } + + //// // We did not find it, try system-wide + //// if (moduleFiles.Count == 0) + //// { + //// foreach (var moduleFile in TraceLog.ModuleFiles) + //// { + //// var baseName = Path.GetFileNameWithoutExtension(moduleFile.Name); + //// if (string.Compare(baseName, simpleModuleName, StringComparison.OrdinalIgnoreCase) == 0) + //// moduleFiles[(int)moduleFile.ModuleFileIndex] = moduleFile; + //// } + //// } + + //// if (moduleFiles.Count == 0) + //// throw new Exception("Could not find module " + simpleModuleName + " in trace."); + + //// ////if (moduleFiles.Count > 1) + //// //// log.WriteLine("Found {0} modules with name {1}", moduleFiles.Count, simpleModuleName); + //// foreach (var moduleFile in moduleFiles.Values) + //// { + //// try + //// { + //// TraceLog.CodeAddresses.LookupSymbolsForModule(symbolReader, moduleFile); + //// } + //// catch (Exception ex) + //// { + //// ////log.WriteLine("Error looking up " + moduleFile.FilePath + "\r\n " + ex.Message); + //// } + //// } + ////} + + /// + /// Access the underlying TraceLog class that actually represents the ETL data. You use + /// when the simplified wrappers are not sufficient. + /// + public TraceLog TraceLog { get { return m_TraceLog; } } + /// + /// Returns a SymbolReader which knows to look in local places associated with this file as well + /// as the user defined places. + /// + ////public SymbolReader GetSymbolReader(SymbolReaderOptions symbolFlags = SymbolReaderOptions.None) + ////{ + //// return App.GetSymbolReader(m_FilePath, symbolFlags); + ////} + + /// + /// Closes the file (so for example you could update it after this) + /// + public override void Dispose() + { + m_TraceLog.Dispose(); + m_TraceLog = null; + } + #region private + + private static void UnZipIfNecessary(ref string inputFileName, TextWriter log, bool unpackInCache = true) + { + if (string.Compare(Path.GetExtension(inputFileName), ".zip", StringComparison.OrdinalIgnoreCase) == 0) + { + string unzipedEtlFile; + if (unpackInCache) + { + unzipedEtlFile = CacheFiles.FindFile(inputFileName, ".etl"); + if (File.Exists(unzipedEtlFile) && File.GetLastWriteTimeUtc(inputFileName) <= File.GetLastWriteTimeUtc(unzipedEtlFile)) + { + log.WriteLine("Found a existing unzipped file {0}", unzipedEtlFile); + inputFileName = unzipedEtlFile; + return; + } + } + else + { + if (!inputFileName.EndsWith(".etl.zip", StringComparison.OrdinalIgnoreCase)) + throw new Exception("File does not end with the .etl.zip file extension"); + unzipedEtlFile = inputFileName.Substring(0, inputFileName.Length - 4); + } + + Stopwatch sw = Stopwatch.StartNew(); + log.WriteLine("[Decompressing {0}]", inputFileName); + log.WriteLine("Generating output file {0}", unzipedEtlFile); + var zipArchive = ZipFile.OpenRead(inputFileName); + + ZipArchiveEntry zippedEtlFile = null; + string dirForPdbs = null; + foreach (var entry in zipArchive.Entries) + { + if (entry.Length == 0) // Skip directories. + continue; + + var fullName = entry.FullName; + if (fullName.EndsWith(".pdb", StringComparison.OrdinalIgnoreCase)) + { + fullName = fullName.Replace('/', '\\'); // normalize separator convention + string pdbRelativePath = null; + if (fullName.StartsWith(@"symbols\", StringComparison.OrdinalIgnoreCase)) + pdbRelativePath = fullName.Substring(8); + else if (fullName.StartsWith(@"ngenpdbs\", StringComparison.OrdinalIgnoreCase)) + pdbRelativePath = fullName.Substring(9); + else + { + var m = Regex.Match(fullName, @"^[^\\]+\.ngenpdbs?\\(.*)", RegexOptions.IgnoreCase); + if (m.Success) + pdbRelativePath = m.Groups[1].Value; + else + { + log.WriteLine("WARNING: found PDB file that was not in a symbol server style directory, skipping extraction"); + log.WriteLine(" Unzip this ETL and PDB by hand to use this PDB."); + continue; + } + } + + if (dirForPdbs == null) + { + var inputDir = Path.GetDirectoryName(inputFileName); + if (inputDir.Length == 0) + inputDir = "."; + var symbolsDir = Path.Combine(inputDir, "symbols"); + if (Directory.Exists(symbolsDir)) + dirForPdbs = symbolsDir; + else + dirForPdbs = ETLDataFile.symbolPath; + ////dirForPdbs = new SymbolPath(App.SymbolPath).DefaultSymbolCache(); + log.WriteLine("Putting symbols in {0}", dirForPdbs); + } + + var pdbTargetPath = Path.Combine(dirForPdbs, pdbRelativePath); + var pdbTargetName = Path.GetFileName(pdbTargetPath); + if (!File.Exists(pdbTargetPath) || (new System.IO.FileInfo(pdbTargetPath).Length != entry.Length)) + { + var firstNameInRelativePath = pdbRelativePath; + var sepIdx = firstNameInRelativePath.IndexOf('\\'); + if (sepIdx >= 0) + firstNameInRelativePath = firstNameInRelativePath.Substring(0, sepIdx); + var firstNamePath = Path.Combine(dirForPdbs, firstNameInRelativePath); + if (File.Exists(firstNamePath)) + { + log.WriteLine("Deleting pdb file that is in the way {0}", firstNamePath); + FileUtilities.ForceDelete(firstNamePath); + } + log.WriteLine("Extracting PDB {0}", pdbRelativePath); + AtomicExtract(entry, pdbTargetPath); + } + else + log.WriteLine("PDB {0} exists, skipping", pdbRelativePath); + } + else if (fullName.EndsWith(".etl", StringComparison.OrdinalIgnoreCase)) + { + if (zippedEtlFile != null) + throw new Exception("The ZIP file does not have exactly 1 ETL file in it, can't auto-extract."); + zippedEtlFile = entry; + } + } + if (zippedEtlFile == null) + throw new Exception("The ZIP file does not have any ETL files in it!"); + + AtomicExtract(zippedEtlFile, unzipedEtlFile); + log.WriteLine("Zipped size = {0:f3} MB Unzipped = {1:f3} MB", + zippedEtlFile.CompressedLength / 1000000.0, zippedEtlFile.Length / 1000000.0); + + File.SetLastWriteTime(unzipedEtlFile, DateTime.Now); // Touch the file + inputFileName = unzipedEtlFile; + log.WriteLine("Finished decompression, took {0:f0} sec", sw.Elapsed.TotalSeconds); + } + } + // Extract to a temp file and move so we get atomic update. May leave trash behind + private static void AtomicExtract(ZipArchiveEntry zipEntry, string targetPath) + { + // Insure directory exists. + Directory.CreateDirectory(Path.GetDirectoryName(targetPath)); + var extractPath = targetPath + ".new"; + try + { + zipEntry.ExtractToFile(extractPath, true); + FileUtilities.ForceMove(extractPath, targetPath); + } + finally + { + FileUtilities.ForceDelete(extractPath); + } + } + + TraceLog m_TraceLog; + TraceProcess m_FilterProcess; // Only care about this process. + #endregion + } + + ////public class Events : ETWEventSource + ////{ + ////void SaveAsCSV(string csvFileName) + ////{ + //// ////string listSeparator = Thread.CurrentThread.CurrentCulture.TextInfo.ListSeparator; + //// string listSeparator = CultureInfo.CurrentCulture.TextInfo.ListSeparator; + //// using (var csvFile = File.CreateText(csvFileName)) + //// { + //// // Write out column header + //// csvFile.Write("Event Name{0}Time MSec{0}Process Name", listSeparator); + //// // TODO get rid of ugly 4 column restriction + //// var maxField = 0; + //// var hasRest = true; + //// if (ColumnsToDisplay != null) + //// { + //// hasRest = false; + //// foreach (var columnName in ColumnsToDisplay) + //// { + //// Debug.Assert(!columnName.Contains(listSeparator)); + //// if (maxField >= 4) + //// { + //// hasRest = true; + //// break; + //// } + //// maxField++; + //// csvFile.Write("{0}{1}", listSeparator, columnName); + //// } + //// } + //// if (hasRest) + //// csvFile.Write("{0}Rest", listSeparator); + //// csvFile.WriteLine(); + + //// // Write out events + //// this.ForEach(delegate (EventRecord _event) + //// { + //// // Have we exceeded MaxRet? + //// if (_event.EventName == null) + //// return false; + + //// csvFile.Write("{0}{1}{2:f3}{1}{3}", _event.EventName, listSeparator, _event.TimeStampRelatveMSec, EscapeForCsv(_event.ProcessName, listSeparator)); + //// var fields = _event.DisplayFields; + //// for (int i = 0; i < maxField; i++) + //// csvFile.Write("{0}{1}", listSeparator, EscapeForCsv(fields[i], listSeparator)); + //// if (hasRest) + //// csvFile.Write("{0}{1}", listSeparator, EscapeForCsv(_event.Rest, listSeparator)); + //// csvFile.WriteLine(); + //// return true; + //// }); + //// } + ////} + ////void OpenInExcel() + ////{ + //// var log = App.CommandProcessor.LogFile; + + //// var csvFile = CacheFiles.FindFile(m_EtlFile.FilePath, ".excel.csv"); + //// if (File.Exists(csvFile)) + //// { + //// FileUtilities.TryDelete(csvFile); + + //// var baseFile = csvFile.Substring(0, csvFile.Length - 9); + //// for (int i = 1; ; i++) + //// { + //// csvFile = baseFile + i.ToString() + ".excel.csv"; + //// if (!File.Exists(csvFile)) + //// break; + //// } + //// } + + //// log.WriteLine("Saving to CSV file {0}", csvFile); + //// SaveAsCSV(csvFile); + //// log.WriteLine("Opening CSV ."); + //// Command.Run(Command.Quote(csvFile), new CommandOptions().AddStart().AddTimeout(CommandOptions.Infinite)); + //// log.WriteLine("CSV file opened."); + //// throw new NotImplementedException(); + ////} + + ////public Events(ETLDataFile etlFile) + //// : base(etlFile.TraceLog) + ////{ + //// m_EtlFile = etlFile; + ////} + + #region private + /// + /// Returns a string that is will be exactly one field of a CSV file. Thus it escapes , and "" + /// + ////internal static string EscapeForCsv(string str, string listSeparator) + ////{ + //// // TODO FIX NOW is this a hack? + //// if (str == null) + //// return ""; + //// // If you don't have a comma, you are OK (we are losing leading and trailing whitespace but I don't care about that. + //// if (str.IndexOf(listSeparator) < 0) + //// return str; + + //// // Escape all " by repeating them + //// str = str.Replace("\"", "\"\""); + //// return "\"" + str + "\""; // then quote the whole thing + ////} + + ////internal ETLDataFile m_EtlFile; + #endregion + ////} + + /// + /// A Stacks class represents what the PerfView 'stacks' view shows you. It has + /// a 'FilterParams' property which represents all the filter strings in that view. + /// It also has properties that represent the various tabs in that view (calltee, byname ...) + /// + public class Stacks + { + public FilterParams Filter { get { return m_Filter; } set { m_Filter = value; m_StackSource = null; } } + public void Update() { m_StackSource = null; } + + public CallTree CallTree + { + get + { + if (m_CallTree == null || m_StackSource == null) + { + m_CallTree = new CallTree(ScalingPolicyKind.ScaleToData); + m_CallTree.StackSource = StackSource; + } + return m_CallTree; + } + } + IEnumerable ByName + { + get + { + if (m_byName == null || m_CallTree == null || m_StackSource == null) + m_byName = CallTree.ByIDSortedExclusiveMetric(); + return m_byName; + } + } + public CallTreeNodeBase FindNodeByName(string nodeNamePat) + { + var regEx = new Regex(nodeNamePat, RegexOptions.IgnoreCase); + foreach (var node in ByName) + { + if (regEx.IsMatch(node.Name)) + return node; + } + return CallTree.Root; + } + public CallTreeNode GetCallers(string focusNodeName) + { + var focusNode = FindNodeByName(focusNodeName); + return AggregateCallTreeNode.CallerTree(focusNode); + } + public CallTreeNode GetCallees(string focusNodeName) + { + var focusNode = FindNodeByName(focusNodeName); + return AggregateCallTreeNode.CalleeTree(focusNode); + } + + /// + /// Resolve the symbols of all modules that have at least 'minCount' INCLUSIVE samples. + /// symbolFlags indicate how aggressive you wish to be. By default it is aggressive as possible (do + /// whatever you need to get the PDB you need). + /// Setting 'minCount' to 0 will try to look up all symbols possible (which is relatively expensive). + /// + /// By default all Warm symbols with a count > 50 AND in the machine local symbol cache are looked up. + /// If the cache is empty, or if you want even low count modules included, call this explicitly + /// + public void LookupWarmSymbols(int minCount, SymbolReaderOptions symbolFlags = SymbolReaderOptions.None) + { + TraceEventStackSource asTraceEventStackSource = GetTraceEventStackSource(m_rawStackSource); + if (asTraceEventStackSource == null) + { + ////App.CommandProcessor.LogFile.WriteLine("LookupWarmSymbols: Stack source does not support symbols."); + return; + } + string etlFilepath = null; + if (m_EtlFile != null) + etlFilepath = m_EtlFile.FilePath; + + ////var reader = App.GetSymbolReader(etlFilepath, symbolFlags); + ////asTraceEventStackSource.LookupWarmSymbols(minCount, reader, StackSource); + m_StackSource = null; + } + /// + /// Lookup the symbols for a particular module (DLL). + /// + /// The simple name (dll name without path or file extension) + /// Optional flags that control symbol lookup + public void LookupSymbolsForModule(string simpleModuleName, SymbolReaderOptions symbolFlags = SymbolReaderOptions.None) + { + if (m_EtlFile != null) + { + ////m_EtlFile.LookupSymbolsForModule(simpleModuleName, symbolFlags); + m_StackSource = null; + } + else + { + ////App.CommandProcessor.LogFile.WriteLine("LookupSymbolsForModule: Stack source does not support symbols."); + return; + } + } + + /// + /// Saves the stacks as a XML file (or a ZIPed XML file). Only samples that pass the filter are saved. + /// Also all interesting symbolic names should be resolved first because it is impossible to resolve them + /// later. The saved samples CAN be regrouped later, however. + /// + public void SaveAsXml(string outputFileName, bool zip = true, bool includeGuiState = true) + { + // TODO remember the status log even when we don't have a gui. + ////if (GuiApp.MainWindow != null) + //// GuiState.Log = File.ReadAllText(App.LogFileName); + + Action additionalData = null; + ////if (includeGuiState) + //// additionalData = new Action((XmlWriter writer) => { GuiState.WriteToXml("StackWindowGuiState", writer); }); + + // Intern to compact it, only take samples in the view but leave the names unmorphed. + InternStackSource source = new InternStackSource(StackSource, m_rawStackSource); + if (zip) + XmlStackSourceWriter.WriteStackViewAsZippedXml(source, outputFileName, additionalData); + else + XmlStackSourceWriter.WriteStackViewAsXml(source, outputFileName, additionalData); + + ////GuiState.Log = null; // Save some space. + } + /// + /// This is an optional and is used for human interactions. + /// + public string Name { get; internal set; } + /// + /// ExtraTopStats is a string that is pretty important that humans see when viewing these stacks. + /// Often they are aggregate statistics, or maybe warnings or error summaries. It should be + /// well under 100 chars long. + /// + public string ExtraTopStats { get; set; } + + /// + /// Stacks is just a convenience wrapper around the StackSource class. For advanced use + /// you may need to get at the stack source. + /// + public StackSource StackSource + { + get + { + if (m_StackSource == null) + m_StackSource = new FilterStackSource(m_Filter, m_rawStackSource, ScalingPolicyKind.ScaleToData); + return m_StackSource; + } + } + /// + /// If you have a stackSource and want a Stacks, + /// + public Stacks(StackSource source, string name = "") + { + m_Filter = new FilterParams(); + m_rawStackSource = source; + Name = name; + } + + // GUI State + /// + /// There is a bunch of data that really is useful to persist to make + /// the GUI work well, (like the history of Filter selections etc) + /// but is not central to the model of the data. This all goes into + /// 'GuiState'. This data gets persisted when SaveAsXml is called and + /// is passed to the GUI when OpenStackViewer is called, but otherwise + /// we don't do much with it. (unless you wish influence the GUI + /// by explicitly changing it). + /// + ////public StackWindowGuiState GuiState + ////{ + //// get + //// { + //// if (m_GuiState == null) + //// m_GuiState = DefaultCallStackWindowState("CPU"); + //// return m_GuiState; + //// } + //// set { m_GuiState = value; } + ////} + + ////public bool HasGuiState { get { return m_GuiState != null; } } + + ////public static StackWindowGuiState DefaultCallStackWindowState(string name) + ////{ + //// // TODO logic for getting out of ConfigSettings. + + //// var ret = new StackWindowGuiState(); + //// ret.Columns = new List() { + //// "NameColumn", + //// "ExcPercentColumn", "ExcColumn", "ExcCountColumn", + //// "IncPercentColumn", "IncColumn", "IncCountColumn", + //// "FoldColumn", "FoldCountColumn", + //// "WhenColumn", "FirstColumn", "LastColumn" }; + + //// if (name == "Memory") + //// { + //// ret.FilterGuiState.FoldRegEx.Value = @"[];mscorlib!System.String"; + //// } + //// else + //// { + //// ret.FilterGuiState.GroupRegEx.Value = + //// @"[group CLR/OS entries] \Temporary ASP.NET Files\->;v4.0.30319\%!=>CLR;v2.0.50727\%!=>CLR;mscoree=>CLR;\mscorlib.*!=>LIB;\System.*!=>LIB;" + + //// @"Presentation%=>WPF;WindowsBase%=>WPF;system32\*!=>OS;syswow64\*!=>OS;{%}!=> module $1"; + //// ret.FilterGuiState.GroupRegEx.History = new List { ret.FilterGuiState.GroupRegEx.Value, + //// "[group modules] {%}!->module $1", + //// "[group module entries] {%}!=>module $1", + //// "[group full path module entries] {*}!=>module $1", + //// "[group class entries] {%!*}.%(=>class $1;{%!*}::=>class $1", + //// "[group classes] {%!*}.%(->class $1;{%!*}::->class $1" }; + + //// ret.FilterGuiState.ExcludeRegEx.Value = "^Process% Idle"; + //// ret.FilterGuiState.ExcludeRegEx.History = new List { ret.FilterGuiState.ExcludeRegEx.Value }; + + //// ret.FilterGuiState.FoldPercent.Value = "1"; + + //// // Can allow users to tweek this with config data. + //// switch (name) + //// { + //// case "CPU": + //// ret.Columns.Remove("IncCountColumn"); + //// ret.Columns.Remove("ExcCountColumn"); + //// ret.Columns.Remove("FoldCountColumn"); + //// ret.ScalingPolicy = ScalingPolicyKind.TimeMetric; + //// break; + //// } + //// } + //// return ret; + ////} + + public override string ToString() + { + var sw = new System.IO.StringWriter(); + sw.Write(""); + sw.Write(" "); + sw.WriteLine(""); + return sw.ToString(); + } + + #region private + /// + /// TODO should not have to specify the ETL file. + /// + public Stacks(StackSource source, string name, ETLDataFile etlFile, bool loadAllCachedSymbols = false) + { + m_Filter = new FilterParams(); + m_rawStackSource = source; + m_EtlFile = etlFile; + Name = string.Format("{0} file {1} in {2}", name, Path.GetFileName(etlFile.FilePath), Path.GetDirectoryName(etlFile.FilePath)); + + // By default, look up all symbols in cache that have at least 50 samples. + LookupWarmSymbols((loadAllCachedSymbols ? 0 : 50), SymbolReaderOptions.CacheOnly); + } + protected Stacks() { } + + /// + /// Unwind the wrapped sources to get to a TraceEventStackSource if possible. + /// + static internal TraceEventStackSource GetTraceEventStackSource(StackSource source) + { + StackSourceStacks rawSource = source; + TraceEventStackSource asTraceEventStackSource = null; + for (;;) + { + asTraceEventStackSource = rawSource as TraceEventStackSource; + if (asTraceEventStackSource != null) + return asTraceEventStackSource; + + var asCopyStackSource = rawSource as CopyStackSource; + if (asCopyStackSource != null) + { + rawSource = asCopyStackSource.SourceStacks; + continue; + } + var asStackSource = rawSource as StackSource; + if (asStackSource != null && asStackSource != asStackSource.BaseStackSource) + { + rawSource = asStackSource.BaseStackSource; + continue; + } + return null; + } + + } + + protected StackSource m_rawStackSource; // Before the filter is applied + private StackSource m_StackSource; // After the filter is applied, note this changes every time the filter does. + private CallTree m_CallTree; + private List m_byName; + private FilterParams m_Filter; + internal ETLDataFile m_EtlFile; // If this stack came from and ETL File this is that file. + ////internal string m_fileName; // TODO is this a hack. This is the file name if present. + ////StackWindowGuiState m_GuiState; + #endregion + } + + #region internal classes + ////internal static class Extensions + ////{ + //// public static string ExtensionsDirectory + //// { + //// get + //// { + //// if (s_ExtensionsDirectory == null) + //// { + //// var exeDir = Path.GetDirectoryName(SupportFiles.ExePath); + //// // This is for development ease development of perfView itself. + //// if (exeDir.EndsWith(@"\perfView\bin\Release", StringComparison.OrdinalIgnoreCase)) + //// exeDir = exeDir.Substring(0, exeDir.Length - 20); + //// else if (exeDir.EndsWith(@"\perfView\bin\Debug", StringComparison.OrdinalIgnoreCase)) + //// exeDir = exeDir.Substring(0, exeDir.Length - 18); + + //// s_ExtensionsDirectory = Path.Combine(exeDir, "PerfViewExtensions"); + //// } + //// return s_ExtensionsDirectory; + //// } + //// } + + //// public static void RunUserStartupCommands(StatusBar worker) + //// { + //// try + //// { + //// var startupFilePath = Path.Combine(ExtensionsDirectory, "PerfViewStartup"); + //// if (File.Exists(startupFilePath)) + //// { + //// string errorMessage = null; + //// string line = ""; + //// int lineNum = 0; + //// using (var startupFile = File.OpenText(startupFilePath)) + //// { + //// for (; ; ) + //// { + //// lineNum++; + //// line = startupFile.ReadLine(); + //// if (line == null) + //// return; + //// line = line.Trim(); + //// if (line.Length == 0 || line.StartsWith("#")) + //// continue; + //// List commandAndArgs = MainWindow.ParseWordsOrQuotedStrings(line); + //// var command = ""; + //// if (0 < commandAndArgs.Count) + //// command = commandAndArgs[0]; + //// if (command == "OnStartup") + //// { + //// if (commandAndArgs.Count != 2) + //// { + //// errorMessage = "OnStartup command requires 1 argument, the startup user command."; + //// goto Failed; + //// } + //// ExecuteUserCommand(commandAndArgs[1], null); + //// } + //// else if (command == "OnFileOpen") + //// { + //// if (commandAndArgs.Count != 3) + //// { + //// errorMessage = "OnFileOpen command requires 2 arguments, the file extension and the user command."; + //// goto Failed; + //// } + //// string extension = commandAndArgs[1]; + //// PerfViewFile.GetTemplateForExtension(extension).OnOpenFile(commandAndArgs[2]); + //// } + //// else if (command == "DeclareFileView") + //// { + //// if (commandAndArgs.Count != 4) + //// { + //// errorMessage = "DeclareFileView command requires 3 arguments, the file extension, view name and the user command."; + //// goto Failed; + //// } + //// string extension = commandAndArgs[1]; + //// PerfViewFile.GetTemplateForExtension(extension).DeclareFileView(commandAndArgs[2], commandAndArgs[3]); + //// } + //// else + //// { + //// if (string.IsNullOrWhiteSpace(line)) + //// continue; + //// errorMessage = "Unrecognized command."; + //// goto Failed; + //// } + //// } + //// Failed: + //// throw new Exception("Error: " + errorMessage + " '" + line + @"' line " + lineNum + @" in PerfViewExtensions\PerfViewStartup file"); + //// } + //// } + //// } + //// catch (Exception e) + //// { + //// worker.LogError(@"Error executing PerfViewExtensions\PerfViewStartup file.\r\n" + e.Message); + //// } + //// } + + //// public static IEnumerable GetExtensionDlls() + //// { + //// if (Directory.Exists(ExtensionsDirectory)) + //// { + //// foreach (var dll in Directory.GetFiles(ExtensionsDirectory, "*.dll", SearchOption.TopDirectoryOnly)) + //// { + //// using (var peFile = new PEFile.PEFile(dll)) + //// { + //// if (!peFile.Header.IsManaged || peFile.Header.IsPE64) + //// continue; + //// } + //// yield return dll; + //// } + //// } + //// } + + //// public static void GenerateHelp(TextWriter log) + //// { + //// var commandsHelp = GetUserCommandHelp(); + //// foreach (var method in Extensions.GetAllUserCommands()) + //// { + //// var commandSummary = Extensions.GetCommandString(method); + //// log.WriteLine(); + //// log.WriteLine("-------------------------------------------------------------------------"); + //// log.WriteLine("{0}", commandSummary); + + //// // Get command name + //// var idx = commandSummary.IndexOf(' '); + //// if (idx < 0) idx = commandSummary.Length; + //// var commandName = commandSummary.Substring(0, idx); + + //// // Print extra help + //// CommandHelp commandHelp; + //// if (commandsHelp.TryGetValue(commandName, out commandHelp)) + //// { + //// log.WriteLine(); + //// log.WriteLine(" Summary: "); + //// WriteWrapped(" ", commandHelp.Summary, " ", 80, log); + //// if (commandHelp.Params != null) + //// { + //// log.WriteLine(" Parameters: "); + //// foreach (var param in commandHelp.Params) + //// WriteWrapped(" " + param.Name + ": ", param.Help, " ", 80, log); + //// } + //// } + //// } + //// } + + //// private static void WriteWrapped(string prefix, string body, string wrap, int maxColumn, TextWriter log) + //// { + //// body = Regex.Replace(body, @"\s+", " "); + //// log.Write(prefix); + //// int curColumn = prefix.Length; + //// int idx = 0; + //// do + //// { + //// var nextBreak = GetLineNextBreak(body, idx, curColumn, maxColumn); + + //// log.WriteLine(body.Substring(idx, nextBreak - idx)); + //// if (body.Length <= nextBreak) + //// break; + + //// idx = nextBreak + 1; + //// log.Write(wrap); + //// curColumn = wrap.Length; + //// } + //// while (idx < body.Length); + //// } + + //// /// + //// /// Find the end index of the chunk of 'str' if we are at 'curColumn' and we don't want the text + //// /// to go beyond maxColumn. + //// /// + //// private static int GetLineNextBreak(string str, int startIdx, int startColumn, int maxColumn) + //// { + //// var curPos = startIdx + (maxColumn - startColumn); + //// if (curPos >= str.Length) + //// return str.Length; + + //// var spaceIdx = str.LastIndexOf(' ', curPos, curPos - startIdx); + //// if (0 <= spaceIdx) + //// return spaceIdx; + + //// spaceIdx = str.IndexOf(' ', curPos); + //// if (0 <= spaceIdx) + //// return spaceIdx; + + //// return str.Length; + //// } + + //// public static List GetAllUserCommands() + //// { + //// var ret = new List(); + + //// // Get the ones built into perfView itself (in Extensibilty.cs PerfViewExtensibility\Commands) + //// var methods = typeof(PerfViewExtensibility.Commands).GetMethods( + //// BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly); + //// foreach (var method in methods) + //// ret.Add(method); + + //// // Find all the ones that are in user extension dlls. + //// foreach (var extensionDllPath in GetExtensionDlls()) + //// { + //// try + //// { + //// //// TODO: Figure out how to load assembly without using LoadFrom, since it does not exist in CoreFX + //// ////var assembly = Assembly.LoadFrom(extensionDllPath); + //// var assemblyName = new AssemblyName(); + //// assemblyName.Name = extensionDllPath; + //// var assembly = Assembly.Load(assemblyName); + //// var commandType = assembly.GetType("Commands"); + //// if (commandType != null) + //// { + //// methods = commandType.GetMethods( + //// BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly); + //// foreach (var method in methods) + //// ret.Add(method); + //// } + //// } + //// catch (Exception) { + //// App.CommandProcessor.LogFile.WriteLine("Dll " + extensionDllPath + "could not be loaded, assuming it has no user commands"); + //// } + //// } + + //// return ret; + //// } + + //// /// + //// /// Returns strings of the from COMMANDNAME arg1Name [arg2Name] .... + //// /// where [] indicate optional arguments. + //// /// + //// /// + //// public static string GetCommandString(MethodInfo method) + //// { + //// var sb = new StringBuilder(); + + //// ////var assembly = method.DeclaringType.Assembly; + //// ////var assemblyName = Path.GetFileNameWithoutExtension(assembly.ManifestModule.FullyQualifiedName); + //// ////if (string.Compare(assemblyName, "Global", StringComparison.OrdinalIgnoreCase) != 0 && assembly != Assembly.GetExecutingAssembly()) + //// var assemblyName = method.DeclaringType.AssemblyQualifiedName; + //// if (string.Compare(assemblyName, "Global", StringComparison.OrdinalIgnoreCase) != 0) + //// sb.Append(assemblyName).Append('.'); + + //// sb.Append(method.Name); + //// foreach (var param in method.GetParameters()) + //// { + //// sb.Append(' '); + //// var defaultValue = param.RawDefaultValue; + //// ////if (defaultValue != System.DBNull.Value) + //// if (defaultValue != null) + //// sb.Append('[').Append(param.Name).Append(']'); + //// else + //// { + //// var attribs = param.GetCustomAttributes(typeof(ParamArrayAttribute), false); + //// ////if (attribs.Length != 0) + //// if (attribs.Count() != 0) + //// sb.Append('[').Append(param.Name).Append("...]"); + //// else + //// sb.Append(param.Name); + //// } + //// } + //// var ret = sb.ToString(); + //// return ret; + //// } + + //// /// + //// /// Return all the user command help, indexed by user command name. + //// /// + //// public static Dictionary GetUserCommandHelp() + //// { + //// var ret = new Dictionary(); + //// foreach (var extDll in GetExtensionDlls()) + //// { + //// var extName = Path.GetFileNameWithoutExtension(extDll); + //// var xmlHelp = Path.ChangeExtension(extDll, ".xml"); + //// AddUserCommandHelp(ret, extName, xmlHelp); + //// } + //// // Add the help for the ones in Extensions.cs in perfView itself. + //// AddUserCommandHelp(ret, "", Path.Combine(SupportFiles.SupportFileDir, "PerfView.xml")); + //// return ret; + //// } + + //// /// + //// /// Given the name of the extension DLL (extName) and the xml help file for the extension xmlHelp + //// /// Find the XML comments for all commands and add them to the 'userComandHelp' dictionary. + //// /// + //// private static void AddUserCommandHelp(Dictionary userComandHelp, string extName, string xmlHelp) + //// { + //// // TODO we actually end up with too large of dictionary because we also store the private methods too. + //// try + //// { + //// if (File.Exists(xmlHelp)) + //// { + //// XmlReaderSettings settings = new XmlReaderSettings() { IgnoreWhitespace = true, IgnoreComments = true }; + //// XmlReader reader = XmlReader.Create(xmlHelp, settings); + //// reader.ReadToDescendant("members"); + //// var startDepth = reader.Depth; + //// reader.Read(); // Advance to children + //// while (startDepth < reader.Depth) + //// { + //// if (reader.NodeType == XmlNodeType.Element) + //// { + //// if (reader.Name == "member") + //// { + //// var xmlMemberName = reader.GetAttribute("name"); + //// if (xmlMemberName.StartsWith("M:Commands.")) + //// { + //// var endIdx = xmlMemberName.IndexOf('('); + //// if (endIdx < 0) + //// endIdx = xmlMemberName.Length; + //// var name = xmlMemberName.Substring(11, endIdx - 11); + //// if (extName != "Global") + //// name = extName + "." + name; + //// userComandHelp.Add(name, new CommandHelp(name, reader)); + //// } + //// else if (extName.Length == 0 && xmlMemberName.StartsWith("M:PerfViewExtensibility.Commands.")) + //// { + //// // Handle the case for user commands defined in PerfView.exe itself. + //// var endIdx = xmlMemberName.IndexOf('('); + //// if (endIdx < 0) + //// endIdx = xmlMemberName.Length; + //// var name = xmlMemberName.Substring(33, endIdx - 33); + //// userComandHelp[name] = new CommandHelp(name, reader); + //// } + //// else + //// reader.Skip(); + //// } + //// else + //// reader.Skip(); + //// } + //// else if (!reader.Read()) + //// break; + //// } + + //// } + //// } + //// catch (Exception e) + //// { + //// // TODO add logging that gets to the user. + //// Debug.WriteLine("error reading XML file " + e.Message); + //// } + //// } + + //// /// + //// /// Represents the help for a method. + //// /// + //// public class CommandHelp + //// { + //// public string Name; + //// public string Summary; + //// public List Params; + //// private string name; + + //// public CommandHelp(string name, XmlReader reader) + //// { + //// this.name = name; + + //// var startDepth = reader.Depth; + //// reader.Read(); // Advance to children + //// while (startDepth < reader.Depth) + //// { + //// if (reader.NodeType == XmlNodeType.Element) + //// { + //// if (reader.Name == "summary") + //// this.Summary = reader.ReadElementContentAsString().Trim(); + //// else if (reader.Name == "param") + //// { + //// if (Params == null) + //// Params = new List(); + //// var newParam = new CommandHelpParam(); + //// newParam.Name = reader.GetAttribute("name"); + //// newParam.Help = reader.ReadElementContentAsString().Trim(); + //// Params.Add(newParam); + //// } + //// else + //// reader.Skip(); + //// } + //// else if (!reader.Read()) + //// break; + //// } + //// } + //// } + //// /// + //// /// Represents the help for a single parameter + //// /// + //// public class CommandHelpParam + //// { + //// public string Name; + //// public string Help; + //// } + + + //// #region private + //// private static string s_ExtensionsDirectory; + + //// private static Dictionary LoadedObjects; + + //// internal static void ExecuteUserCommand(string command, string[] args) + //// { + //// object instance = null; // The object instance to invoke + //// Type instanceType = null; + + //// // Parse command into fileSpec and methodSpec + //// var fileSpec = "Global"; + //// var methodSpec = command; + //// var dotIndex = command.IndexOf('.'); + //// if (0 < dotIndex) + //// { + //// fileSpec = command.Substring(0, dotIndex); + //// methodSpec = command.Substring(dotIndex + 1); + //// } + //// else + //// { + //// // It is a global command, first try look in PerfView itself + //// instanceType = typeof(Commands); + //// if (instanceType.GetMethod(methodSpec) != null) + //// instance = new Commands(); + //// } + + //// // Could not find it in perfView, look in extensions. + //// if (instance == null) + //// { + //// // Find the instance of 'Commands' that we may have created previously, otherwise make a new one + //// if (LoadedObjects == null) + //// LoadedObjects = new Dictionary(); + //// if (!LoadedObjects.TryGetValue(fileSpec, out instance)) + //// { + //// var fullFilePath = Path.Combine(ExtensionsDirectory, fileSpec + ".dll"); + //// if (!File.Exists(fullFilePath)) + //// { + //// if (fileSpec == "Global") + //// throw new FileNotFoundException("Could not find " + methodSpec + " in PerfView's built in user commands."); + + //// throw new FileNotFoundException("Could not find file " + fullFilePath + " for for user extensions.", fullFilePath); + //// } + //// ////var assembly = Assembly.LoadFrom(fullFilePath); + //// var assemblyName = new AssemblyName(); + //// assemblyName.Name = fullFilePath; + //// var assembly = Assembly.Load(assemblyName); + + //// instanceType = assembly.GetType("Commands"); + //// if (instanceType == null) + //// throw new Exception("Could not find type 'Commands' in " + fullFilePath); + //// instance = Activator.CreateInstance(instanceType); + //// LoadedObjects[fileSpec] = instance; + //// } + //// else + //// instanceType = instance.GetType(); + //// } + + //// // Actually invoke the method. + //// try + //// { + //// ////instanceType.InvokeMember(methodSpec, + //// //// BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public | BindingFlags.OptionalParamBinding, + //// //// null, instance, args); + //// var method = instanceType.GetTypeInfo().GetDeclaredMethod("methodSpec"); + //// method.Invoke(instance, args); + //// } + //// catch (TargetInvocationException ex) + //// { + //// // TODO we don't get the stack for the inner exception. + //// // When we move to V4.5.1 we can use ExceptionDispatchInfo to fix. + //// throw ex.InnerException; + //// } + //// catch (AggregateException ex) + //// { + //// throw ex.InnerExceptions[0]; + //// } + //// catch (MissingMethodException) + //// { + //// throw new Exception(string.Format( + //// "Could not find user command {0} that takes {1} arguments. Use /userCommandHelp for help.", methodSpec, args == null ? 0 : args.Length)); + //// } + //// } + //// #endregion + ////} + +#if false +// TODO FIX NOW use or remove +// +// What is the right model? +// +// StackSource - represents the raw data. No dependencies, Can do filtering. - Clean for Model +// CallTree - Depends on StackSource, model for treeview, - Clean for Model +// AgreegateCallTree - callers view and callees view - Clean for Model +// EventSource - eventView - Clean for Model. +// +// MutableTraceEventStackSource - Sources for ETL file - Clean for Model +// +// PerfViewItem +// Filename, ICON, help, Expanded, Children, Open +// PerfViewFile +// PerfViewStackSource - know their view +// At the very least they are a model for the MainViewer's GUI. +// They open +// PerfViewEventSource - know their view +// PerfViewHtmlReport +// +// These things know about StatusBars, they know their view. +// +// Does the automation drive the GUI or does it drive the MODEL? +static class GuiModel +{ + public static void Wait(this StatusBar worker) + { + while (worker.IsWorking) + Thread.Sleep(100); + } + + public static PerfViewFile Open(string fileName) + { + var ret = PerfViewFile.Get(fileName); + + var mainWindow = GuiApp.MainWindow; + ret.Open(mainWindow, mainWindow.StatusBar); + mainWindow.StatusBar.Wait(); + return ret; + } + + public static void ResolveSymbols(this PerfViewStackSource source) + { + var viewer = source.Viewer; + viewer.DoLookupWarmSymbols(null, null); + viewer.StatusBar.Wait(); + } + + public static void SetFilter(this PerfViewStackSource source, FilterParams filter) + { + var viewer = source.Viewer; + viewer.Filter = filter; + viewer.Update(); + viewer.StatusBar.Wait(); + } + + public static CallTree CallTree(this PerfViewStackSource source) + { + return source.Viewer.CallTree; + } + + public static void Save(this PerfViewStackSource source, string fileName) + { + var viewer = source.Viewer; + viewer.FileName = fileName; + viewer.DoSave(null, null); + viewer.StatusBar.Wait(); + } +} +#endif + #endregion +} + +///PerfViewModel contains things that are not very important for the user to see +/// but are never the less part of the model. +//// namespace PerfViewModel +////{ +//// /// +//// /// This class effectively serializes GUI state in the StackWindow. It is +//// /// simply a strongly typed version of the XML data. +//// /// +//// public class StackWindowGuiState +//// { +//// public StackWindowGuiState() { FilterGuiState = new FilterGuiState(); } +//// public StackWindowGuiState ReadFromXml(XmlReader reader) +//// { +//// if (reader.NodeType != XmlNodeType.Element) +//// throw new InvalidOperationException("Must advance to XML element (e.g. call ReadToDescendant)"); + +//// var inputDepth = reader.Depth; +//// // This is here for backward compatibility. Can remove after 2013. +//// TabSelected = reader.GetAttribute("TabSelected"); + +//// reader.Read(); // Advance to children +//// while (inputDepth < reader.Depth) +//// { +//// if (reader.NodeType == XmlNodeType.Element) +//// { +//// string valueStr; +//// switch (reader.Name) +//// { +//// case "FilterGuiState": +//// FilterGuiState.ReadFromXml(reader); +//// break; +//// case "Notes": +//// Notes = reader.ReadElementContentAsString().Trim(); +//// break; +//// case "Log": +//// Log = reader.ReadElementContentAsString().Trim(); +//// break; +//// case "Columns": +//// Columns = TextBoxGuiState.ReadStringList(reader); +//// break; +//// case "NotesPaneHidden": +//// valueStr = reader.ReadElementContentAsString().Trim(); +//// NotesPaneHidden = string.Compare(valueStr, "True", StringComparison.OrdinalIgnoreCase) == 0; +//// break; +//// case "ScalingPolicy": +//// valueStr = reader.ReadElementContentAsString().Trim(); +//// if (string.Compare(valueStr, "TimeMetric", StringComparison.OrdinalIgnoreCase) == 0) +//// ScalingPolicy = ScalingPolicyKind.TimeMetric; +//// else +//// Debug.Assert(string.Compare(valueStr, "ScaleToData", StringComparison.OrdinalIgnoreCase) == 0); +//// break; +//// case "TabSelected": +//// TabSelected = reader.ReadElementContentAsString().Trim(); +//// break; +//// case "FocusName": +//// FocusName = reader.ReadElementContentAsString().Trim(); +//// break; +//// //case "ByNameSelection": +//// // ByNameSelection = reader.ReadElementContentAsString().Trim(); +//// // break; +//// //case "CallTreeSelection": +//// // CallTreeSelection = reader.ReadElementContentAsString().Trim(); +//// // break; +//// //case "CalleesSelection": +//// // CalleesSelection = reader.ReadElementContentAsString().Trim(); +//// // break; +//// //case "CallersSelection": +//// // CallersSelection = reader.ReadElementContentAsString().Trim(); +//// // break; +//// // This is here for backward compatibility. Can remove after 2013. +//// case "CallerCallee": +//// FocusName = reader.GetAttribute("Focus"); +//// reader.Skip(); +//// break; +//// default: +//// Debug.WriteLine("Skipping unknown element {0}", reader.Name); +//// reader.Skip(); +//// break; +//// } +//// } +//// else if (!reader.Read()) +//// break; +//// } +//// return this; +//// } +//// public void WriteToXml(string name, XmlWriter writer) +//// { +//// writer.WriteStartElement(name); +//// FilterGuiState.WriteToXml("FilterGuiState", writer); + +//// writer.WriteElementString("Notes", Notes); +//// writer.WriteElementString("Log", XmlUtilities.XmlEscape(Log)); +//// if (Columns != null) +//// { +//// writer.WriteStartElement("Columns"); +//// foreach (var columnName in Columns) +//// writer.WriteElementString("string", columnName); +//// writer.WriteEndElement(); +//// } +//// writer.WriteElementString("NotesPaneHidden", NotesPaneHidden.ToString()); +//// writer.WriteElementString("ScalingPolicy", ScalingPolicy.ToString()); +//// writer.WriteElementString("TabSelected", TabSelected); +//// writer.WriteElementString("FocusName", FocusName); + +//// //writer.WriteElementString("ByNameSelection", ByNameSelection); +//// //writer.WriteElementString("CallTreeSelection", CallTreeSelection); +//// //writer.WriteElementString("CalleesSelection", CalleesSelection); +//// //writer.WriteElementString("CallersSelection", CallersSelection); + +//// writer.WriteEndElement(); +//// } + +//// // Filter +//// public FilterGuiState FilterGuiState; +//// public string Notes; +//// public string Log; + +//// // Global attributes. +//// public List Columns; +//// public bool NotesPaneHidden; +//// public ScalingPolicyKind ScalingPolicy; + +//// // What tab is selected +//// public string TabSelected; +//// public string FocusName; + +//// // Where the cursor is in each tab +//// //public string ByNameSelection; +//// //public string CallTreeSelection; +//// //public string CallersSelection; +//// //public string CalleesSelection; +//// } + +//// /// +//// /// This class effectively serializes the GUI state of the filter parameters. It is +//// /// simply a strongly typed version of the XML data. +//// /// +//// public class FilterGuiState +//// { +//// public FilterGuiState() +//// { +//// Start = new TextBoxGuiState(); +//// End = new TextBoxGuiState(); +//// Scenarios = new TextBoxGuiState(); +//// GroupRegEx = new TextBoxGuiState(); +//// FoldPercent = new TextBoxGuiState(); +//// FoldRegEx = new TextBoxGuiState(); +//// IncludeRegEx = new TextBoxGuiState(); +//// ExcludeRegEx = new TextBoxGuiState(); +//// TypePriority = new TextBoxGuiState(); +//// } +//// public FilterGuiState ReadFromXml(XmlReader reader) +//// { +//// if (reader.NodeType != XmlNodeType.Element) +//// throw new InvalidOperationException("Must advance to XML element (e.g. call ReadToDescendant)"); +//// var inputDepth = reader.Depth; +//// reader.Read(); // Advance to children +//// while (inputDepth < reader.Depth) +//// { +//// if (reader.NodeType == XmlNodeType.Element) +//// { +//// switch (reader.Name) +//// { +//// case "Start": +//// Start.ReadFromXml(reader); +//// break; +//// case "End": +//// End.ReadFromXml(reader); +//// break; +//// case "GroupRegEx": +//// GroupRegEx.ReadFromXml(reader); +//// break; +//// case "FoldPercent": +//// FoldPercent.ReadFromXml(reader); +//// break; +//// case "FoldRegEx": +//// FoldRegEx.ReadFromXml(reader); +//// break; +//// case "IncludeRegEx": +//// IncludeRegEx.ReadFromXml(reader); +//// break; +//// case "ExcludeRegEx": +//// ExcludeRegEx.ReadFromXml(reader); +//// break; +//// case "TypePriority": +//// TypePriority.ReadFromXml(reader); +//// break; +//// case "Scenarios": +//// Scenarios.ReadFromXml(reader); +//// break; +//// default: +//// Debug.WriteLine("Skipping unknown element {0}", reader.Name); +//// reader.Skip(); +//// break; +//// } +//// } +//// else if (!reader.Read()) +//// break; +//// } +//// return this; +//// } +//// public void WriteToXml(string name, XmlWriter writer) +//// { +//// writer.WriteStartElement(name); +//// Start.WriteToXml("Start", writer); +//// End.WriteToXml("End", writer); +//// Scenarios.WriteToXml("Scenarios", writer); +//// GroupRegEx.WriteToXml("GroupRegEx", writer); +//// FoldPercent.WriteToXml("FoldPercent", writer); +//// FoldRegEx.WriteToXml("FoldRegEx", writer); +//// IncludeRegEx.WriteToXml("IncludeRegEx", writer); +//// ExcludeRegEx.WriteToXml("ExcludeRegEx", writer); +//// ExcludeRegEx.WriteToXml("TypePriority", writer); +//// writer.WriteEndElement(); +//// } + +//// public TextBoxGuiState Start; +//// public TextBoxGuiState End; +//// public TextBoxGuiState GroupRegEx; +//// public TextBoxGuiState FoldPercent; +//// public TextBoxGuiState FoldRegEx; +//// public TextBoxGuiState IncludeRegEx; +//// public TextBoxGuiState ExcludeRegEx; +//// public TextBoxGuiState TypePriority; +//// public TextBoxGuiState Scenarios; +//// } + +//// /// +//// /// This class effectively serializes the GUI state a single historyTextBox. It is +//// /// simply a strongly typed version of the XML data. +//// /// +//// /// +//// /// +//// public class TextBoxGuiState +//// { +//// public TextBoxGuiState() { } +//// /// +//// /// Assumes we are ON the 'MyName' node below. Readers in the values. +//// /// Leaves the reader on the EndElement. +//// /// +//// /// myValue +//// /// +//// /// old +//// /// +//// /// +//// /// +//// public TextBoxGuiState ReadFromXml(XmlReader reader) +//// { +//// if (reader.NodeType != XmlNodeType.Element) +//// throw new InvalidOperationException("Must advance to XML element (e.g. call ReadToDescendant)"); +//// var inputDepth = reader.Depth; +//// reader.Read(); // Advance to children +//// while (inputDepth < reader.Depth) +//// { +//// if (reader.NodeType == XmlNodeType.Element) +//// { +//// if (reader.Name == "Value") +//// Value = reader.ReadElementContentAsString().Trim(); +//// else if (reader.Name == "History") +//// History = ReadStringList(reader); +//// else +//// reader.Skip(); +//// } +//// // This is here for compatibilty +//// else if (reader.NodeType == XmlNodeType.Text || Value == null) +//// { +//// ////Value = reader.ReadString().Trim(); +//// Value = reader.ReadContentAsString().Trim(); +//// } +//// else if (!reader.Read()) +//// break; +//// } +//// return this; +//// } +//// public void WriteToXml(string name, XmlWriter writer) +//// { +//// writer.WriteStartElement(name); +//// if (Value != null) +//// writer.WriteElementString("Value", Value); +//// if (History != null) +//// { +//// writer.WriteStartElement("History"); +//// foreach (var str in History) +//// writer.WriteElementString("string", str); +//// writer.WriteEndElement(); +//// } +//// writer.WriteEndElement(); +//// } +//// public string Value; +//// public List History; + +//// // TODO does not really belong here, it is generic code. +//// /// +//// /// Reads a string list in XMLSerialization format. Assumes we are on MyList element +//// /// to start, and ends having read the end element of MyList. +//// /// +//// /// elem1 +//// /// elem2 +//// /// elem3 +//// /// +//// /// +//// internal static List ReadStringList(XmlReader reader) +//// { +//// var ret = new List(); +//// if (reader.NodeType != XmlNodeType.Element) +//// throw new InvalidOperationException("Must advance to XML element (e.g. call ReadToDescendant)"); +//// var inputDepth = reader.Depth; +//// reader.Read(); // Advance to children +//// while (inputDepth < reader.Depth) +//// { +//// if (reader.NodeType == XmlNodeType.Element) +//// { +//// // HistoryItem and Column is there for compatibility. Can be removed after 2013 +//// if (reader.Name == "string" || reader.Name == "HistoryItem") +//// ret.Add(reader.ReadElementContentAsString().Trim()); +//// else if (reader.Name == "Column") +//// { +//// ret.Add(reader.GetAttribute("Name").Trim()); +//// reader.Skip(); +//// } +//// else +//// reader.Skip(); +//// } +//// else if (!reader.Read()) +//// break; +//// } +//// return ret; +//// } +//// } +////} + +///This is an example use of the extensibility features. + namespace PerfViewExtensibility +{ + + /// + /// Commands is an actual use of the extensibility functionality. Normally a 'Commands' + /// class is compiled into a user defined DLL. + /// + public class Commands : CommandEnvironment + { + /// + /// Dump every event in 'etlFileName' (which can be a ETL file or an ETL.ZIP file), as an XML file 'xmlOutputFileName' + /// If the output file name is not given, the input filename's extension is changed to '.etl.xml' and that is used. + /// + /// This command is particularly useful for EventSources, where you want to post-process the data in some other tool. + /// + public void DumpEventsAsXml(string etlFileName, string xmlOutputFileName = null) + { + if (xmlOutputFileName == null) + { + ////xmlOutputFileName = PerfViewFile.ChangeExtension(etlFileName, ".etl.xml"); + string dirName = Path.GetDirectoryName(xmlOutputFileName); + string fileName = Path.GetFileNameWithoutExtension(xmlOutputFileName); + string newExtension = ".etl.xml"; + xmlOutputFileName = Path.Combine(dirName, fileName + newExtension); + } + + var eventCount = 0; + using (var outputFile = File.CreateText(xmlOutputFileName)) + { + using (var etlFile = OpenETLFile(etlFileName)) + { + var events = GetTraceEventsWithProcessFilter(etlFile); + var sb = new StringBuilder(); + + outputFile.WriteLine(""); + foreach (TraceEvent _event in events) + { + sb.Clear(); + _event.ToXml(sb); + outputFile.WriteLine(sb.ToString()); + eventCount++; + } + outputFile.WriteLine(""); + } + } + ////LogFile.WriteLine("[Wrote {0} events to {1}]", eventCount, xmlOutputFileName); + } + + + /// + /// Save the CPU stacks from 'etlFileName'. If the /process qualifier is present use it to narrow what + /// is put into the file to a single process. + /// + public void SaveCPUStacks(string etlFileName, string processName = null) + { + using (var etlFile = OpenETLFile(etlFileName)) + { + TraceProcess process = null; + if (processName != null) + { + process = etlFile.Processes.LastProcessWithName(processName); + if (process == null) + throw new Exception("Could not find process named " + processName); + } + SaveCPUStacksForProcess(etlFile, process); + } + } +#if false + /// + /// Save the CPU stacks for a set of traces. + /// + /// If 'scenario' is an XML file, it will be used as a configuration file. + /// + /// Otherwise, 'scenario' must refer to a directory. All ETL files in that directory and + /// any subdirectories will be processed according to the default rules. + /// + /// Summary of config XML: ([] used instead of brackets) + /// [ScenarioConfig] + /// [Scenarios files="*.etl" process="$1.exe" name="scenario $1" /] + /// [/ScenarioConfig] + /// + public void SaveScenarioCPUStacks(string scenario) + { + var startTime = DateTime.Now; + int skipped = 0, updated = 0; + + Dictionary configs; + var outputBuilder = new StringBuilder(); + string outputName = null; + DateTime scenarioUpdateTime = DateTime.MinValue; + var writerSettings = new XmlWriterSettings() + { + Indent = true, + Encoding = Encoding.UTF8, + OmitXmlDeclaration = true + }; + + using (var outputWriter = XmlWriter.Create(outputBuilder, writerSettings)) + { + if (scenario.EndsWith(".xml")) + { + using (var reader = XmlReader.Create(scenario)) + { + configs = DeserializeScenarioConfig(reader, outputWriter, LogFile, Path.GetDirectoryName(scenario)); + } + outputName = Path.ChangeExtension(scenario, ".scenarioSet.xml"); + scenarioUpdateTime = File.GetLastWriteTimeUtc(scenario); + } + else + { + configs = new Dictionary(); + var dirent = new DirectoryInfo(scenario); + foreach (var etl in dirent.EnumerateFiles("*.etl").Concat(dirent.EnumerateFiles("*.etl.zip"))) + { + configs[PerfViewFile.ChangeExtension(etl.FullName, ".perfView.xml.zip")] = new ScenarioConfig(etl.FullName); + } + + // Write default ScenarioSet. + outputWriter.WriteStartDocument(); + outputWriter.WriteStartElement("ScenarioSet"); + outputWriter.WriteStartElement("Scenarios"); + outputWriter.WriteAttributeString("files", "*.perfView.xml.zip"); + outputWriter.WriteEndElement(); + outputWriter.WriteEndElement(); + + outputName = Path.Combine(scenario, "Default.scenarioSet.xml"); + } + } + + if (configs.Count == 0) + { + throw new Exception("No ETL files specified"); + } + + foreach (var configPair in configs) + { + var destFile = configPair.Key; + var config = configPair.Value; + var filename = config.InputFile; + + // Update if we've been written to since updateTime (max of file and scenario config write time). + var updateTime = File.GetLastWriteTimeUtc(filename); + if (scenarioUpdateTime > updateTime) + updateTime = scenarioUpdateTime; + + if (File.Exists(destFile) && + File.GetLastWriteTimeUtc(destFile) >= scenarioUpdateTime) + { + LogFile.WriteLine("[Skipping file {0}: up to date]", filename); + skipped++; + continue; + } + + var etl = OpenETLFile(filename); + TraceProcess processOfInterest; + + bool wildCard = false; + if (config.ProcessFilter == null) + { + processOfInterest = FindProcessOfInterest(etl); + } + else if (config.ProcessFilter == "*") + { + processOfInterest = null; + wildCard = true; + } + else + { + processOfInterest = null; + foreach (var process in etl.Processes) + { + if (config.StartTime <= process.StartTimeRelativeMsec && + string.Compare(process.Name, config.ProcessFilter, StringComparison.OrdinalIgnoreCase) == 0) + { + processOfInterest = process; + break; + } + } + } + + if (processOfInterest == null & !wildCard) + throw new Exception("Process of interest could not be located for " + filename); + + + FilterParams filter = new FilterParams(); + filter.StartTimeRelativeMSec = config.StartTime.ToString("R"); + filter.EndTimeRelativeMSec = config.EndTime.ToString("R"); + SaveCPUStacksForProcess(etl, processOfInterest, filter, destFile); + LogFile.WriteLine("[File {0} updated]", filename); + updated++; + } + + // Regenerate scenario set if out-of-date. + if (!scenario.EndsWith(".xml") || !File.Exists(outputName) || + File.GetLastWriteTimeUtc(outputName) < File.GetLastWriteTimeUtc(scenario)) + { + LogFile.WriteLine("[Writing ScenarioSet file {0}]", outputName); + File.WriteAllText(outputName, outputBuilder.ToString(), Encoding.UTF8); + } + var endTime = DateTime.Now; + + LogFile.WriteLine("[Scenario {3}: {0} generated, {1} up-to-date [{2:F3} s]]", + updated, skipped, (endTime - startTime).TotalSeconds, + Path.GetFileName(PerfViewFile.ChangeExtension(outputName, ""))); + } + + /// + /// If there are System.Diagnostics.Tracing.EventSources that are logging data to the ETL file + /// then there are manifests for each of these EventSources in event stream. This method + /// dumps these to 'outputDirectory' (each manifest file is 'ProviderName'.manifest.xml) + /// + /// If outputDirectory is not present, then the directory 'EtwManifests' in the same directory + /// as the 'etlFileName' is used as the output directory. + /// If 'pattern' is present this is a .NET regular expression and only EventSources that match + /// the pattern will be output. + /// + public void DumpEventSourceManifests(string etlFileName, string outputDirectory = null, string pattern = null) + { + if (outputDirectory == null) + outputDirectory = Path.Combine(Path.GetDirectoryName(etlFileName), "ETWManifests"); + + var etlFile = OpenETLFile(etlFileName); + Directory.CreateDirectory(outputDirectory); + int manifestCount = 0; + foreach (var parser in etlFile.TraceLog.Parsers) + { + var asDynamic = parser as DynamicTraceEventParser; + if (asDynamic != null) + { + foreach (var provider in asDynamic.DynamicProviders) + { + if (pattern == null || Regex.IsMatch(provider.Name, pattern)) + { + var filePath = Path.Combine(outputDirectory, provider.Name + ".manifest.xml"); + LogFile.WriteLine("Creating manifest file {0}", filePath); + File.WriteAllText(filePath, provider.Manifest); + manifestCount++; + } + } + } + } + LogFile.WriteLine("[Created {0} manifest files in {1}]", manifestCount, outputDirectory); + } + + /// + /// This is a test hook. + /// + public void DumpJSHeapAsEtlFile(string processID) + { + JavaScriptHeapDumper.DumpAsEtlFile(int.Parse(processID), processID + ".etl", LogFile); + } + + /// + /// Generate a GCDumpFile of a JavaScript heap from ETW data in 'etlFileName' + /// + public void JSGCDumpFromETLFile(string etlFileName, string gcDumpOutputFileName = null) + { + if (gcDumpOutputFileName == null) + gcDumpOutputFileName = Path.ChangeExtension(etlFileName, ".gcdump"); + + // TODO FIX NOW retrieve the process name, ID etc. + var reader = new JavaScriptDumpGraphReader(LogFile); + var memoryGraph = reader.Read(etlFileName); + GCHeapDump.WriteMemoryGraph(memoryGraph, gcDumpOutputFileName); + LogFile.WriteLine("[Wrote gcDump file {0}]", gcDumpOutputFileName); + } + + /// + /// Generate a GCDumpFile of a DotNet heap from ETW data in 'etlFileName', + /// need to have a V4.5.1 runtime (preferably V4.5.2) to have the proper events. + /// + public void DotNetGCDumpFromETLFile(string etlFileName, string processNameOrId = null, string gcDumpOutputFileName = null) + { + if (gcDumpOutputFileName == null) + gcDumpOutputFileName = PerfViewFile.ChangeExtension(etlFileName, ".gcdump"); + + ETLPerfViewData.UnZipIfNecessary(ref etlFileName, LogFile); + + // TODO FIX NOW retrieve the process name, ID etc. + var reader = new DotNetHeapDumpGraphReader(LogFile); + var memoryGraph = reader.Read(etlFileName, processNameOrId); + GCHeapDump.WriteMemoryGraph(memoryGraph, gcDumpOutputFileName); + LogFile.WriteLine("[Wrote gcDump file {0}]", gcDumpOutputFileName); + } + + /// + /// Pretty prints the raw .NET GC dump events (GCBulk*) with minimal processing as XML. This is mostly + /// useful for debugging, to see if the raw data sane if there is a question on why something is not showing + /// up properly in a more user-friendly view. + /// + /// The input ETW file containing the GC dump events + /// The process to focus on. 0 (the default) says to pick the first process with Bulk GC events. + /// The output XML file. + public void DumpRawDotNetGCHeapEvents(string etlFileName, string processId = null, string outputFileName = null) + { + if (outputFileName == null) + outputFileName = Path.ChangeExtension(etlFileName, ".rawEtwGCDump.xml"); + + int proccessIdInt = 0; + if (processId != null) + proccessIdInt = int.Parse(processId); + + ETLPerfViewData.UnZipIfNecessary(ref etlFileName, LogFile); + var typeLookup = new Dictionary(500); + var events = new List(); + var edges = new List(); + + using (var source = new ETWTraceEventSource(etlFileName, TraceEventSourceType.MergeAll)) + using (TextWriter output = File.CreateText(outputFileName)) + { + source.Clr.TypeBulkType += delegate (GCBulkTypeTraceData data) + { + if (proccessIdInt == 0) + proccessIdInt = data.ProcessID; + if (proccessIdInt != data.ProcessID) + return; + + output.WriteLine(" ", + data.ProcessID, data.TimeStampRelativeMSec, data.Count); + for (int i = 0; i < data.Count; i++) + { + var typeData = data.Values(i); + typeLookup[typeData.TypeID] = typeData.TypeName; + } + }; + source.Clr.GCBulkEdge += delegate (GCBulkEdgeTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + output.WriteLine(" ", + data.ProcessID, data.TimeStampRelativeMSec, data.Count); + edges.Add((GCBulkEdgeTraceData)data.Clone()); + }; + source.Clr.GCBulkNode += delegate (GCBulkNodeTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + events.Add(data.Clone()); + }; + source.Clr.GCBulkRootStaticVar += delegate (GCBulkRootStaticVarTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + events.Add(data.Clone()); + }; + source.Clr.GCBulkRootEdge += delegate (GCBulkRootEdgeTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + events.Add(data.Clone()); + }; + source.Clr.GCBulkRootConditionalWeakTableElementEdge += delegate (GCBulkRootConditionalWeakTableElementEdgeTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + events.Add(data.Clone()); + }; + source.Clr.GCBulkRootCCW += delegate (GCBulkRootCCWTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + events.Add(data.Clone()); + }; + source.Clr.GCBulkRCW += delegate (GCBulkRCWTraceData data) + { + if (proccessIdInt != data.ProcessID) + return; + events.Add(data.Clone()); + }; + output.WriteLine(""); + // Pass one process types and gather up interesting events. + source.Process(); + + // Need to do these things after all the type events are processed. + foreach (var data in events) + { + var node = data as GCBulkNodeTraceData; + if (node != null) + { + output.WriteLine(" ", + data.ProcessID, data.TimeStampRelativeMSec, node.Count); + for (int i = 0; i < node.Count; i++) + { + var value = node.Values(i); + output.WriteLine(" ", + typeName(typeLookup, value.TypeID), value.Address, value.Size, value.EdgeCount); + + // TODO can show edges. + } + output.WriteLine(" "); + continue; + } + var rootEdge = data as GCBulkRootEdgeTraceData; + if (rootEdge != null) + { + output.WriteLine(" ", + rootEdge.ProcessID, rootEdge.TimeStampRelativeMSec, rootEdge.Count); + + for (int i = 0; i < rootEdge.Count; i++) + { + var value = rootEdge.Values(i); + output.WriteLine(" ", + value.GCRootID, value.RootedNodeAddress, value.GCRootKind, value.GCRootFlag); + } + output.WriteLine(" "); + continue; + } + var staticVar = data as GCBulkRootStaticVarTraceData; + if (staticVar != null) + { + output.WriteLine(" ", + staticVar.ProcessID, staticVar.TimeStampRelativeMSec, staticVar.Count); + + for (int i = 0; i < staticVar.Count; i++) + { + var value = staticVar.Values(i); + output.WriteLine(" ", + typeName(typeLookup, value.TypeID), XmlUtilities.XmlEscape(value.FieldName), value.GCRootID, value.ObjectID); + + } + output.WriteLine(" "); + continue; + } + var rcw = data as GCBulkRCWTraceData; + if (rcw != null) + { + output.WriteLine(" ", + rcw.ProcessID, rcw.TimeStampRelativeMSec, rcw.Count); + for (int i = 0; i < rcw.Count; i++) + { + var value = rcw.Values(i); + output.WriteLine(" ", + typeName(typeLookup, value.TypeID), value.ObjectID, value.IUnknown); + } + output.WriteLine(" "); + continue; + } + var ccw = data as GCBulkRootCCWTraceData; + if (ccw != null) + { + output.WriteLine(" ", + ccw.ProcessID, ccw.TimeStampRelativeMSec, ccw.Count); + for (int i = 0; i < ccw.Count; i++) + { + var value = ccw.Values(i); + output.WriteLine(" ", + typeName(typeLookup, value.TypeID), value.ObjectID, value.IUnknown); + } + output.WriteLine(" "); + continue; + } + var condWeakTable = data as GCBulkRootConditionalWeakTableElementEdgeTraceData; + if (condWeakTable != null) + { + output.WriteLine(" ", + condWeakTable.ProcessID, condWeakTable.TimeStampRelativeMSec, condWeakTable.Count); + + for (int i = 0; i < condWeakTable.Count; i++) + { + var value = condWeakTable.Values(i); + output.WriteLine(" ", + value.GCRootID, value.GCKeyNodeID, value.GCValueNodeID); + } + output.WriteLine(" "); + continue; + } + } + output.WriteLine(""); + } + LogFile.WriteLine("[Wrote XML output for process {0} to file {1}]", processId, outputFileName); + } + + private static string typeName(Dictionary types, Address typeId) + { + string ret; + if (types.TryGetValue(typeId, out ret)) + return XmlUtilities.XmlEscape(ret); + return "TypeID(0x" + typeId.ToString("x") + ")"; + } + + /// + /// Dumps a GCDump file as XML. Useful for debugging heap dumping issues. It is easier to read than + /// what is produced by 'WriteGCDumpAsXml' but can't be read in with as a '.gcdump.xml' file. + /// + /// + public void DumpGCDumpFile(string gcDumpFileName) + { + var log = LogFile; + var gcDump = new GCHeapDump(gcDumpFileName); + + Graph graph = gcDump.MemoryGraph; + + log.WriteLine( + "Opened Graph {0} Bytes: {1:f3}M NumObjects: {2:f3}K NumRefs: {3:f3}K Types: {4:f3}K RepresentationSize: {5:f1}M", + gcDumpFileName, graph.TotalSize / 1000000.0, (int)graph.NodeIndexLimit / 1000.0, + graph.TotalNumberOfReferences / 1000.0, (int)graph.NodeTypeIndexLimit / 1000.0, + graph.SizeOfGraphDescription() / 1000000.0); + + var outputFileName = Path.ChangeExtension(gcDumpFileName, ".heapDump.xml"); + using (StreamWriter writer = File.CreateText(outputFileName)) + ((MemoryGraph)graph).DumpNormalized(writer); + + log.WriteLine("[File {0} dumped as {1}.]", gcDumpFileName, outputFileName); + } + + /// + /// Dumps a GCDump file as gcdump.xml file. THese files can be read back by PerfView. + /// + /// The input file (.gcdump) + /// The output file name (defaults to input file with .gcdump.xml suffix) + public void WriteGCDumpAsXml(string gcDumpFileName, string outputFileName = null) + { + var log = LogFile; + var gcDump = new GCHeapDump(gcDumpFileName); + Graph graph = gcDump.MemoryGraph; + log.WriteLine( + "Opened Graph {0} Bytes: {1:f3}M NumObjects: {2:f3}K NumRefs: {3:f3}K Types: {4:f3}K RepresentationSize: {5:f1}M", + gcDumpFileName, graph.TotalSize / 1000000.0, (int)graph.NodeIndexLimit / 1000.0, + graph.TotalNumberOfReferences / 1000.0, (int)graph.NodeTypeIndexLimit / 1000.0, + graph.SizeOfGraphDescription() / 1000000.0); + + if (outputFileName == null) + outputFileName = Path.ChangeExtension(gcDumpFileName, ".gcDump.xml"); + + //// TODO: Figure out why XmlGcHeapDump is not found + ////using (StreamWriter writer = File.CreateText(outputFileName)) + //// XmlGcHeapDump.WriteGCDumpToXml(gcDump, writer); + + log.WriteLine("[File {0} written as {1}.]", gcDumpFileName, outputFileName); + } + + /// + /// Given a name (or guid) of a provider registered on the system, generate a '.manifest.xml' file that + /// represents the manifest for that provider. + /// + public void DumpRegisteredManifest(string providerName, string outputFileName = null) + { + if (outputFileName == null) + outputFileName = providerName + ".manifest.xml"; + + var str = RegisteredTraceEventParser.GetManifestForRegisteredProvider(providerName); + LogFile.WriteLine("[Output written to {0}]", outputFileName); + File.WriteAllText(outputFileName, str); + } + + /// + /// Opens a text window that displays events from the given set of event source names + /// By default the output goes to a GUI window but you can use the /LogFile option to + /// redirect it elsewhere. + /// + /// a comma separated list of event sources or registered ETW provider + public void Listen(string etwProviderNames) + { + var sessionName = "PerfViewListen"; + LogFile.WriteLine("Creating Session {0}", sessionName); + using (var session = new TraceEventSession(sessionName)) + { + TextWriter listenTextEditorWriter = null; + if (!App.CommandLineArgs.NoGui) + { + //// TODO: Have yet to find CoreCLR equivalent to Dispatcher. Will probably strip all of this GUI stuff out, anyway. + ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate() + ////{ + //// var logTextWindow = new Controls.TextEditorWindow(); + //// // Destroy the session when the widow is closed. + //// logTextWindow.Closed += delegate(object sender, EventArgs e) { session.Dispose(); }; + + //// listenTextEditorWriter = new Controls.TextEditorWriter(logTextWindow.m_TextEditor); + //// logTextWindow.TextEditor.IsReadOnly = true; + //// logTextWindow.Title = "Listening to " + etwProviderNames; + //// logTextWindow.Show(); + ////}); + } + + // Add callbacks for any EventSource Events to print them to the Text window + Action onAnyEvent = delegate (TraceEvent data) + { + try + { + String str = data.TimeStamp.ToString("HH:mm:ss.fff "); + str += data.EventName; + str += "\\" + data.ProviderName + " "; + for (int i = 0; i < data.PayloadNames.Length; i++) + { + var payload = data.PayloadNames[i]; + if (i != 0) + str += ","; + str += String.Format("{0}=\"{1}\"", payload, data.PayloadByName(payload)); + } + + if (App.CommandLineArgs.NoGui) + App.CommandProcessor.LogFile.WriteLine("{0}", str); + else + { + //// TODO: Have yet to find CoreCLR equivalent to Dispatcher. Will probably strip all of this GUI stuff out, anyway. + ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate () + ////{ + ////// This should be null because the BeginInvoke above came before this + ////// and both are constrained to run in the same thread, so this has to + ////// be after it (and thus it is initialized). + ////Debug.Assert(listenTextEditorWriter != null); + //// listenTextEditorWriter.WriteLine("{0}", str); + ////}); + } + } + catch (Exception e) + { + App.CommandProcessor.LogFile.WriteLine("Error: Exception during event processing of event {0}: {1}", data.EventName, e.Message); + } + }; + + session.Source.Dynamic.All += onAnyEvent; + + // Enable all the providers the users asked for + foreach (string providerName in etwProviderNames.Split(',')) + { + LogFile.WriteLine("Enabling provider {0}", providerName); + session.EnableProvider(providerName); + } + + // Start listening for events. + session.Source.Process(); + } + } + + /// + /// Creates perfView.xml file that represents the directory size of 'directoryPath' and places + /// it in 'outputFileName'. + /// + /// The directory whose size is being computed (default to the current dir) + /// The output fileName (defaults to NAME.dirSize.PerfView.xml.zip) where NAME is + /// the simple name of the directory. + public void DirectorySize(string directoryPath = null, string outputFileName = null) + { + if (string.IsNullOrWhiteSpace(directoryPath)) + { + //// TODO: Have yet to find CoreCLR equivalent to Dispatcher. Will probably strip all of this GUI stuff out, anyway. + // Hop to the GUI thread and get the arguments from a dialog box and then call myself again. + ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate() + ////{ + var dialog = new FileInputAndOutput(delegate (string dirPath, string outFileName) + { + App.CommandLineArgs.CommandAndArgs = new string[] { "DirectorySize", dirPath, outFileName }; + App.CommandLineArgs.DoCommand = App.CommandProcessor.UserCommand; + GuiApp.MainWindow.ExecuteCommand("Computing directory size", App.CommandLineArgs.DoCommand); + }); + //// dialog.SelectingDirectories = true; + //// dialog.OutputExtension = ".dirSize.perfView.xml.zip"; + //// dialog.CurrentDirectory = GuiApp.MainWindow.CurrentDirectory.FilePath; + //// dialog.HelpAnchor = "DirectorySize"; + //// dialog.Instructions = "Please enter the name of the directory on which to do a disk size analysis " + + //// "and optionally the output file where place the resulting data."; + //// dialog.Title = "Disk Size Analysis"; + //// dialog.Show(); + ////}); + return; + } + if (string.IsNullOrWhiteSpace(outputFileName)) + { + if (char.IsLetterOrDigit(directoryPath[0])) + outputFileName = Path.GetFileNameWithoutExtension(Path.GetFullPath(directoryPath)) + ".dirSize.PerfView.xml.zip"; + else + outputFileName = "dirSize.PerfView.xml.zip"; + } + + LogFile.WriteLine("[Computing the file size of the directory {0}...]", directoryPath); + // Open and close the output file to make sure we can write to it, that way we fail early if we can't + ////File.OpenWrite(outputFileName).Close(); + File.OpenWrite(outputFileName).Dispose(); + File.Delete(outputFileName); + + FileSizeStackSource fileSizeStackSource = new FileSizeStackSource(directoryPath, LogFile); + XmlStackSourceWriter.WriteStackViewAsZippedXml(fileSizeStackSource, outputFileName); + LogFile.WriteLine("[Wrote file {0}]", outputFileName); + + if (!App.CommandLineArgs.NoGui && App.CommandLineArgs.LogFile == null) + { + if (outputFileName.EndsWith(".perfView.xml.zip", StringComparison.OrdinalIgnoreCase) && File.Exists(outputFileName)) + GuiApp.MainWindow.OpenNext(outputFileName); + } + } + + /// + /// Creates a .perfView.xml.zip that represents the profiling data from a perf script output dump. Adding a + /// --threadtime tag enables blocked time investigations on the perf script dump. + /// + /// The path to the perf script dump, right now, either a file with suffix perf.data.dump, + /// .trace.zip or .data.txt will be accepted. + /// Option to turn on thread time on the perf script dump. + public void PerfScript(string path, string threadTime = null) + { + bool doThreadTime = threadTime != null && threadTime == "--threadtime"; + + var perfScriptStackSource = new ParallelLinuxPerfScriptStackSource(path, doThreadTime); + string outputFileName = Path.ChangeExtension(path, ".perfView.xml.zip"); + + XmlStackSourceWriter.WriteStackViewAsZippedXml(perfScriptStackSource, outputFileName); + + if (!App.CommandLineArgs.NoGui && App.CommandLineArgs.LogFile == null) + { + if (outputFileName.EndsWith(".perfView.xml.zip", StringComparison.OrdinalIgnoreCase) && File.Exists(outputFileName)) + { + GuiApp.MainWindow.OpenNext(outputFileName); + } + } + } + + /// + /// Creates a stack source out of the textFileName where each line is a frame (which is directly rooted) + /// and every such line has a metric of 1. Thus it allows you to form histograms for these lines nicely + /// in perfView. + /// + /// + public void TextHistogram(string textFilePath) + { + LogFile.WriteLine("[Opening {0} as a Histogram]"); + var stackSource = new PerfView.OtherSources.TextStackSource(); + stackSource.Read(textFilePath); + var stacks = new Stacks(stackSource); + OpenStackViewer(stacks); + } + + /// + /// Reads a project N metaData.csv file (From ILC.exe) and converts it to a .GCDump file (a heap) + /// + public void ProjectNMetaData(string projectNMetadataDataCsv) + { + var metaDataReader = new ProjectNMetaDataLogReader(); + var memoryGraph = metaDataReader.Read(projectNMetadataDataCsv); + + var outputName = Path.ChangeExtension(projectNMetadataDataCsv, ".gcdump"); + GCHeapDump.WriteMemoryGraph(memoryGraph, outputName); + LogFile.WriteLine("[Writing the GCDump to {0}]", outputName); + } + + /// + /// This is used to visualize the Project N ILTransformed\*.reflectionlog.csv file so it can viewed + /// in PerfVIew. + /// + /// The name of the file to view + public void ReflectionUse(string reflectionLogFile) + { + LogFile.WriteLine("[Opening {0} as a Histogram]"); + var stackSource = new PerfView.OtherSources.TextStackSource(); + var lineNum = 0; + + stackSource.StackForLine = delegate (StackSourceInterner interner, string line) + { + lineNum++; + StackSourceCallStackIndex ret = StackSourceCallStackIndex.Invalid; + Match m = Regex.Match(line, "^(.*?),(.*?),\"(.*)\""); + if (m.Success) + { + string reflectionType = m.Groups[1].Value; + string entityKind = m.Groups[2].Value; + string symbol = m.Groups[3].Value; + + if (entityKind == "Method" || entityKind == "Field") + symbol = Regex.Replace(symbol, "^.*?[^,] +", ""); + ret = interner.CallStackIntern(interner.FrameIntern("REFLECTION " + reflectionType), ret); + ret = interner.CallStackIntern(interner.FrameIntern("KIND " + entityKind), ret); + ret = interner.CallStackIntern(interner.FrameIntern("SYM " + symbol), ret); + } + else + LogFile.WriteLine("Warning {0}: Could not parse {1}", lineNum, line); + + return ret; + }; + stackSource.Read(reflectionLogFile); + var stacks = new Stacks(stackSource); + OpenStackViewer(stacks); + } + + /// + /// ImageSize generates a XML report (by default inputExeName.imageSize.xml) that + /// breaks down the executable file 'inputExeName' by the symbols in it (fetched from + /// its PDB. The PDB needs to be locatable (either on the _NT_SYMBOL_PATH, or next to + /// the file, or in its original build location). This report can be viewed with + /// PerfView (it looks like a GC heap). + /// + /// The name of the EXE (or DLL) that you wish to analyze. If blank it will prompt for one. + /// The name of the report file. Defaults to the inputExeName + /// with a .imageSize.xml suffix. + public void ImageSize(string inputExeName = null, string outputFileName = null) + { + if (outputFileName == null) + outputFileName = Path.ChangeExtension(inputExeName, ".imageSize.xml"); + + if (string.IsNullOrWhiteSpace(inputExeName)) + { + if (App.CommandLineArgs.NoGui) + throw new Exception("Must specify an input EXE name"); + //// TODO: Have yet to find CoreCLR equivalent to Dispatcher. Will probably strip all of this GUI stuff out, anyway. + // Hop to the GUI thread and get the arguments from a dialog box and then call myself again. + ////GuiApp.MainWindow.Dispatcher.BeginInvoke((Action)delegate() + ////{ + var dialog = new FileInputAndOutput(delegate (string inExeName, string outFileName) + { + App.CommandLineArgs.CommandAndArgs = new string[] { "ImageSize", inExeName, outFileName }; + App.CommandLineArgs.DoCommand = App.CommandProcessor.UserCommand; + GuiApp.MainWindow.ExecuteCommand("Computing directory size", App.CommandLineArgs.DoCommand); + }); + //// dialog.InputExtentions = new string[] { ".dll", ".exe" }; + //// dialog.OutputExtension = ".imageSize.xml"; + //// dialog.CurrentDirectory = GuiApp.MainWindow.CurrentDirectory.FilePath; + //// dialog.HelpAnchor = "ImageSize"; + //// dialog.Instructions = "Please enter the name of the EXE or DLL on which you wish to do a size analysis " + + //// "and optionally the output file where place the resulting data."; + //// dialog.Title = "Image Size Analysis"; + //// dialog.Show(); + ////}); + return; + } + + string pdbScopeExe = Path.Combine(ExtensionsDirectory, "PdbScope.exe"); + if (!File.Exists(pdbScopeExe)) + throw new Exception(@"The PerfViewExtensions\PdbScope.exe file does not exit. ImageSize report not possible"); + + // Currently we need to find the DLL again to unmangle names completely, and this DLL name is emedded in the output file. + // Remove relative paths and try to make it universal so that you stand the best chance of finding this DLL. + inputExeName = App.MakeUniversalIfPossible(Path.GetFullPath(inputExeName)); + + string commandLine = string.Format("{0} /x /f /s {1}", pdbScopeExe, Command.Quote(inputExeName)); + LogFile.WriteLine("Running command {0}", commandLine); + + FileUtilities.ForceDelete(outputFileName); + Command.Run(commandLine, new CommandOptions().AddOutputStream(LogFile).AddTimeout(3600000)); + + if (!File.Exists(outputFileName) || File.GetLastWriteTimeUtc(outputFileName) <= File.GetLastWriteTimeUtc(inputExeName)) + { + // TODO can remove after pdbScope gets a proper outputFileName parameter + string pdbScopeOutputFile = Path.ChangeExtension(Path.GetFullPath(Path.GetFileName(inputExeName)), ".pdb.xml"); + if (!File.Exists(pdbScopeOutputFile)) + throw new Exception("Error PdbScope did not create a file " + pdbScopeOutputFile); + LogFile.WriteLine("Moving {0} to {1}", pdbScopeOutputFile, outputFileName); + FileUtilities.ForceMove(pdbScopeOutputFile, outputFileName); + } + + // TODO This is pretty ugly. If the main window is working we can't launch it. + if (!App.CommandLineArgs.NoGui && App.CommandLineArgs.LogFile == null) + { + if (outputFileName.EndsWith(".imageSize.xml", StringComparison.OrdinalIgnoreCase) && File.Exists(outputFileName)) + GuiApp.MainWindow.OpenNext(outputFileName); + } + } + + /// + /// Dumps the PDB signature associated with pdb 'pdbName' + /// + public void PdbSignature(string pdbFileName) + { + var reader = new SymbolReader(LogFile); + var module = reader.OpenSymbolFile(pdbFileName); + LogFile.WriteLine("[{0} has Signature {1}]", pdbFileName, module.PdbGuid); + OpenLog(); + } + + /// + /// Prints a report whether exeFileName is a ready-to-run image. + /// + public void IsReadyToRun(string exeFileName) + { + using (var pefile = new PEFile.PEFile(exeFileName)) + { + var isReadyToRun = pefile.IsManagedReadyToRun; + LogFile.WriteLine("[{0} isReadyToRun = {1}]", exeFileName, isReadyToRun); + OpenLog(); + } + } + + class CodeSymbolListener + { + public CodeSymbolListener(TraceEventDispatcher source, string targetSymbolCachePath) + { + m_symbolFiles = new Dictionary(); + m_targetSymbolCachePath = targetSymbolCachePath; + + source.Clr.AddCallbackForEvents(OnModuleLoad); + source.Clr.AddCallbackForEvents(OnCodeSymbols); + } + + #region private + private void OnModuleLoad(ModuleLoadUnloadTraceData data) + { + Put(data.ProcessID, data.ModuleID, new CodeSymbolState(data, m_targetSymbolCachePath)); + } + + private void OnCodeSymbols(CodeSymbolsTraceData data) + { + CodeSymbolState state = Get(data.ProcessID, data.ModuleId); + if (state != null) + state.OnCodeSymbols(data); + } + + class CodeSymbolState + { + string m_pdbIndexPath; + MemoryStream m_stream; + private ModuleLoadUnloadTraceData m_moduleData; + string m_symbolCachePath; + + public CodeSymbolState(ModuleLoadUnloadTraceData data, string path) + { + // See Symbols/Symbolreader.cs for details on making Symbols server paths. Here is the jist + // pdbIndexPath = pdbSimpleName + @"\" + pdbIndexGuid.ToString("N") + pdbIndexAge.ToString() + @"\" + pdbSimpleName; + + // TODO COMPLETE + m_moduleData = data; + m_stream = new MemoryStream(); + m_symbolCachePath = path; + + string pdbSimpleName = data.ModuleILFileName.Replace(".exe", ".pdb").Replace(".dll", ".pdb"); + if (!pdbSimpleName.EndsWith(".pdb")) + { + pdbSimpleName += ".pdb"; + } + m_pdbIndexPath = pdbSimpleName + @"\" + + data.ManagedPdbSignature.ToString("N") + data.ManagedPdbAge.ToString() + @"\" + pdbSimpleName; + } + + public void OnCodeSymbols(CodeSymbolsTraceData data) + { + // TODO read in a chunk if it is out of order fail, when complete close the file. + //using (StreamWriter writer = File.WriteAllBytes(m_pdbIndexPath, m_bytes)) + // ((MemoryGraph)graph).DumpNormalized(writer); + + //Assumes the length of the stream does not exceed 2^32 + m_stream.Write(data.Chunk, 0, data.ChunkLength); + if ((data.ChunkNumber + 1) == data.TotalChunks) + { + byte[] bytes = new byte[m_stream.Length]; + m_stream.Seek(0, SeekOrigin.Begin); + m_stream.Read(bytes, 0, (int)m_stream.Length); + string fullPath = m_symbolCachePath + @"\" + m_pdbIndexPath; + if (!Directory.Exists(Path.GetDirectoryName(fullPath))) + { + Directory.CreateDirectory(Path.GetDirectoryName(fullPath)); + } + File.WriteAllBytes(fullPath, bytes); + } + } + } + + // hides details of how process/module IDs are looked up. + CodeSymbolState Get(int processID, long moduleID) + { + CodeSymbolState ret = null; + m_symbolFiles.TryGetValue((((long)processID) << 48) + moduleID, out ret); + return ret; + } + void Put(int processID, long moduleID, CodeSymbolState value) + { + m_symbolFiles[(((long)processID) << 48) + moduleID] = value; + } + + // Indexed by key; + Dictionary m_symbolFiles; + string m_targetSymbolCachePath; + #endregion + } + + /// + /// Listen for the CLR CodeSymbols events and when you find them write them + /// to the directory targetSymbolCachePath using standard symbol server conventions + /// (Name.Pdb\GUID-AGE\Name.Pdb) + /// + /// Usage + /// + /// + public void GetDynamicAssemblySymbols(string targetSymbolCachePath) + { + var sessionName = "PerfViewSymbolListener"; + LogFile.WriteLine("Creating Session {0}", sessionName); + using (var session = new TraceEventSession(sessionName)) + { + var codeSymbolListener = new CodeSymbolListener(session.Source, targetSymbolCachePath); + LogFile.WriteLine("Enabling CLR Loader and CodeSymbols events"); + session.EnableProvider(ClrTraceEventParser.ProviderGuid, TraceEventLevel.Verbose, + (long)(ClrTraceEventParser.Keywords.Codesymbols | ClrTraceEventParser.Keywords.Loader)); + session.Source.Process(); + } + } + + public void NGenImageSize(string ngenImagePath) + { + SymbolReader symReader = App.GetSymbolReader(); + MemoryGraph imageGraph = ImageFileMemoryGraph.Create(ngenImagePath, symReader); + + var fileName = Path.GetFileNameWithoutExtension(ngenImagePath); + var outputFileName = fileName + ".gcdump"; + GCHeapDump.WriteMemoryGraph(imageGraph, outputFileName); + LogFile.WriteLine("[Wrote file " + outputFileName + "]"); + + if (!App.CommandLineArgs.NoGui && App.CommandLineArgs.LogFile == null) + GuiApp.MainWindow.OpenNext(outputFileName); + } + + /// + /// Computes the GCStats HTML report for etlFile. + /// + public void GCStats(string etlFile) + { + ETLPerfViewData.UnZipIfNecessary(ref etlFile, LogFile); + + var source = TraceEventDispatcher.GetDispatcherFromFileName(etlFile); + var gcStats = Stats.GCProcess.Collect(source, 1); // TODO we don't know that it is 1 msec sampling. + + var outputFileName = Path.ChangeExtension(etlFile, ".gcStats.html"); + using (var output = File.CreateText(outputFileName)) + { + LogFile.WriteLine("Wrote GCStats to {0}", outputFileName); + gcStats.ToHtml(output, outputFileName, "GCStats", null); + foreach (Stats.GCProcess proc in gcStats) + { + if (proc.Interesting) + { + var csvName = Path.ChangeExtension(etlFile, ".gcStats." + proc.ProcessID.ToString() + ".csv"); + LogFile.WriteLine(" Wrote CsvFile {0}", csvName); + proc.ToCsv(csvName); + } + } + } + if (!App.CommandLineArgs.NoGui) + OpenHtmlReport(outputFileName, "GCStats report"); + } + + /// + /// Outputs some detailed Server GC analysis to a file. + /// + public void ServerGCReport(string etlFile) + { + if (PerfView.AppLog.InternalUser) + { + ETLPerfViewData.UnZipIfNecessary(ref etlFile, LogFile); + TraceLog source = TraceLog.OpenOrConvert(etlFile); + + var gcStats = Stats.GCProcess.Collect(source.Events.GetSource(), 1, null, null, true, source); + + var outputFileName = Path.ChangeExtension(etlFile, ".gcStats.html"); + using (var output = File.CreateText(outputFileName)) + { + LogFile.WriteLine("Wrote GCStats to {0}", outputFileName); + gcStats.ToHtml(output, outputFileName, "GCStats", null); + } + if (!App.CommandLineArgs.NoGui) + OpenHtmlReport(outputFileName, "GCStats report"); + } + } + + /// + /// Computes the JITStats HTML report for etlFile. + /// + public void JITStats(string etlFile) + { + ETLPerfViewData.UnZipIfNecessary(ref etlFile, LogFile); + + var source = TraceEventDispatcher.GetDispatcherFromFileName(etlFile); + var jitStats = Stats.JitProcess.Collect(source); + + var outputFileName = Path.ChangeExtension(etlFile, ".jitStats.html"); + using (var output = File.CreateText(outputFileName)) + { + LogFile.WriteLine("Wrote JITStats to {0}", outputFileName); + jitStats.ToHtml(output, outputFileName, "JitStats", null); + foreach (Stats.JitProcess proc in jitStats) + { + if (proc.Interesting) + { + var csvName = Path.ChangeExtension(etlFile, ".jitStats." + proc.ProcessID.ToString() + ".csv"); + LogFile.WriteLine(" Wrote CsvFile {0}", csvName); + proc.ToCsv(csvName); + } + } + } + if (!App.CommandLineArgs.NoGui) + OpenHtmlReport(outputFileName, "JITStats report"); + } + + /// + /// Given a PDB file, dump the source server information in the PDB file. + /// + //public void DumpSourceServerStream(string pdbFile) + //{ + // SymbolReader reader = new SymbolReader(LogFile); + // SymbolModule module = reader.OpenSymbolFile(pdbFile); + + // string srcsrvData = module.GetSrcSrvStream(); + // if (srcsrvData == null) + // LogFile.WriteLine("[No source server information on {0}]", pdbFile); + // else + // { + // LogFile.WriteLine("Source Server Data for {0}", pdbFile); + // LogFile.Write(srcsrvData); + // LogFile.WriteLine(); + // LogFile.WriteLine("[Source Server Data Dumped into log for {0}]", pdbFile); + // } + //} + +#if CAP + /// + /// Reads the JITStats report for the CAP program (XML format) and produces a list of hot methods as txt for a given process. + /// + public void CapFormatJITStats(string jitReportFileName, string processName, string discardNamespace = "false") + { + ClrCap.JitCapAnalysis report = ClrCap.JitCapAnalysis.ReadReport(jitReportFileName); + report.FormatForTrace(processName, StripFileExt(jitReportFileName) + ".spmi.txt", Boolean.Parse(discardNamespace)); + } + + /// + /// Creates the JITStats report for the CAP program (XML format) + /// + public void CapJITStats(string etlFile, string methodCount = "20") + { + ETLDataFile etlDataFile = OpenETLFile(etlFile); + JitCapCollector jitCollector = new JitCapCollector(etlDataFile); + + var jitStats = jitCollector.Collect(); + ClrCap.CAP.GenerateCAPReport(jitStats, jitCollector.Report, Int32.Parse(methodCount)); + var outputFileName = StripFileExt(etlFile) + "jitstats.xml"; + jitCollector.Report.WriteToFileXML(outputFileName); + LogFile.WriteLine("[Output Written to {0}]", outputFileName); + } + + /// + /// Creates the GCStats report for the CAP program (XML format) + /// + public void CapGCStats(string etlFile) + { + string savedEtlFile = etlFile; + ETLPerfViewData.UnZipIfNecessary(ref etlFile, LogFile); + ETWTraceEventSource source = new ETWTraceEventSource(etlFile, TraceEventSourceType.MergeAll); + + GcCapCollector gcCollector = new GcCapCollector(source); + var gcStats = gcCollector.Collect(etlFile, source); + ClrCap.CAP.GenerateCAPReport(gcStats, gcCollector.Report); + + var outputFileName = StripFileExt(savedEtlFile) + ".xml"; + gcCollector.Report.WriteToFileXML(outputFileName); + LogFile.WriteLine("[Output Written to {0}]", outputFileName); + if (!App.CommandLineArgs.NoGui) + { + LogFile.WriteLine("[Opening XML file in Browser]"); + Command.Run(Command.Quote(outputFileName), new CommandOptions().AddStart().AddTimeout(CommandOptions.Infinite)); + } + } +#endif + +#if CROSS_GENERATION_LIVENESS + public void CollectCrossGenerationLiveness(string processId, string generationToTrigger, string promotedBytes, string dumpFilePath) + { + // Convert the process id. + int pid = Convert.ToInt32(processId); + + // Convert the generation to trigger. + int gen = Convert.ToInt32(generationToTrigger); + + // Convert promoted bytes threshold. + ulong promotedBytesThreshold = Convert.ToUInt64(promotedBytes); + + // Validate the input file name. + string fileName = Path.GetFileName(dumpFilePath); + if (string.IsNullOrEmpty(fileName) || !dumpFilePath.EndsWith(".gcdump", StringComparison.OrdinalIgnoreCase)) + { + throw new Exception("Invalid GCDump file path. The specified path must contain a file name that ends in .gcdump."); + } + + HeapDumper.DumpGCHeapForCrossGenerationLiveness(pid, gen, promotedBytesThreshold, dumpFilePath, LogFile); + } +#endif + + /// + /// Gets the ETW keywords (bitset definitions of what can be turned on in the provider) for a given provider. + /// Currently does not work for EventSources + /// + /// The name or GUID of the provider to look up + public void ListProviderKeywords(string providerNameOrGuid) + { + Guid providerGuid; + if (Regex.IsMatch(providerNameOrGuid, "........-....-....-....-............")) + { + if (!Guid.TryParse(providerNameOrGuid, out providerGuid)) + throw new Exception("Could not parse Guid '" + providerNameOrGuid + "'"); + } + else if (providerNameOrGuid.StartsWith("*")) + providerGuid = TraceEventProviders.GetEventSourceGuidFromName(providerNameOrGuid.Substring(1)); + else + { + providerGuid = TraceEventProviders.GetProviderGuidByName(providerNameOrGuid); + if (providerGuid == Guid.Empty) + throw new Exception("Could not find provider name '" + providerNameOrGuid + "'"); + } + + // TODO support eventSources + LogFile.WriteLine("Keywords for the Provider {0} ({1})", providerNameOrGuid, providerGuid); + List keywords = TraceEventProviders.GetProviderKeywords(providerGuid); + foreach (ProviderDataItem keyword in keywords) + LogFile.WriteLine(" {0,-30} {1,16:x} {2}", keyword.Name, keyword.Value, keyword.Description); + OpenLog(); + } + + /// + /// returns a list of providers that exist (can be enabled) in a particular process. Currently EventSouces + /// are returned as GUIDs. + /// + /// The process name (exe without extension) or process ID of the process of interest. + public void ListProvidersInProcess(string processNameOrId) + { + var processID = HeapDumper.GetProcessID(processNameOrId); + if (processID < 0) + throw new Exception("Could not find a process with a name or ID of '" + processNameOrId + "'"); + + LogFile.WriteLine("Providers that can be enabled in process {0} ({1})", processNameOrId, processID); + LogFile.WriteLine("EventSources are shown as GUIDs, GUIDS that are likely to be EventSources are marked with *."); + var providersInProcess = TraceEventProviders.GetRegisteredProvidersInProcess(processID); + SortAndPrintProviders(providersInProcess, true); + } + + /// + /// returns a list of all providers that have published their meta-data to the Operating system. This does NOT + /// include EventSources and is a long list. Some of these are not actually active and thus will have no effect + /// if they are enabled (see ListProvidersInProcess). + /// + public void ListPublishedProviders() + { + var publishedProviders = new List(TraceEventProviders.GetPublishedProviders()); + LogFile.WriteLine("All Providers Published to the Operating System"); + SortAndPrintProviders(publishedProviders); + } + + private void SortAndPrintProviders(List providers, bool markEventSources = false) + { + // Sort them by name + providers.Sort(delegate (Guid x, Guid y) + { + return string.Compare(TraceEventProviders.GetProviderName(x), TraceEventProviders.GetProviderName(y), StringComparison.OrdinalIgnoreCase); + }); + + string mark = ""; + foreach (var providerGuid in providers) + { + if (markEventSources) + mark = TraceEventProviders.MaybeAnEventSource(providerGuid) ? "*" : " "; + LogFile.WriteLine(" {0}{1,-39} {2}", mark, TraceEventProviders.GetProviderName(providerGuid), providerGuid); + } + OpenLog(); + } + +#if ENUMERATE_SERIALIZED_EXCEPTIONS_ENABLED // TODO turn on when CLRMD has been updated. + /// + /// PrintSerializedExceptionFromProcessDump + /// + /// inputDumpFile + public void PrintSerializedExceptionFromProcessDump(string inputDumpFile) + { + TextWriter log = LogFile; + if (!App.IsElevated) + throw new ApplicationException("Must be Administrator (elevated)."); + + var arch = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); + var trueArch = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"); + if (trueArch != null) + { + // TODO FIX NOW. Find a way of determing which architecture a dump is + try + { + log.WriteLine("********** TRYING TO OPEN THE DUMP AS 64 BIT ************"); + PrintSerializedExceptionFromProcessDumpThroughHeapDump(inputDumpFile, log, trueArch); + return; // Yeah! success the first time + } + catch (Exception e) + { + // It might have failed because this was a 32 bit dump, if so try again. + if (e is ApplicationException) + { + log.WriteLine("********** TRYING TO OPEN THE DUMP AS 32 BIT ************"); + PrintSerializedExceptionFromProcessDumpThroughHeapDump(inputDumpFile, log, arch); + return; + } + throw; + } + } + PrintSerializedExceptionFromProcessDumpThroughHeapDump(inputDumpFile, log, arch); + + } + + private void PrintSerializedExceptionFromProcessDumpThroughHeapDump(string inputDumpFile, TextWriter log, string arch) + { + var heapDumpExe = Path.Combine(SupportFiles.SupportFileDir, arch + @"\HeapDump.exe"); + var options = new CommandOptions().AddNoThrow().AddTimeout(CommandOptions.Infinite); + options.AddOutputStream(LogFile); + + options.AddEnvironmentVariable("_NT_SYMBOL_PATH", App.SymbolPath); + log.WriteLine("set _NT_SYMBOL_PATH={0}", App.SymbolPath); + + var commandLine = string.Format("\"{0}\" {1} \"{2}\"", heapDumpExe, "/dumpSerializedException:", inputDumpFile); + log.WriteLine("Exec: {0}", commandLine); + var cmd = Command.Run(commandLine, options); + if (cmd.ExitCode != 0) + { + throw new ApplicationException("HeapDump failed with exit code " + cmd.ExitCode); + } + } +#endif + +#if false + public void Test() + { + LogFile.WriteLine("Starting Listener thread."); + using (var source = new ETWTraceEventSource("AppInsightsTestApp.etl")) + { + source.Dynamic.AddCallbackForProviderEvents( + delegate(string providerName, string eventName) + { + Trace.WriteLine("Checking " + providerName + " " + eventName); + if (providerName.Contains("Insight") || providerName.Contains("Windows-ASPNET")) + return EventFilterResponse.AcceptEvent; + return EventFilterResponse.RejectProvider; + }, + delegate(TraceEvent data) + { + Trace.WriteLine("Testing " + data.ToString()); + } + ); + source.Process(); + } + Trace.WriteLine("Done."); + } +#endif + + #region private + /// + /// Strips the file extension for files and if extension is .etl.zip removes both. + /// + private String StripFileExt(String inputFile) + { + string outputFileName = Path.ChangeExtension(inputFile, null); + if (Path.GetExtension(outputFileName).CompareTo(".etl") == 0) + { + // In case extension was .etl.zip, remove both + outputFileName = Path.ChangeExtension(outputFileName, null); + } + return outputFileName; + } + #endregion +#endif + /// + /// Gets the TraceEvents list of events from etlFile, applying a process filter if the /process argument is given. + /// + private TraceEvents GetTraceEventsWithProcessFilter(ETLDataFile etlFile) + { + // If the user asked to focus on one process, do so. + TraceEvents events; + ////if (CommandLineArgs.Process != null) + ////{ + //// var process = etlFile.Processes.LastProcessWithName(CommandLineArgs.Process); + //// if (process == null) + //// throw new Exception("Could not find process named " + CommandLineArgs.Process); + //// events = process.EventsInProcess; + ////} + ////else + events = etlFile.TraceLog.Events; // All events in the process. + return events; + } + + /// + /// Save the CPU stacks for an ETL file into a perfView.xml.zip file. + /// + /// The ETL file to save. + /// The process to save. If null, save all processes. + /// The filter to apply to the stacks. If null, apply no filter. + /// The name of the file to output data to. If null, use the default. + private static void SaveCPUStacksForProcess(ETLDataFile etlFile, TraceProcess process = null, FilterParams filter = null, string outputName = null) + { + // Focus on a particular process if the user asked for it via command line args. + if (process != null) + { + etlFile.SetFilterProcess(process); + } + + if (filter == null) + filter = new FilterParams(); + + var stacks = etlFile.CPUStacks(); + stacks.Filter = filter; + stacks.LookupWarmSymbols(10); // Look up symbols (even on the symbol server) for modules with more than 50 inclusive samples + ////stacks.GuiState.Notes = string.Format("Created by SaveCPUStacks from {0} on {1}", etlFile.FilePath, DateTime.Now); + + // Derive the output file name from the input file name. + ////var stackSourceFileName = PerfViewFile.ChangeExtension(etlFile.FilePath, ".perfView.xml.zip");\ + string dirName = Path.GetDirectoryName(etlFile.FilePath); + string fileName = Path.GetFileNameWithoutExtension(etlFile.FilePath); + string newExtension = ".perfView.xml.zip"; + var stackSourceFileName = Path.Combine(dirName, fileName + newExtension); + stacks.SaveAsXml(outputName ?? stackSourceFileName); + ////LogFile.WriteLine("[Saved {0} to {1}]", etlFile.FilePath, stackSourceFileName); + } +#if false + #region private + /// + /// The configuration data for an ETL file dumped by SaveCPUStacksForProcess. + /// + private class ScenarioConfig + { + /// + /// The file to read in. + /// + public readonly string InputFile; + + /// + /// The name of the process of interest for the scenario. + /// + /// If null, use heuristic detection. + /// + public readonly string ProcessFilter; + /// + /// The relative time to start taking samples from the ETL file. + /// + /// Set to double.NegativeInfinity to take samples from the beginning. + /// + public readonly double StartTime; + /// + /// The time to stop taking samples from the ETL file. + /// + /// Set to double.PositiveInfinity to take samples until the end. + /// + public readonly double EndTime; + + + public ScenarioConfig(string inputFile, string processFilter, double startTime, double endTime) + { + ProcessFilter = processFilter; + StartTime = startTime; + EndTime = endTime; + InputFile = inputFile; + } + + public ScenarioConfig(string inputFile) : this(inputFile, null, double.NegativeInfinity, double.PositiveInfinity) { } + } + + /// + /// Parse a scenario config XML file, creating a mapping of filenames to file configurations. + /// + /// The XmlReader to read config data from. + /// The XmlWriter to write a corresponding scenario-set definition to. + /// The log to write progress to. + /// The base directory for relative path lookups. + /// A Dictionary mapping output filenames to ScenarioConfig objects holding configuration information. + /// + /// Example config file: + /// + /// + /// + /// + /// + /// Attributes on Scenarios element: + /// - files (required) + /// The wildcard file pattern of ETL/ETL.ZIP files to include. + /// - name (optional) + /// A pattern by which to name these scenarios. Passed through to scenario-set definition. + /// - process (optional) + /// The name of the process of interest for this trace. If unset, the process of interest will be auto detected + /// - start, end (optional) + /// The start and end times of the region of interest in the trace. + /// - output (optional) + /// Specify name of output perfview.xml.zip. This is needed to allow outputting different scenarios with the same etl file name to different file. + /// + private Dictionary DeserializeScenarioConfig(XmlReader reader, XmlWriter output, TextWriter log, string baseDir) + { + var config = new Dictionary(); + + if (!reader.ReadToDescendant("ScenarioConfig")) + throw new Exception("The file does not have a Scenario element"); + + if (!reader.ReadToDescendant("Scenarios")) + throw new Exception("No scenarios specified"); + + output.WriteStartDocument(); + output.WriteStartElement("ScenarioSet"); + + var defaultRegex = new Regex(@"(.*)", RegexOptions.IgnoreCase); + + do + { + string filePattern = reader["files"]; + string namePattern = reader["name"]; + string processPattern = reader["process"]; + string startTimeText = reader["start"]; + string endTimeText = reader["end"]; + string outputPattern = reader["output"]; + + if (filePattern == null) + throw new Exception("File pattern is required."); + + if (!filePattern.EndsWith(".etl") && !filePattern.EndsWith(".etl.zip")) + throw new Exception("Files must be ETL files."); + + string replacePattern = Regex.Escape(filePattern) + .Replace(@"\*", @"([^\\]*)") + .Replace(@"\?", @"[^\\]"); + + double startTime = + (startTimeText != null) ? + double.Parse(startTimeText) : + double.NegativeInfinity; + + double endTime = + (endTimeText != null) ? + double.Parse(endTimeText) : + double.PositiveInfinity; + + string pattern = Path.GetFileName(filePattern); + string dir = Path.GetDirectoryName(filePattern); + + // Tack on the base directory if we're not already an absolute path. + if (!Path.IsPathRooted(dir)) + dir = Path.Combine(baseDir, dir); + + var replaceRegex = new Regex(replacePattern, RegexOptions.IgnoreCase); + + foreach (string file in Directory.GetFiles(dir, pattern)) + { + string process = null; + string outputName = null; + if (processPattern != null) + { + var match = replaceRegex.Match(file); + + // We won't have a group to match if there were no wildcards in the pattern. + if (match.Groups.Count < 1) + match = defaultRegex.Match(PerfViewFile.GetFileNameWithoutExtension(file)); + + process = match.Result(processPattern); + } + + if (outputPattern != null) + { + var match = replaceRegex.Match(file); + + // We won't have a group to match if there were no wildcards in the pattern. + if (match.Groups.Count < 1) + match = defaultRegex.Match(PerfViewFile.GetFileNameWithoutExtension(file)); + + outputName = Path.Combine(Path.GetDirectoryName(file), match.Result(outputPattern)); + } + else + { + outputName = PerfViewFile.ChangeExtension(file, ""); + } + + config[outputName + ".perfView.xml.zip"] = new ScenarioConfig(file, process, startTime, endTime); + + log.WriteLine("Added {0}", file); + } + + string outputWildcard; + if (outputPattern != null) + outputWildcard = Regex.Replace(outputPattern, @"\$([0-9]+|[&`'+_$])", m => (m.Value == "$$" ? "$" : "*")); + else + outputWildcard = PerfViewFile.ChangeExtension(filePattern, ""); + + // Dump out scenario set data from the config input. + output.WriteStartElement("Scenarios"); + output.WriteAttributeString("files", outputWildcard + ".perfView.xml.zip"); + if (namePattern != null) + { + output.WriteAttributeString("namePattern", namePattern); + } + output.WriteEndElement(); + } + while (reader.ReadToNextSibling("Scenarios")); + + output.WriteEndElement(); + output.WriteEndDocument(); + + return config; + } + + /// + /// Heuristically find the process of interest for a given ETL trace. + /// + /// The ETL file to search. + /// The "most interesting" process in the trace. + private TraceProcess FindProcessOfInterest(ETLDataFile etlFile) + { + // THE HEURISTIC: + // - First Win8 Store app to start. + // *else* + // - First app to start that runs for more than half the trace length. + // *else* + // - First app to start after the trace starts. + + double threshold = etlFile.TraceLog.SessionDuration.TotalMilliseconds * 0.5; + + // Find first Win8 store app if available. + var isWin8StoreApp = etlFile.Processes.FirstOrDefault(IsStoreApp); + + if (isWin8StoreApp != null) + { + LogFile.WriteLine("Found Win 8 store app {0}", isWin8StoreApp.Name); + return isWin8StoreApp; + } + + + // Find processes that started after tracing began. + // This will exclude system processes, services, and many test harnesses. + var startedInTrace = etlFile.Processes.Where(x => x.StartTimeRelativeMsec > 0.0); + + var retval = startedInTrace.FirstOrDefault( + x => x.EndTimeRelativeMsec - x.StartTimeRelativeMsec >= threshold + ); + + if (retval != null) + { + LogFile.WriteLine("Found over-threshold app {0}", retval.Name); + } + else + { + retval = null; + LogFile.WriteLine("Process of interest could not be determined automatically."); + } + return retval; + } + + private static bool IsStoreApp(TraceProcess proc) + { + if (proc.StartTimeRelativeMsec == 0.0) return false; + + var startEvent = proc.EventsInProcess.ByEventType().First(); + + return (startEvent.Flags & ProcessFlags.PackageFullName) != 0; + } + #endregion +#endif + } +} + +///TODO FIX NOW decide where to put these. +public static class TraceEventStackSourceExtensions +{ + public static StackSource CPUStacks(this TraceLog eventLog, TraceProcess process = null, bool showUnknownAddresses = false, Predicate predicate = null) + { + TraceEvents events; + if (process == null) + events = eventLog.Events.Filter((x) => ((predicate == null) || predicate(x)) && x is SampledProfileTraceData && x.ProcessID != 0); + else + events = process.EventsInProcess.Filter((x) => ((predicate == null) || predicate(x)) && x is SampledProfileTraceData); + + var traceStackSource = new TraceEventStackSource(events); + traceStackSource.ShowUnknownAddresses = showUnknownAddresses; + // We clone the samples so that we don't have to go back to the ETL file from here on. + return CopyStackSource.Clone(traceStackSource); + } +#if false + public static MutableTraceEventStackSource ThreadTimeStacks(this TraceLog eventLog, TraceProcess process = null, bool showUnknownAddresses = false) + { + var stackSource = new MutableTraceEventStackSource(eventLog); + stackSource.ShowUnknownAddresses = App.CommandLineArgs.ShowUnknownAddresses; + + var computer = new ThreadTimeStackComputer(eventLog, App.GetSymbolReader(eventLog.FilePath)); + computer.ExcludeReadyThread = true; + computer.GenerateThreadTimeStacks(stackSource); + + return stackSource; + } + public static MutableTraceEventStackSource ThreadTimeWithReadyThreadStacks(this TraceLog eventLog, TraceProcess process = null, bool showUnknownAddresses = false) + { + var stackSource = new MutableTraceEventStackSource(eventLog); + stackSource.ShowUnknownAddresses = App.CommandLineArgs.ShowUnknownAddresses; + + var computer = new ThreadTimeStackComputer(eventLog, App.GetSymbolReader(eventLog.FilePath)); + computer.GenerateThreadTimeStacks(stackSource); + + return stackSource; + } + public static MutableTraceEventStackSource ThreadTimeWithTasksStacks(this TraceLog eventLog, TraceProcess process = null, bool showUnknownAddresses = false) + { + // Use MutableTraceEventStackSource to disable activity tracing support + var stackSource = new MutableTraceEventStackSource(eventLog); + stackSource.ShowUnknownAddresses = App.CommandLineArgs.ShowUnknownAddresses; + var computer = new ThreadTimeStackComputer(eventLog, App.GetSymbolReader(eventLog.FilePath)); + computer.UseTasks = true; + computer.ExcludeReadyThread = true; + computer.GenerateThreadTimeStacks(stackSource); + + return stackSource; + } + public static MutableTraceEventStackSource ThreadTimeWithTasksAspNetStacks(this TraceLog eventLog, TraceProcess process = null, bool showUnknownAddresses = false) + { + var stackSource = new MutableTraceEventStackSource(eventLog); + stackSource.ShowUnknownAddresses = App.CommandLineArgs.ShowUnknownAddresses; + + var computer = new ThreadTimeStackComputer(eventLog, App.GetSymbolReader(eventLog.FilePath)); + computer.UseTasks = true; + computer.GroupByAspNetRequest = true; + computer.ExcludeReadyThread = true; + computer.GenerateThreadTimeStacks(stackSource); + + return stackSource; + } + public static MutableTraceEventStackSource ThreadTimeAspNetStacks(this TraceLog eventLog, TraceProcess process = null, bool showUnknownAddresses = false) + { + var stackSource = new MutableTraceEventStackSource(eventLog); + stackSource.ShowUnknownAddresses = App.CommandLineArgs.ShowUnknownAddresses; + + var computer = new ThreadTimeStackComputer(eventLog, App.GetSymbolReader(eventLog.FilePath)); + computer.ExcludeReadyThread = true; + computer.GroupByAspNetRequest = true; + computer.GenerateThreadTimeStacks(stackSource); + + return stackSource; + } +#endif +} diff --git a/src/HtmlJs/PerfDataService/Models/FileUtilities.cs b/src/HtmlJs/PerfDataService/Models/FileUtilities.cs new file mode 100644 index 000000000..a14284a1f --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/FileUtilities.cs @@ -0,0 +1,259 @@ +/****************************************************************************/ +/* FileUtilities.cs */ +/****************************************************************************/ + +/* Copyright (c) Microsoft Corporation. All rights reserved. */ +/* AUTHOR: Vance Morrison + * Date : 10/20/2007 */ +/****************************************************************************/ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; + +namespace Microsoft.Diagnostics.Utilities +{ + /******************************************************************************/ + /// + /// General purpose utilities dealing with archiveFile system files. + /// +#if UTILITIES_PUBLIC + public +#endif + static class FileUtilities + { + /// + /// GetLines works much like File.ReadAllLines, however instead of returning a + /// array of lines, it returns a IEnumerable so that the archiveFile is not read all + /// at once. This allows 'foreach' syntax to be used on very large files. + /// + /// Suggested Usage + /// + /// foreach(string lineNumber in FileUtilities.GetLines("largeFile.txt")){ + /// Console.WriteLine(lineNumber); + /// } + /// + /// The base directory to enumerate. + /// The enumerator for all lines in the archiveFile. + public static IEnumerable ReadAllLines(string fileName) + { + StreamReader stream = File.OpenText(fileName); + while (!stream.EndOfStream) + { + yield return stream.ReadLine(); + } + stream.Dispose(); + } + + /// + /// Given archiveFile specifications possibly with wildcards in them + /// Returns an enumerator that returns each expanded archiveFile name in turn. + /// + /// If searchOpt is AllDirectories it does a recursive match. + /// + public static IEnumerable ExpandWildcards(string[] fileSpecifications, SearchOption searchOpt = SearchOption.TopDirectoryOnly) + { + foreach (string fileSpec in fileSpecifications) + { + string dir = Path.GetDirectoryName(fileSpec); + if (dir.Length == 0) + dir = "."; + string file = Path.GetFileName(fileSpec); + foreach (string fileName in DirectoryUtilities.GetFiles(dir, file, searchOpt)) + yield return fileName; + } + } + + /// + /// Delete works much like File.Delete, except that it will succeed if the + /// archiveFile does not exist, and will rename the archiveFile so that even if the archiveFile + /// is locked the original archiveFile variable will be made available. + /// + /// It renames the archiveFile with a '[num].deleting'. These files might be left + /// behind. + /// + /// It returns true if it was completely successful. If there is a *.deleting + /// archiveFile left behind, it returns false. + /// + /// The variable of the archiveFile to delete + public static bool ForceDelete(string fileName) + { + if (Directory.Exists(fileName)) + return DirectoryUtilities.Clean(fileName) != 0; + + if (!File.Exists(fileName)) + return true; + + // First move the archiveFile out of the way, so that even if it is locked + // The original archiveFile is still gone. + string fileToDelete = fileName; + bool tryToDeleteOtherFiles = true; + if (!fileToDelete.EndsWith(".deleting", StringComparison.OrdinalIgnoreCase)) + { + tryToDeleteOtherFiles = false; + int i = 0; + for (i = 0; ; i++) + { + fileToDelete = fileName + "." + i.ToString() + ".deleting"; + if (!File.Exists(fileToDelete)) + break; + tryToDeleteOtherFiles = true; + } + try + { + File.Move(fileName, fileToDelete); + } + catch (Exception) + { + fileToDelete = fileName; + } + } + bool ret = TryDelete(fileToDelete); + if (tryToDeleteOtherFiles) + { + // delete any old *.deleting files that may have been left around + string deletePattern = Path.GetFileName(fileName) + @".*.deleting"; + foreach (string deleteingFile in Directory.GetFiles(Path.GetDirectoryName(fileName), deletePattern)) + TryDelete(deleteingFile); + } + return ret; + } + + /// + /// Try to delete 'fileName' catching any exception. Returns true if successful. It will delete read-only files. + /// + public static bool TryDelete(string fileName) + { + bool ret = false; + if (!File.Exists(fileName)) + return true; + try + { + FileAttributes attribs = File.GetAttributes(fileName); + if ((attribs & FileAttributes.ReadOnly) != 0) + { + attribs &= ~FileAttributes.ReadOnly; + File.SetAttributes(fileName, attribs); + } + File.Delete(fileName); + ret = true; + } + catch (Exception) { } + return ret; + } + + /// + /// SafeCopy sourceFile to destinationFile. If the destination exists + /// used ForceDelete to get rid of it first. + /// + public static void ForceCopy(string sourceFile, string destinationFile) + { + ForceDelete(destinationFile); // will return immediate if the destination does not exist. + File.Copy(sourceFile, destinationFile); + } + + /// + /// Moves sourceFile to destinationFile. If the destination exists + /// used ForceDelete to get rid of it first. + /// + public static void ForceMove(string sourceFile, string destinationFile) + { + ForceDelete(destinationFile); // will return immediate if the destination does not exist. + File.Move(sourceFile, destinationFile); + } + + /// + /// Returns true if the two file have exactly the same content (as a stream of bytes). + /// + public static bool Equals(string fileName1, string fileName2) + { + byte[] buffer1 = new byte[8192]; + byte[] buffer2 = new byte[8192]; + using (FileStream file1 = File.Open(fileName1, FileMode.Open, FileAccess.Read)) + { + using (FileStream file2 = File.Open(fileName2, FileMode.Open, FileAccess.Read)) + { + int count1 = file1.Read(buffer1, 0, buffer1.Length); + int count2 = file2.Read(buffer2, 0, buffer2.Length); + if (count1 != count2) + return false; + for (int i = 0; i < count1; i++) + if (buffer1[i] != buffer2[i]) + return false; + } + } + return true; + } + } + + /// + /// Utilities associated with file name paths. + /// +#if UTILITIES_PUBLIC + public +#endif + static class PathUtil + { + /// + /// Given a path and a superdirectory path relativeToDirectory compute the relative path (the path from) relativeToDirectory + /// + static public string PathRelativeTo(string path, string relativeToDirectory) + { + Debug.Assert(!relativeToDirectory.EndsWith("\\")); + + string fullPath = Path.GetFullPath(path); + string fullCurrentDirectory = Path.GetFullPath(relativeToDirectory); + + int commonToSlashIndex = -1; + for (int i = 0; i < fullPath.Length; i++) + { + char cFullPath = fullPath[i]; + if (i >= fullCurrentDirectory.Length) + { + if (cFullPath == '\\') + commonToSlashIndex = i; + break; + } + char cCurrentDirectory = fullCurrentDirectory[i]; + + if (cCurrentDirectory != cFullPath) + { + if (char.IsLower(cCurrentDirectory)) + cCurrentDirectory = (char)(cCurrentDirectory - (char)('a' - 'A')); + if (char.IsLower(cFullPath)) + cFullPath = (char)(cFullPath - (char)('a' - 'A')); + if (cCurrentDirectory != cFullPath) + break; + } + + if (cCurrentDirectory == '\\') + commonToSlashIndex = i; + } + + // There is no common prefix between the two paths, we give up. + if (commonToSlashIndex < 0) + return path; + + string returnVal = ""; + int nextSlash = commonToSlashIndex; + for (; ; ) + { + if (nextSlash >= fullCurrentDirectory.Length) + break; + if (returnVal.Length > 0) + returnVal += "\\"; + returnVal += @".."; + if (nextSlash + 1 == fullCurrentDirectory.Length) + break; + nextSlash = fullCurrentDirectory.IndexOf('\\', nextSlash + 1); + if (nextSlash < 0) + break; + } + + string rest = fullPath.Substring(commonToSlashIndex + 1); + returnVal = Path.Combine(returnVal, rest); + Debug.Assert(string.Compare(Path.GetFullPath(Path.Combine(relativeToDirectory, returnVal)), fullPath, StringComparison.OrdinalIgnoreCase) == 0); + return returnVal; + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/GrowableArray.cs b/src/HtmlJs/PerfDataService/Models/GrowableArray.cs new file mode 100644 index 000000000..fd5f26d9e --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/GrowableArray.cs @@ -0,0 +1,480 @@ +using System.Diagnostics; +// Copyright (c) Microsoft Corporation. All rights reserved. +// This file is best viewed using outline mode (Ctrl-M Ctrl-O) +// +// This program uses code hyperlinks available as part of the HyperAddin Visual Studio plug-in. +// It is available from http://www.codeplex.com/hyperAddin +// +using System.Text; + +namespace System.Collections.Generic +{ + /// + /// A cheap version of List(T). The idea is to make it as cheap as if you did it 'by hand' using an array and + /// an int which represents the logical charCount. It is a struct to avoid an extra pointer dereference, so this + /// is really meant to be embedded in other structures. + /// +#if GROWABLEARRAY_PUBLIC + public +#endif + struct GrowableArray + { + /// + /// Create a growable array with the given initial size it will grow as needed. There is also the + /// default constructor that assumes initialSize of 0 (and does not actually allocate the array. + /// + /// + public GrowableArray(int initialSize) + { + array = new T[initialSize]; + arrayLength = 0; + } + /// + /// Fetch the element at the given index. Will throw an IndexOutOfRange exception otherwise + /// + public T this[int index] + { + get + { + Debug.Assert((uint)index < (uint)arrayLength); + return array[index]; + } + set + { + Debug.Assert((uint)index < (uint)arrayLength); + array[index] = value; + } + } + + /// + /// The number of elements in the array + /// + public int Count + { + get + { + return arrayLength; + } + set + { + if (arrayLength < value) + { + if (array != null && value <= array.Length) + { + // Null out the entries. + for (int i = arrayLength; i < value; i++) + array[i] = default(T); + } + else + Realloc(value); + } + arrayLength = value; + } + } + /// + /// Remove all elements in the array. + /// + public void Clear() + { + arrayLength = 0; + } + + /// + /// Add an item at the end of the array, growing as necessary. + /// + /// + public void Add(T item) + { + if (array == null || arrayLength >= array.Length) + Realloc(0); + array[arrayLength++] = item; + } + /// + /// Add all items 'items' to the end of the array, growing as necessary. + /// + /// + public void AddRange(IEnumerable items) + { + foreach (T item in items) + Add(item); + } + /// + /// Insert 'item' directly at 'index', shifting all items >= index up. 'index' can be code:Count in + /// which case the item is appended to the end. Larger indexes are not allowed. + /// + public void Insert(int index, T item) + { + if ((uint)index > (uint)arrayLength) + throw new IndexOutOfRangeException(); + if (array == null || arrayLength >= array.Length) + Realloc(0); + + // Shift everything up to make room. + for (int idx = arrayLength; index < idx; --idx) + array[idx] = array[idx - 1]; + + // insert the element + array[index] = item; + arrayLength++; + } + /// + /// Remove 'count' elements starting at 'index' + /// + public void RemoveRange(int index, int count) + { + if (count == 0) + return; + if (count < 0) + throw new ArgumentException("count can't be negative"); + + if ((uint)index >= (uint)arrayLength) + throw new IndexOutOfRangeException(); + Debug.Assert(index + count <= arrayLength); // If you violate this it does not hurt + + // Shift everything down. + for (int endIndex = index + count; endIndex < arrayLength; endIndex++) + array[index++] = array[endIndex]; + + arrayLength = index; + } + + // Support for using an array as a map from int to T. + /// + /// Sets the 'index' element to 'value' growing the array if necessary (filling in default values if necessary). + /// + public void Set(int index, T value) + { + if (index >= Count) + Count = index + 1; + + this[index] = value; + } + /// + /// Gets the value at 'index'. Never fails, will return 'default' if out of range. + /// + public T Get(int index) + { + if ((uint)index < (uint)arrayLength) + return this[index]; + else + return default(T); + } + + // Support for stack-like operations + /// + /// Returns true if there are no elements in the array. + /// + public bool Empty { get { return arrayLength == 0; } } + /// + /// Remove the last element added and return it. Will throw if there are no elements. + /// + /// + public T Pop() + { + T ret = array[arrayLength - 1]; // Will cause index out of range exception + --arrayLength; + return ret; + } + /// + /// Returns the last element added Will throw if there are no elements. + /// + public T Top { get { return array[arrayLength - 1]; } } + + /// + /// Trims the size of the array so that no more than 'maxWaste' slots are wasted. Useful when + /// you know that the array has stopped growing. + /// + public void Trim(int maxWaste) + { + if (array != null) + { + if (array.Length > arrayLength + maxWaste) + { + if (arrayLength == 0) + array = null; + else + { + T[] newArray = new T[arrayLength]; + Array.Copy(array, newArray, arrayLength); + array = newArray; + } + } + } + } + + /// + /// Returns true if the Growable array was initialized by the default constructor + /// which has no capacity (and thus will cause growth on the first addition). + /// This method allows you to lazily set the compacity of your GrowableArray by + /// testing if it is of EmtpyCapacity, and if so set it to some useful capacity. + /// This avoids unecessary reallocs to get to a reasonable capacity. + /// + public bool EmptyCapacity { get { return array == null; } } + + /// + /// A string representing the array. Only intended for debugging. + /// + /// + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("GrowableArray(Count=").Append(Count).Append(", [").AppendLine(); + for (int i = 0; i < Count; i++) + sb.Append(" ").Append(this[i].ToString()).AppendLine(); + sb.Append(" ])"); + return sb.ToString(); + } + /// + /// Should return -1 if x is less than elem. + /// TODO FIX NOW use Func instead. + /// + public delegate int Comparison(Key x, T elem); + /// + /// Sets 'index' to the the smallest index such that all elements with index > 'idx' are > key. If + /// index does not match any elements a new element should always be placed AFTER index. Note that this + /// means that index may be -1 if the new element belongs in the first position. + /// + /// Returns true if the return index matched exactly (success) + /// + /// TODO FIX NOW harmonize with List.BinarySearch + /// + public bool BinarySearch(Key key, out int index, Comparison comparison) + { + // binary search + int low = 0; + int high = arrayLength; + int lastLowCompare = -1; // If this number == 0 we had a match. + + if (high > 0) + { + // The invariant in this loop is that + // [0..low) <= key < [high..Count) + for (; ; ) + { + int mid = (low + high) / 2; + int compareResult = comparison(key, array[mid]); + if (compareResult >= 0) // key >= array[mid], move low up + { + lastLowCompare = compareResult; // remember this result, as it indicates a successful match. + if (mid == low) + break; + low = mid; + } + else // key < array[mid], move high down + { + high = mid; + if (mid == low) + break; + } + + // Note that if compareResults == 0, we don't return the match eagerly because there could be + // multiple elements that match. We want the match with the largest possible index, so we need + // to continue the search until the valid range drops to 0 + } + } + + if (lastLowCompare < 0) // key < array[low], subtract 1 to indicate that new element goes BEFORE low. + { + Debug.Assert(low == 0); // can only happen if it is the first element + --low; + } + index = low; + + Debug.Assert(index == -1 || comparison(key, array[index]) >= 0); // element smaller or equal to key + Debug.Assert(index + 1 >= Count || comparison(key, array[index + 1]) < 0); // The next element is strictly bigger. + Debug.Assert((lastLowCompare != 0) || (comparison(key, array[index]) == 0)); // If we say there is a match, there is. + return (lastLowCompare == 0); + } + /// + /// Sort the range starting at 'index' of length 'count' using 'comparision' in assending order + /// + public void Sort(int index, int count, System.Comparison comparison) + { + Debug.Assert(index + count <= arrayLength); + if (count > 0) + Array.Sort(array, index, count, new FunctorComparer(comparison)); + } + /// + /// Sort the whole array using 'comparison' in ascending order + /// + public void Sort(System.Comparison comparison) + { + if (array != null) + Array.Sort(array, 0, arrayLength, new FunctorComparer(comparison)); + } + + /// + /// Executes 'func' for each element in the GrowableArray and returns a GrowableArray + /// for the result. + /// + public GrowableArray Foreach(Func func) + { + var ret = new GrowableArray(); + ret.Count = Count; + + for (int i = 0; i < Count; i++) + ret[i] = func(array[i]); + return ret; + } + + /// + /// Perform a linear search starting at 'startIndex'. If found return true and the index in 'index'. + /// It is legal that 'startIndex' is greater than the charCount, in which case, the search returns false + /// immediately. This allows a nice loop to find all items matching a pattern. + /// + public bool Search(Key key, int startIndex, Comparison compare, ref int index) + { + for (int i = startIndex; i < arrayLength; i++) + { + if (compare(key, array[i]) == 0) + { + index = i; + return true; + } + } + return false; + } + + /// + /// Returns the underlying array. Should not be used most of the time! + /// + public T[] UnderlyingArray { get { return array; } } + #region private + private void Realloc(int minSize) + { + if (array == null) + { + if (minSize < 16) + minSize = 16; + array = new T[minSize]; + } + else + { + int expandSize = array.Length * 3 / 2 + 8; + if (minSize < expandSize) + minSize = expandSize; + T[] newArray = new T[minSize]; + Array.Copy(array, newArray, arrayLength); + array = newArray; + } + } + + T[] array; + int arrayLength; + #endregion + + #region TESTING + // Unit testing. It is reasonable coverage, but concentrates on BinarySearch as that is the one that is + // easy to get wrong. +#if TESTING + public static void TestGrowableArray() + { + GrowableArray testArray = new GrowableArray(); + for (float i = 1.1F; i < 10; i += 2) + { + int successes = TestBinarySearch(testArray); + Debug.Assert(successes == ((int)i) / 2); + testArray.Add(i); + } + + for (float i = 0.1F; i < 11; i += 2) + { + int index; + bool result = testArray.BinarySearch(i, out index, delegate(float key, float elem) { return (int)key - (int)elem; }); + Debug.Assert(!result); + testArray.InsertAt(index + 1, i); + } + + int lastSuccesses = TestBinarySearch(testArray); + Debug.Assert(lastSuccesses == 11); + + for (float i = 0; i < 11; i += 1) + { + int index; + bool result = testArray.BinarySearch(i, out index, delegate(float key, float elem) { return (int)key - (int)elem; }); + Debug.Assert(result); + testArray.InsertAt(index + 1, i); + } + + lastSuccesses = TestBinarySearch(testArray); + Debug.Assert(lastSuccesses == 11); + + // We always get the last one when the equality comparision allows multiple items to match. + for (float i = 0; i < 11; i += 1) + { + int index; + bool result = testArray.BinarySearch(i, out index, delegate(float key, float elem) { return (int)key - (int)elem; }); + Debug.Assert(result); + Debug.Assert(i == testArray[index]); + } + Console.WriteLine("Done"); + } + private static int TestBinarySearch(GrowableArray testArray) + { + int successes = 0; + for (int i = 0; i < 30; i++) + { + int index; + if (testArray.BinarySearch(i, out index, delegate(float key, float elem) { return (int)key - (int)elem; })) + { + successes++; + Debug.Assert((int)testArray[index] == i); + } + else + Debug.Assert(index + 1 <= testArray.Count); + } + return successes; +} +#endif + #endregion + + // This allows 'foreach' to work. We are not a true IEnumerable however. + /// + /// Implementation of foreach protocol + /// + /// + public GrowableArrayEnumerator GetEnumerator() { return new GrowableArrayEnumerator(this); } + /// + /// Enumerator for foreach interface + /// + public struct GrowableArrayEnumerator + { + /// + /// implementation of IEnumerable interface + /// + public T Current + { + get { return array[cur]; } + } + /// + /// implementation of IEnumerable interface + /// + public bool MoveNext() + { + cur++; + return cur < end; + } + + #region private + internal GrowableArrayEnumerator(GrowableArray growableArray) + { + cur = -1; + end = growableArray.arrayLength; + array = growableArray.array; + } + int cur; + int end; + T[] array; + #endregion + } + } + #region private classes + internal class FunctorComparer : IComparer + { + public FunctorComparer(Comparison comparison) { this.comparison = comparison; } + public int Compare(T x, T y) { return comparison(x, y); } + + private Comparison comparison; + }; + #endregion +} diff --git a/src/HtmlJs/PerfDataService/Models/HotspotsTreeNodeViewModel.cs b/src/HtmlJs/PerfDataService/Models/HotspotsTreeNodeViewModel.cs new file mode 100644 index 000000000..635670172 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/HotspotsTreeNodeViewModel.cs @@ -0,0 +1,7 @@ +namespace PerfDataService.Models +{ + public sealed class HotspotsTreeNodeViewModel : TreeNode + { + public string Link => "stackviewer/callers/" + this.Id; + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/LineInformation.cs b/src/HtmlJs/PerfDataService/Models/LineInformation.cs new file mode 100644 index 000000000..2b217652a --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/LineInformation.cs @@ -0,0 +1,11 @@ +namespace PerfDataService.Models +{ + public sealed class LineInformation + { + public int LineNumber { get; set; } + + public double Metric { get; set; } + + public string Line { get; set; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/Microsoft.Diagnostics.Utilities.asmmeta b/src/HtmlJs/PerfDataService/Models/Microsoft.Diagnostics.Utilities.asmmeta new file mode 100644 index 000000000..e26a0dd12 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/Microsoft.Diagnostics.Utilities.asmmeta @@ -0,0 +1,262 @@ +.assembly extern 'mscorlib' +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89) + .ver 4:0:0:0 +} +.assembly 'Microsoft.Diagnostics.Utilities' +{ + .custom instance void ['mscorlib']'System'.'CLSCompliantAttribute'::.ctor(bool) = (01 00 00 00 00) + .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'ComVisibleAttribute'::.ctor(bool) = (01 00 00 00 00) + .permissionset reqmin = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 34 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 15 01 54 02 10 53 6B 69 70 56 65 72 69 66 69 63 61 74 69 6F 6E 01) + .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 07 D1 FA 57 C4 AE D9 F0 A3 2E 84 AA 0F AE FD 0D E9 E8 FD 6A EC 8F 87 FB 03 76 6C 83 4C 99 92 1E B2 3B E7 9A D9 D5 DC C1 DD 9A D2 36 13 21 02 90 0B 72 3C F9 80 95 7F C4 E1 77 10 8F C6 07 77 4F 29 E8 32 0E 92 EA 05 EC E4 E8 21 C0 A5 EF E8 F1 64 5C 4C 0C 93 C1 AB 99 28 5D 62 2C AA 65 2C 1D FA D6 3D 74 5D 6F 2D E5 F1 7E 5E AF 0F C4 96 3D 26 1C 8A 12 43 65 18 20 6D C0 93 34 4D 5A D2 93) + .hash algorithm 0x00008004 + .ver 14:0:0:0 +} +.namespace 'Microsoft.Diagnostics.Utilities' +{ + .class public abstract sealed 'DirectoryUtilities' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig + void 'Copy'(string 'sourceDirectory', string 'targetDirectory') + { + ret + } + .method public static hidebysig + void 'Copy'(string 'sourceDirectory', string 'targetDirectory', valuetype ['mscorlib']'System.IO'.'SearchOption' 'searchOptions') + { + ret + } + .method public static hidebysig + int32 'Clean'(string 'directory') + { + ret + } + .method public static hidebysig + bool 'DeleteOldest'(string 'directoryPath', int32 'numberToKeep') + { + ret + } + .method public static hidebysig + class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'GetFiles'(string 'directoryPath', string 'searchPattern', valuetype ['mscorlib']'System.IO'.'SearchOption' 'searchOptions') + { + ret + } + .method public static hidebysig + class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'GetFiles'(string 'directoryName', [opt] string 'searchPattern') + { + .param [2] = "*" + ret + } + } + .class public abstract sealed 'EnvironmentUtilities' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig specialname + bool 'get_Is64BitProcess'() + { + ret + } + .method public static hidebysig specialname + bool 'get_Is64BitOperatingSystem'() + { + ret + } + .property bool 'Is64BitOperatingSystem'() + { + .get bool 'Microsoft.Diagnostics.Utilities'.'EnvironmentUtilities'::'get_Is64BitOperatingSystem'() + } + .property bool 'Is64BitProcess'() + { + .get bool 'Microsoft.Diagnostics.Utilities'.'EnvironmentUtilities'::'get_Is64BitProcess'() + } + } + .class public abstract sealed 'FileUtilities' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig + class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'ReadAllLines'(string 'fileName') + { + ret + } + .method public static hidebysig + class ['mscorlib']'System.Collections.Generic'.'IEnumerable`1' 'ExpandWildcards'(string[] 'fileSpecifications', [opt] valuetype ['mscorlib']'System.IO'.'SearchOption' 'searchOpt') + { + .param [2] = int32(0x00000000) + ret + } + .method public static hidebysig + bool 'ForceDelete'(string 'fileName') + { + ret + } + .method public static hidebysig + bool 'TryDelete'(string 'fileName') + { + ret + } + .method public static hidebysig + void 'ForceCopy'(string 'sourceFile', string 'destinationFile') + { + ret + } + .method public static hidebysig + void 'ForceMove'(string 'sourceFile', string 'destinationFile') + { + ret + } + .method public static hidebysig + bool 'Equals'(string 'fileName1', string 'fileName2') + { + ret + } + } + .class public abstract sealed 'PathUtil' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig + string 'PathRelativeTo'(string 'path', string 'relativeToDirectory') + { + ret + } + } + .class public abstract sealed 'StreamUtilities' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig + void 'CopyFromFile'(string 'fromFilePath', class ['mscorlib']'System.IO'.'Stream' 'toStream') + { + ret + } + .method public static hidebysig + void 'CopyToFile'(class ['mscorlib']'System.IO'.'Stream' 'fromStream', string 'toFilePath') + { + ret + } + .method public static hidebysig + int32 'CopyStream'(class ['mscorlib']'System.IO'.'Stream' 'fromStream', class ['mscorlib']'System.IO'.'Stream' 'toStream') + { + ret + } + } + .class public abstract sealed 'StringUtilities' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig + bool 'IsNullOrWhiteSpace'(string 'value') + { + ret + } + } + .class public sealed 'TeeTextWriter' + extends ['mscorlib']'System.IO'.'TextWriter' + { + .method public hidebysig specialname + instance void '.ctor'(class ['mscorlib']'System.IO'.'TextWriter' 'stream1', class ['mscorlib']'System.IO'.'TextWriter' 'stream2') + { + ret + } + .method public hidebysig specialname + instance class ['mscorlib']'System.IO'.'TextWriter' 'get_Stream1'() + { + ret + } + .method public hidebysig specialname + instance class ['mscorlib']'System.IO'.'TextWriter' 'get_Stream2'() + { + ret + } + .method public virtual hidebysig specialname + instance class ['mscorlib']'System.Text'.'Encoding' 'get_Encoding'() + { + ret + } + .method public virtual hidebysig + instance void 'Write'(char 'value') + { + ret + } + .method public virtual hidebysig + instance void 'Write'(char[] 'buffer', int32 'index', int32 'count') + { + ret + } + .method public virtual hidebysig + instance void 'Write'(string 'value') + { + ret + } + .method public virtual hidebysig + instance void 'Flush'() + { + ret + } + .method family virtual hidebysig + instance void 'Dispose'(bool 'disposing') + { + ret + } + .property instance class ['mscorlib']'System.Text'.'Encoding' 'Encoding'() + { + .get instance class ['mscorlib']'System.Text'.'Encoding' 'Microsoft.Diagnostics.Utilities'.'TeeTextWriter'::'get_Encoding'() + } + .property instance class ['mscorlib']'System.IO'.'TextWriter' 'Stream1'() + { + .get instance class ['mscorlib']'System.IO'.'TextWriter' 'Microsoft.Diagnostics.Utilities'.'TeeTextWriter'::'get_Stream1'() + } + .property instance class ['mscorlib']'System.IO'.'TextWriter' 'Stream2'() + { + .get instance class ['mscorlib']'System.IO'.'TextWriter' 'Microsoft.Diagnostics.Utilities'.'TeeTextWriter'::'get_Stream2'() + } + } + .class public 'XmlUtilities' + extends ['mscorlib']'System'.'Object' + { + .method public static hidebysig + string 'OpenXmlElement'(string 'xmlElement') + { + ret + } + .method public static hidebysig + string 'XmlEscape'(object 'obj', [opt] bool 'quote') + { + .param [2] = bool(false) + ret + } + .method public static hidebysig + string 'XmlQuote'(object 'obj') + { + ret + } + .method public static hidebysig + string 'XmlQuote'(int32 'value') + { + ret + } + .method public static hidebysig + string 'XmlQuoteHex'(uint32 'value') + { + ret + } + .method public static hidebysig + string 'XmlQuoteHex'(uint64 'value') + { + ret + } + .method public static hidebysig + string 'XmlQuoteHex'(int32 'value') + { + ret + } + .method public static hidebysig + string 'XmlQuoteHex'(int64 'value') + { + ret + } + .method public hidebysig specialname + instance void '.ctor'() + { + ret + } + } +} diff --git a/src/HtmlJs/PerfDataService/Models/SourceInformation.cs b/src/HtmlJs/PerfDataService/Models/SourceInformation.cs new file mode 100644 index 000000000..35e9b5068 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/SourceInformation.cs @@ -0,0 +1,21 @@ +namespace PerfDataService.Models +{ + using System.Collections.Generic; + using System.Runtime.Serialization; + + [DataContract] + public sealed class SourceInformation + { + [DataMember] + public string Type { get; set; } + + [DataMember] + public string Url { get; set; } + + [DataMember] + public IEnumerable Lines { get; set; } + + [DataMember] + public IEnumerable Summary { get; set; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/StackViewerModel.cs b/src/HtmlJs/PerfDataService/Models/StackViewerModel.cs new file mode 100644 index 000000000..a9d02d42f --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/StackViewerModel.cs @@ -0,0 +1,31 @@ +namespace PerfDataService.Models +{ + public sealed class StackViewerModel + { + public string Filename { get; set; } + + public string StackType { get; set; } + + public string Start { get; set; } + + public string End { get; set; } + + public string GroupPats { get; set; } + + public string IncPats { get; set; } + + public string ExcPats { get; set; } + + public string FoldPats { get; set; } + + public string FoldPct { get; set; } + + public string SymPath { get; set; } + + public string SrcPth { get; set; } + + public string ModulesFilter { get; set; } + + public string ImageFilter { get; set; } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/StackViewerViewModel.cs b/src/HtmlJs/PerfDataService/Models/StackViewerViewModel.cs new file mode 100644 index 000000000..852ba5f78 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/StackViewerViewModel.cs @@ -0,0 +1,57 @@ +namespace PerfDataService.Models +{ + using System.Collections.Generic; + + public class StackViewerViewModel + { + public string Filename { get; set; } + + public string StackType { get; set; } + + public string GroupPats { get; set; } + + public string IncPats { get; set; } + + public string ExcPats { get; set; } + + public string FoldPats { get; set; } + + public string FoldPct { get; set; } + + public string SymPath { get; set; } + + public string SrcPath { get; set; } + + public string ModulesFilter { get; set; } + + public string ImageFilter { get; set; } + + public string Start { get; set; } + + public string End { get; set; } + + public IEnumerable TreeNodes { get; set; } + + public string CacheKey => this.Filename + this.StackType + this.Start + this.End + this.IncPats + this.ExcPats + this.FoldPats + this.GroupPats + this.FoldPct; + + public StackViewerViewModel() + { + this.Start = string.Empty; + this.End = string.Empty; + this.GroupPats = string.Empty; + this.IncPats = string.Empty; + this.ExcPats = string.Empty; + this.FoldPats = string.Empty; + this.FoldPct = string.Empty; + this.SymPath = string.Empty; + this.SrcPath = string.Empty; + this.ModulesFilter = string.Empty; + this.ImageFilter = string.Empty; + } + + public override string ToString() + { + return $"stacktype={this.StackType}&filename={this.Filename}&start={this.Start}&end={this.End}&grouppats={this.GroupPats}&incpats={this.IncPats}&excpats={this.ExcPats}&foldpats={this.FoldPats}&foldpct={this.FoldPct}&sympath={this.SymPath}&srcpath={this.SrcPath}&modulesFilter={this.ModulesFilter}&imageFilter={this.ImageFilter}"; + } + } +} \ No newline at end of file diff --git a/src/PerfView/StreamUtilities.cs b/src/HtmlJs/PerfDataService/Models/StreamUtilities.cs similarity index 70% rename from src/PerfView/StreamUtilities.cs rename to src/HtmlJs/PerfDataService/Models/StreamUtilities.cs index 725daafc1..bafb7b61a 100644 --- a/src/PerfView/StreamUtilities.cs +++ b/src/HtmlJs/PerfDataService/Models/StreamUtilities.cs @@ -1,28 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. // This file is best viewed using outline mode (Ctrl-M Ctrl-O) // -// Copyright (C) 2007 Microsoft Corporation. All Rights Reserved. -// // This program uses code hyperlinks available as part of the HyperAddin Visual Studio plug-in. // It is available from http://www.codeplex.com/hyperAddin // -using System; using System.IO; -namespace PerfView +namespace Microsoft.Diagnostics.Utilities { - public static class StreamUtilities { + /// + /// General utilities associated with streams. + /// +#if UTILITIES_PUBLIC + public +#endif + static class StreamUtilities + { + /// + /// Open the 'fromFilePath' and write its contents to 'toStream' + /// public static void CopyFromFile(string fromFilePath, Stream toStream) { using (Stream fromStream = File.OpenRead(fromFilePath)) CopyStream(fromStream, toStream); } - + /// + /// Open the 'toFilePath' for writing and write the contents of 'fromStream' to it + /// public static void CopyToFile(Stream fromStream, string toFilePath) { using (Stream toStream = File.Create(toFilePath)) CopyStream(fromStream, toStream); } - /// /// CopyStream simply copies 'fromStream' to 'toStream' /// @@ -41,4 +50,4 @@ public static int CopyStream(Stream fromStream, Stream toStream) return totalBytes; } }; -} \ No newline at end of file +} diff --git a/src/HtmlJs/PerfDataService/Models/StringUtilities.cs b/src/HtmlJs/PerfDataService/Models/StringUtilities.cs new file mode 100644 index 000000000..4cea01d65 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/StringUtilities.cs @@ -0,0 +1,24 @@ +using System; + +namespace Microsoft.Diagnostics.Utilities +{ +#if UTILITIES_PUBLIC + public +#endif + static class StringUtilities + { + public static bool IsNullOrWhiteSpace(string value) + { + // Implementation copied from /ndp/clr/src/bcl/System/string.cs + + if (value == null) return true; + + for (int i = 0; i < value.Length; i++) + { + if (!Char.IsWhiteSpace(value[i])) return false; + } + + return true; + } + } +} diff --git a/src/HtmlJs/PerfDataService/Models/TeeTextWriter.cs b/src/HtmlJs/PerfDataService/Models/TeeTextWriter.cs new file mode 100644 index 000000000..63b03dbe2 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/TeeTextWriter.cs @@ -0,0 +1,57 @@ +using System.IO; + +namespace Microsoft.Diagnostics.Utilities +{ + /// + /// This class returns a stream, which when written to, will write to two other streams. + /// + public sealed class TeeTextWriter : TextWriter + { + public TeeTextWriter(TextWriter stream1, TextWriter stream2) + { + m_stream1 = stream1; + m_stream2 = stream2; + } + public TextWriter Stream1 { get { return m_stream1; } } + public TextWriter Stream2 { get { return m_stream2; } } + + public override System.Text.Encoding Encoding { get { return m_stream1.Encoding; } } + public override void Write(char value) + { + lock (this) + { + m_stream1.Write(value); m_stream2.Write(value); + } + } + public override void Write(char[] buffer, int index, int count) { + lock (this) + { + Write(new string(buffer, index, count)); + } + } + public override void Write(string value) + { + lock (this) + { + m_stream1.Write(value); m_stream2.Write(value); + } + } + public override void Flush() + { + lock (this) + { + m_stream1.Flush(); m_stream2.Flush(); + } + } + protected override void Dispose(bool disposing) + { + lock (this) + { + if (disposing) { m_stream1.Dispose(); m_stream2.Dispose(); } + } + } + + TextWriter m_stream1; + TextWriter m_stream2; + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/TreeNode.cs b/src/HtmlJs/PerfDataService/Models/TreeNode.cs new file mode 100644 index 000000000..28d2ac38a --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/TreeNode.cs @@ -0,0 +1,170 @@ +namespace PerfDataService +{ + using System.Collections.Generic; + using System.Runtime.Serialization; + using Microsoft.Diagnostics.Tracing.Stacks; + + [DataContract] + public class TreeNode + { + private readonly object lockObj = new object(); + + private TreeNode[] callees; + + private readonly CallTreeNode backingNodeWithChildren; + + internal TreeNode() + { + } + + public TreeNode(CallTreeNodeBase template) + { + if (template == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(template)); + } + + this.Id = template.Name; + this.ContextId = this.Id; + this.ParentContextId = string.Empty; + this.ParentId = string.Empty; + this.ParentNode = null; + this.Name = template.Name; + this.FindFlag = string.Empty; + this.Visited = false; + this.InclusiveMetric = template.InclusiveMetric; + this.InclusiveCount = template.InclusiveCount; + this.ExclusiveMetric = template.ExclusiveMetric; + this.ExclusiveCount = template.ExclusiveCount; + this.ExclusiveFoldedMetric = template.ExclusiveFoldedMetric; + this.ExclusiveFoldedCount = template.ExclusiveFoldedCount; + this.FirstTimeRelativeMSec = template.FirstTimeRelativeMSec; + this.LastTimeRelativeMSec = template.LastTimeRelativeMSec; + this.InclusiveMetricPercent = template.InclusiveMetric * 100 / template.CallTree.PercentageBasis; + this.ExclusiveMetricPercent = template.ExclusiveMetric * 100 / template.CallTree.PercentageBasis; + this.ExclusiveFoldedMetricPercent = template.ExclusiveFoldedMetric * 100 / template.CallTree.PercentageBasis; + this.HasChildren = false; + this.BackingNode = template; + //System.Diagnostics.Debug.WriteLine("\n1\n" + template.InclusiveMetricByTimeString + "\n\n"); + } + + public TreeNode(CallTreeNode template) + { + if (template == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(template)); + } + + this.ParentContextId = string.Empty; + this.Id = template.Name; + this.ParentId = string.Empty; + this.ParentNode = null; + this.ContextId = this.Id; + this.Name = template.Name; + this.FindFlag = string.Empty; + this.Visited = false; + this.InclusiveMetric = template.InclusiveMetric; + this.InclusiveCount = template.InclusiveCount; + this.ExclusiveMetric = template.ExclusiveMetric; + this.ExclusiveCount = template.ExclusiveCount; + this.ExclusiveFoldedMetric = template.ExclusiveFoldedMetric; + this.ExclusiveFoldedCount = template.ExclusiveFoldedCount; + this.FirstTimeRelativeMSec = template.FirstTimeRelativeMSec; + this.LastTimeRelativeMSec = template.LastTimeRelativeMSec; + this.InclusiveMetricPercent = template.InclusiveMetric * 100 / template.CallTree.PercentageBasis; + this.ExclusiveMetricPercent = template.ExclusiveMetric * 100 / template.CallTree.PercentageBasis; + this.ExclusiveFoldedMetricPercent = template.ExclusiveFoldedMetric * 100 / template.CallTree.PercentageBasis; + this.HasChildren = template.HasChildren; + this.BackingNode = template; + this.backingNodeWithChildren = template; + //System.Diagnostics.Debug.WriteLine("\n2\n" + template.InclusiveMetricByTimeString + "\n\n"); + } + + public CallTreeNodeBase BackingNode { get; } + + [DataMember] + public string ParentContextId { get; set; } + + [DataMember] + public string ContextId { get; set; } + + [DataMember] + public string ParentId { get; set; } + + public TreeNode ParentNode { get; set; } + + [DataMember] + public string Id { get; set; } + + [DataMember] + public string Name { get; set; } + + [DataMember] + public string FindFlag { get; set; } + + public bool Visited { get; set; } + + [DataMember] + public float InclusiveMetric { get; set; } + + [DataMember] + public float ExclusiveMetric { get; set; } + + [DataMember] + public float ExclusiveFoldedMetric { get; set; } + + [DataMember] + public float InclusiveCount { get; set; } + + [DataMember] + public float ExclusiveCount { get; set; } + + [DataMember] + public float ExclusiveFoldedCount { get; set; } + + [DataMember] + public float InclusiveMetricPercent { get; set; } + + [DataMember] + public float ExclusiveMetricPercent { get; set; } + + [DataMember] + public float ExclusiveFoldedMetricPercent { get; set; } + + [DataMember] + public double FirstTimeRelativeMSec { get; set; } + + [DataMember] + public double LastTimeRelativeMSec { get; set; } + + [DataMember] + public double DurationMSec { get; set; } + + [DataMember] + public bool HasChildren { get; set; } + + public TreeNode[] Children + { + get + { + lock (this.lockObj) + { + if (this.callees == null && this.HasChildren) + { + IList backingNodeCallees = this.backingNodeWithChildren.Callees; + int count = backingNodeCallees.Count; + this.callees = new TreeNode[count]; + + for (int i = 0; i < count; ++i) + { + this.callees[i] = new TreeNode(backingNodeCallees[i]) { ContextId = this.ContextId + "/" + i, ParentContextId = this.ContextId, ParentId = this.Name }; // for example, 7105/0 .. 7105/N + this.callees[i].ParentNode = this; + } + } + + return this.callees; + } + } + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/Utilities.csproj b/src/HtmlJs/PerfDataService/Models/Utilities.csproj new file mode 100644 index 000000000..d230101a6 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/Utilities.csproj @@ -0,0 +1,59 @@ + + + + $(MSBuildThisFileDirectory)\.. + + + + true + v4.0 + + + + + + true + true + Inter + + + false + + + {E32C9FC3-8524-4511-8ACB-235AC136DC22} + Library + Microsoft.Diagnostics.Utilities + Microsoft.Diagnostics.Utilities + false + true + UTILITIES_PUBLIC;$(DefineConstants) + + + true + full + false + TRACE;DEBUG;$(DefineConstants) + + + pdbonly + true + TRACE;$(DefineConstants) + + + + + + + + + + + + + + + + + + + diff --git a/src/HtmlJs/PerfDataService/Models/XMLStackSource.cs b/src/HtmlJs/PerfDataService/Models/XMLStackSource.cs new file mode 100644 index 000000000..f3019a0f1 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/XMLStackSource.cs @@ -0,0 +1,489 @@ +using System; +using System.Diagnostics; +using System.Text.RegularExpressions; +using System.Xml; +using System.Globalization; +using System.IO.Compression; +using System.IO; +using Microsoft.Diagnostics.Tracing.Stacks; +using System.Collections.Generic; +////using System.Runtime.Serialization.Json; +using Newtonsoft.Json; + +namespace Diagnostics.Tracing.StackSources +{ + public class XmlStackSourceWriter + { + public static void WriteStackViewAsZippedXml(StackSource source, string fileName, Action additionalData = null) + { + if (File.Exists(fileName)) + File.Delete(fileName); + using (var archive = ZipFile.Open(fileName, ZipArchiveMode.Create)) + { + var entry = archive.CreateEntry(Path.GetFileNameWithoutExtension(fileName)); + using (var entryStream = entry.Open()) + WriteStackViewAsXml(source, entryStream, additionalData); + } + } + public static void WriteStackViewAsXml(StackSource source, string fileName, Action additionalData = null) + { + if (File.Exists(fileName)) + File.Delete(fileName); + using (var writeStream = File.Create(fileName)) + WriteStackViewAsXml(source, writeStream, additionalData); + } + public static void WriteStackViewAsXml(StackSource source, Stream writeStream, Action additionalData = null) + { + using (var writer = XmlWriter.Create(writeStream, new XmlWriterSettings() { Indent = true, IndentChars = " " })) + { + writer.WriteStartElement("StackWindow"); + XmlStackSourceWriter.WriteStacks(source, writer); + + if (additionalData != null) + additionalData(writer); + writer.WriteEndElement(); + } + } + + public static void WriteStacks(StackSource source, XmlWriter writer) + { + writer.WriteStartElement("StackSource"); + writer.WriteStartElement("Frames"); + writer.WriteAttributeString("Count", source.CallFrameIndexLimit.ToString()); + for (int i = 0; i < source.CallFrameIndexLimit; i++) + { + writer.WriteStartElement("Frame"); + writer.WriteAttributeString("ID", i.ToString()); + var frameName = source.GetFrameName((StackSourceFrameIndex)i, true); + + writer.WriteString(frameName); + writer.WriteEndElement(); // Frame + } + writer.WriteEndElement(); // Frames + + writer.WriteStartElement("Stacks"); + writer.WriteAttributeString("Count", source.CallStackIndexLimit.ToString()); + for (int i = 0; i < source.CallStackIndexLimit; i++) + { + writer.WriteStartElement("Stack"); + writer.WriteAttributeString("ID", i.ToString()); + var FrameID = source.GetFrameIndex((StackSourceCallStackIndex)i); + var callerID = source.GetCallerIndex((StackSourceCallStackIndex)i); + writer.WriteAttributeString("CallerID", ((int)callerID).ToString()); + writer.WriteAttributeString("FrameID", ((int)FrameID).ToString()); + writer.WriteEndElement(); // Stack + } + writer.WriteEndElement(); // Stacks + + writer.WriteStartElement("Samples"); + writer.WriteAttributeString("Count", source.SampleIndexLimit.ToString()); + // We use the invariant culture, otherwise if we encode in France and decode + // in English we get parse errors (this happened!); + var invariantCulture = CultureInfo.InvariantCulture; + source.ForEach(delegate (StackSourceSample sample) + { + // + writer.WriteStartElement("Sample"); + writer.WriteAttributeString("ID", ((int)sample.SampleIndex).ToString()); + writer.WriteAttributeString("Time", sample.TimeRelativeMSec.ToString("f3", invariantCulture)); + writer.WriteAttributeString("StackID", ((int)sample.StackIndex).ToString()); + if (sample.Metric != 1) + { + var asInt = (int)sample.Metric; + if (sample.Metric == asInt) + writer.WriteAttributeString("Metric", asInt.ToString()); + else + writer.WriteAttributeString("Metric", sample.Metric.ToString("f3", invariantCulture)); + } + writer.WriteEndElement(); + }); + writer.WriteEndElement(); // Samples + writer.WriteEndElement(); // StackSource + } + } + + /// + /// Reads a very reasonable XML encoding of a stack source. + /// + /// + public class XmlStackSource : StackSource + { + /// + /// Generates a Stack Source from an XML file created with XmlStackSourceWriter. + /// If 'readElement' is non-null Any XML Elements that are not recognised to it so + /// that that information can be parsed by upper level logic. When that routine + /// returns it must have skipped past that element (so reader points at whatever + /// is after the End element tag). + /// + /// If the filename ends in .zip, the file is assumed to be a ZIPPed XML file and + /// it is first Unziped and then processed. + /// + /// If the file ends in .json or .json.zip it can also read that (using JsonReaderWriterFactory.CreateJsonReader) + /// see https://msdn.microsoft.com/en-us/library/bb412170.aspx?f=255&MSPPError=-2147217396 for + /// more on this mapping. + /// + public XmlStackSource(string fileName, Action readElement = null) + { + using (Stream dataStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete)) + { + var xmlStream = dataStream; + string unzippedName = fileName; + if (fileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)) + { + var zipArchive = new ZipArchive(dataStream); + var entries = zipArchive.Entries; + if (entries.Count != 1) + throw new Exception("The ZIP file does not have exactly 1 XML file in it,"); + xmlStream = entries[0].Open(); + unzippedName = fileName.Substring(0, fileName.Length - 4); + } + + XmlReader reader; + if (unzippedName.EndsWith(".json", StringComparison.OrdinalIgnoreCase)) + { + reader = GetJsonReader(dataStream); + } + else + { + XmlReaderSettings settings = new XmlReaderSettings() { IgnoreWhitespace = true, IgnoreComments = true }; + ////reader = XmlTextReader.Create(xmlStream, settings); + reader = XmlReader.Create(xmlStream); + } + + reader.Read(); // Skip the StackWindow element. + bool readStackSource = false; + for (;;) + { + if (reader.NodeType == XmlNodeType.Element) + { + if (reader.Name == "StackSource") + { + if (!readStackSource) + { + Read(reader); + readStackSource = true; + } + } + else if (readElement != null) + readElement(reader); + else + reader.Read(); + } + else if (!reader.Read()) + break; + } + if (m_interner != null) + { + // Transfer the interned names to the m_frames array. + // Go from high to low so at most one reallocation happens. + for (int i = m_interner.FrameCount - 1; 0 <= i; --i) + { + StackSourceFrameIndex frameIdx = m_interner.FrameStartIndex + i; + m_frames.Set((int)frameIdx, m_interner.GetFrameName(frameIdx, true)); + } + + for (int i = m_interner.CallStackCount - 1; 0 <= i; --i) + { + StackSourceCallStackIndex stackIdx = m_interner.CallStackStartIndex + i; + m_stacks.Set((int)stackIdx, new Frame( + (int)m_interner.GetFrameIndex(stackIdx), + (int)m_interner.GetCallerIndex(stackIdx))); + } + + m_interner = null; // we are done with it. + } + } + } + + // TODO intern modules + public override void ForEach(Action callback) + { + for (int i = 0; i < m_samples.Count; i++) + callback(m_samples[i]); + } + public override bool SamplesImmutable { get { return true; } } + public override StackSourceCallStackIndex GetCallerIndex(StackSourceCallStackIndex callStackIndex) + { + return (StackSourceCallStackIndex)m_stacks[(int)callStackIndex].callerID; + } + public override StackSourceFrameIndex GetFrameIndex(StackSourceCallStackIndex callStackIndex) + { + return (StackSourceFrameIndex)m_stacks[(int)callStackIndex].frameID; + } + public override string GetFrameName(StackSourceFrameIndex frameIndex, bool verboseName) + { + string ret = m_frames.Get((int)frameIndex); + if (!verboseName) + { + var shortName = m_shortFrameNames.Get((int)frameIndex); + if (shortName == null) + { + shortName = ret; + // Strip off anything before the last \\ before the ! + var exclaimIdx = ret.IndexOf('!'); + if (0 < exclaimIdx) + { + // Becomes 0 if it fails, which is what we want. + var startIdx = ret.LastIndexOf('\\', exclaimIdx - 1, exclaimIdx - 1) + 1; + shortName = ret.Substring(startIdx); + } + m_shortFrameNames.Set((int)frameIndex, shortName); + } + ret = shortName; + } + return ret; + } + public override int CallStackIndexLimit { get { return m_stacks.Count; } } + public override int CallFrameIndexLimit { get { return m_frames.Count; } } + + public override int SampleIndexLimit + { + get { return m_samples.Count; } + } + public override double SampleTimeRelativeMSecLimit + { + get { return m_maxTime; } + } + public override StackSourceSample GetSampleByIndex(StackSourceSampleIndex sampleIndex) + { + return m_samples[(int)sampleIndex]; + } + + #region + // To avoid loading the System.Runtime.Serialization Dll which is only needed in the JSON case, we have + // the actual reference to that in this method that will not be called unless it is needed. + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + static private XmlReader GetJsonReader(Stream dataStream) + { + ////return JsonReaderWriterFactory.CreateJsonReader(dataStream, new XmlRead XmlDictionaryReaderQuotas()); + XmlReader reader = XmlReader.Create(dataStream); + return reader; + } + + private void Read(XmlReader reader) + { + Stack frameStack = null; + // We use the invarient culture, otherwise if we encode in france and decode + // in english we get parse errors (this happened!); + var invariantCulture = CultureInfo.InvariantCulture; + var inputDepth = reader.Depth; + var depthForSamples = 0; + while (reader.Read()) + { + PROCESS_NODE: + switch (reader.NodeType) + { + case XmlNodeType.Element: + if (reader.Name == "Sample") + { + var sample = new StackSourceSample(this); + sample.Metric = 1; + if (reader.MoveToFirstAttribute()) + { + do + { + if (reader.Name == "Time") + sample.TimeRelativeMSec = double.Parse(reader.ReadContentAsString(), invariantCulture); + else if (reader.Name == "StackID") + sample.StackIndex = (StackSourceCallStackIndex)reader.ReadContentAsInt(); + else if (reader.Name == "Metric") + sample.Metric = float.Parse(reader.ReadContentAsString(), invariantCulture); + } while (reader.MoveToNextAttribute()); + } + sample.SampleIndex = (StackSourceSampleIndex)m_curSample; + m_samples.Set(m_curSample++, sample); + if (sample.TimeRelativeMSec > m_maxTime) + m_maxTime = sample.TimeRelativeMSec; + + // See if there is a literal stack present as the body of + if (!reader.Read()) + break; + if (reader.NodeType != XmlNodeType.Text) + goto PROCESS_NODE; + + string rawStack = reader.Value.Trim(); + if (0 < rawStack.Length) + { + InitInterner(); + + StackSourceCallStackIndex stackIdx = StackSourceCallStackIndex.Invalid; + string[] frames = rawStack.Split('\n'); + for (int i = frames.Length - 1; 0 <= i; --i) + { + var frameIdx = m_interner.FrameIntern(frames[i].Trim()); + stackIdx = m_interner.CallStackIntern(frameIdx, stackIdx); + } + sample.StackIndex = stackIdx; + } + } + else if (reader.Name == "Stack") + { + int stackID = -1; + int callerID = -1; + int frameID = -1; + if (reader.MoveToFirstAttribute()) + { + do + { + if (reader.Name == "ID") + stackID = reader.ReadContentAsInt(); + else if (reader.Name == "FrameID") + frameID = reader.ReadContentAsInt(); + else if (reader.Name == "CallerID") + callerID = reader.ReadContentAsInt(); + } while (reader.MoveToNextAttribute()); + if (0 <= stackID) + m_stacks.Set(stackID, new Frame(frameID, callerID)); + } + + } + else if (reader.Name == "Frame") + { + var frameID = -1; + if (reader.MoveToFirstAttribute()) + { + do + { + if (reader.Name == "ID") + frameID = reader.ReadContentAsInt(); + } while (reader.MoveToNextAttribute()); + } + reader.Read(); // Move on to body of the element + var frameName = reader.ReadContentAsString(); + m_frames.Set(frameID, frameName); + } + else if (reader.Name == "Frames") + { + var count = reader.GetAttribute("Count"); + if (count != null && m_frames.Count == 0) + m_frames = new GrowableArray(int.Parse(count)); + } + else if (reader.Name == "Stacks") + { + var count = reader.GetAttribute("Count"); + if (count != null && m_stacks.Count == 0) + m_stacks = new GrowableArray(int.Parse(count)); +#if DEBUG + for (int i = 0; i < m_stacks.Count; i++) + m_stacks[i] = new Frame(int.MinValue, int.MinValue); +#endif + } + else if (reader.Name == "Samples") + { + var count = reader.GetAttribute("Count"); + if (count != null && m_samples.Count == 0) + m_samples = new GrowableArray(int.Parse(count)); + depthForSamples = reader.Depth; + } + // This is the logic for the JSON case. These are the anonymous object representing a sample. + else if (reader.Name == "item") + { + // THis is an item which is an element of the 'Samples' array. + if (reader.Depth == depthForSamples + 1) + { + var sample = new StackSourceSample(this); + sample.Metric = 1; + + InitInterner(); + int depthForSample = reader.Depth; + if (frameStack == null) + frameStack = new Stack(); + frameStack.Clear(); + + while (reader.Read()) + { + PROCESS_NODE_SAMPLE: + if (reader.Depth <= depthForSample) + break; + if (reader.NodeType == XmlNodeType.Element) + { + if (reader.Name == "Time") + { + sample.TimeRelativeMSec = reader.ReadElementContentAsDouble(); + goto PROCESS_NODE_SAMPLE; + } + else if (reader.Name == "Metric") + { + sample.Metric = (float) reader.ReadElementContentAsDouble(); + goto PROCESS_NODE_SAMPLE; + } + else if (reader.Name == "item") + { + // Item is a string under stack under the sample. + if (reader.Depth == depthForSample + 2) + { + frameStack.Push(reader.ReadElementContentAsString()); + goto PROCESS_NODE_SAMPLE; + } + } + } + } + + // Reverse the order of the frames in the stack. + sample.StackIndex = StackSourceCallStackIndex.Invalid; + while (0 < frameStack.Count) + { + var frameIdx = m_interner.FrameIntern(frameStack.Pop()); + sample.StackIndex = m_interner.CallStackIntern(frameIdx, sample.StackIndex); + } + + if (sample.TimeRelativeMSec > m_maxTime) + m_maxTime = sample.TimeRelativeMSec; + sample.SampleIndex = (StackSourceSampleIndex)m_curSample; + m_samples.Set(m_curSample++, sample); + } + } + break; + case XmlNodeType.EndElement: + if (reader.Depth <= inputDepth) + { + reader.Read(); + goto Done; + } + break; + case XmlNodeType.Text: + default: + break; + } + } + Done:; +#if DEBUG + for (int i = 0; i < m_samples.Count; i++) + Debug.Assert(m_samples[i] != null); + for (int i = 0; i < m_frames.Count; i++) + Debug.Assert(m_frames[i] != null); + for (int i = 0; i < m_stacks.Count; i++) + { + Debug.Assert(m_stacks[i].frameID >= 0); + Debug.Assert(m_stacks[i].callerID >= -1); + } +#endif + } + + void InitInterner() + { + if (m_interner == null) + { + m_interner = new StackSourceInterner(5000, 1000, 5, + (StackSourceFrameIndex)m_frames.Count, + (StackSourceCallStackIndex)m_stacks.Count); + } + } + + struct Frame + { + public Frame(int frameID, int callerID) { this.frameID = frameID; this.callerID = callerID; } + public int frameID; + public int callerID; + } + + GrowableArray m_shortFrameNames; + GrowableArray m_frames; + GrowableArray m_stacks; + GrowableArray m_samples; + StackSourceInterner m_interner; // If the XML has samples with explicit stacks, then this is non-null and used to intern them. + int m_curSample; + double m_maxTime; + #endregion + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/XmlUtilities.cs b/src/HtmlJs/PerfDataService/Models/XmlUtilities.cs new file mode 100644 index 000000000..d4885efc6 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/XmlUtilities.cs @@ -0,0 +1,139 @@ + // Copyright (c) Microsoft Corporation. All rights reserved. +// This file is best viewed using outline mode (Ctrl-M Ctrl-O) +// +// This program uses code hyperlinks available as part of the HyperAddin Visual Studio plug-in. +// It is available from http://www.codeplex.com/hyperAddin +// +using System; +using System.Diagnostics; +using System.Text; + +namespace Microsoft.Diagnostics.Utilities +{ + /// + /// The important thing about these general utilities is that they have only dependencies on mscorlib and + /// System (they can be used from anywhere). + /// +#if UTILITIES_PUBLIC + public +#endif + class XmlUtilities + { + /// + /// Given an XML element, remove the closing operator for it, so you can add new child elements to it by concatination. + /// + public static string OpenXmlElement(string xmlElement) + { + if (xmlElement.EndsWith("/>")) + return xmlElement.Substring(0, xmlElement.Length - 2) + ">"; + int endTagIndex = xmlElement.LastIndexOf(" 0); + while (endTagIndex > 0 && Char.IsWhiteSpace(xmlElement[endTagIndex - 1])) + --endTagIndex; + return xmlElement.Substring(0, endTagIndex); + } + + /// + /// Given an object 'obj' do ToString() on it, and then transform it so that all speical XML characters are escaped and return the result. + /// If 'quote' is true also surround the resulting object with double quotes. + /// + public static string XmlEscape(object obj, bool quote = false) + { + string str = obj.ToString(); + StringBuilder sb = null; + string entity = null; + int copied = 0; + for (int i = 0; i < str.Length; i++) + { + switch (str[i]) + { + case '&': + entity = "&"; + goto APPEND; + case '"': + entity = """; + goto APPEND; + case '\'': + entity = "'"; + goto APPEND; + case '<': + entity = "<"; + goto APPEND; + case '>': + entity = ">"; + goto APPEND; + APPEND: + { + if (sb == null) + { + sb = new StringBuilder(); + if (quote) + sb.Append('"'); + } + while (copied < i) + sb.Append(str[copied++]); + sb.Append(entity); + copied++; + } + break; + } + } + + if (sb != null) + { + while (copied < str.Length) + sb.Append(str[copied++]); + if (quote) + sb.Append('"'); + return sb.ToString(); + } + if (quote) + str = "\"" + str + "\""; + return str; + } + /// + /// A shortcut for XmlEscape(obj, true) (that is ToString the object, escape XML chars, and then surround with double quotes. + /// + public static string XmlQuote(object obj) + { + return XmlEscape(obj, true); + } + /// + /// Create a doubly quoted string for the decimal integer value + /// + public static string XmlQuote(int value) + { + return "\"" + value + "\""; + } + + /// + /// Create a double quoted string for the hexidecimal value of 'value' + /// + public static string XmlQuoteHex(uint value) + { + return "\"0x" + value.ToString("x").PadLeft(8, '0') + "\""; + } + /// + /// Create a double quoted string for the hexidecimal value of 'value' + /// + public static string XmlQuoteHex(ulong value) + { + return "\"0x" + value.ToString("x").PadLeft(8, '0') + "\""; + } + /// + /// Create a double quoted string for the hexidecimal value of 'value' + /// + public static string XmlQuoteHex(int value) + { + return XmlQuoteHex((uint)value); + } + /// + /// Create a double quoted string for the hexidecimal value of 'value' + /// + public static string XmlQuoteHex(long value) + { + return XmlQuoteHex((ulong)value); + } + } + +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Models/_README.cs b/src/HtmlJs/PerfDataService/Models/_README.cs new file mode 100644 index 000000000..eb1a76dbc --- /dev/null +++ b/src/HtmlJs/PerfDataService/Models/_README.cs @@ -0,0 +1,19 @@ +////using Utilities; + +// Welcome to the Utilities code base. This _README.cs file is your table of contents. +// +// You will notice that the code is littered with code: qualifiers. If you install the 'hyperAddin' for +// Visual Studio, these qualifiers turn into hyperlinks that allow easy cross references. The hyperAddin is +// available on http://toolbox/sites/HyperAddin/default.aspx inside microsoft or externally at +// http://www.codeplex.com/hyperAddin but the easiest way to install it (inside microsoft) is to do +// // +// ------------------------------------------------------------------------------------- +// General Utilities: +// +// * file:Command.cs - holds code:Command an independent class that knows how to launch threads and collect its +// output +// +// * file:CommandLineUtilities.cs holds useful utilities for parsing command lines. +// +// * file:ResourceUtilities.cs holds functions for getting at managed resources. Used to retrive +// UserGuide.htm. diff --git a/src/HtmlJs/PerfDataService/PerfDataService.csproj b/src/HtmlJs/PerfDataService/PerfDataService.csproj new file mode 100644 index 000000000..e33c49e93 --- /dev/null +++ b/src/HtmlJs/PerfDataService/PerfDataService.csproj @@ -0,0 +1,36 @@ + + + + net461 + true + true + PerfDataService + Exe + PerfDataService + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/HtmlJs/PerfDataService/Program.cs b/src/HtmlJs/PerfDataService/Program.cs new file mode 100644 index 000000000..980544b99 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Program.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Builder; + +namespace PerfDataService +{ + + public class Program + { + + public static void Main(string[] args) + { + var host = new WebHostBuilder() + .UseKestrel() + .UseUrls(AppSettings.targetUrl) + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseStartup() + .Build(); + + host.Run(); + } + } + + internal static class AppSettings + { + public static readonly String targetHost = "http://localhost"; + public static readonly int port = 5000; + public static readonly String targetUrl = targetHost + ":" + port.ToString(); + } +} diff --git a/src/HtmlJs/PerfDataService/Project_Readme.html b/src/HtmlJs/PerfDataService/Project_Readme.html new file mode 100644 index 000000000..bddf864a1 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Project_Readme.html @@ -0,0 +1,187 @@ + + + + + Welcome to ASP.NET Core + + + + + + + + + + diff --git a/src/HtmlJs/PerfDataService/Properties/launchSettings.json b/src/HtmlJs/PerfDataService/Properties/launchSettings.json new file mode 100644 index 000000000..da786022f --- /dev/null +++ b/src/HtmlJs/PerfDataService/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:6207/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "PerfDataService": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "http://localhost:5000/Views/static/index.html", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/StackViewerSession.cs b/src/HtmlJs/PerfDataService/StackViewerSession.cs new file mode 100644 index 000000000..a7cc697e8 --- /dev/null +++ b/src/HtmlJs/PerfDataService/StackViewerSession.cs @@ -0,0 +1,124 @@ +namespace PerfDataService +{ + using System; + using Diagnostics.Tracing.StackSources; + using Microsoft.Diagnostics.Symbols; + using Microsoft.Diagnostics.Tracing.Etlx; + using TraceDataPlugins; + + public class StackViewerSession + { + private ICallTreeDataProvider dataProvider; + + private readonly SymbolReader reader; + + public StackViewerSession(string filename, string stacktype, TraceLog tracelog, FilterParams filterParams, SymbolReader reader) + { + if (filename == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(filename)); + } + + if (stacktype == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(stacktype)); + } + + if (tracelog == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(tracelog)); + } + + if (filterParams == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(filterParams)); + } + + if (reader == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(reader)); + } + + this.Filename = filename; + this.StackType = stacktype; + this.FilterParams = filterParams; + this.TraceLog = tracelog; + this.reader = reader; + this.Pending = true; + } + + public TraceLog TraceLog { get; set; } + + public FilterParams FilterParams { get; set; } + + public string Filename { get; set; } + + public string StackType { get; set; } + + public bool Pending { get; set; } + + public void InitializeDataProvider() + { + if (string.Equals(this.StackType, "exceptions", StringComparison.OrdinalIgnoreCase)) + { + this.dataProvider = new CallTreeDataProvider(this.TraceLog, this.FilterParams, this.reader, new ExceptionTraceDataPlugin()); + } + + if (string.Equals(this.StackType, "cpu", StringComparison.OrdinalIgnoreCase)) + { + this.dataProvider = new CallTreeDataProvider(this.TraceLog, this.FilterParams, this.reader, new SampleProfileTraceDataPlugin()); + } + + if (string.Equals(this.StackType, "memory", StringComparison.OrdinalIgnoreCase)) + { + this.dataProvider = new CallTreeDataProvider(this.TraceLog, this.FilterParams, this.reader, new HeapAllocationTraceDataPlugin()); + } + + if (string.Equals(this.StackType, "contention", StringComparison.OrdinalIgnoreCase)) + { + this.dataProvider = new CallTreeDataProvider(this.TraceLog, this.FilterParams, this.reader, new ContentionTraceDataPlugin()); + } + } + + public ICallTreeDataProvider GetDataProvider() + { + return this.dataProvider; + } + + public override int GetHashCode() + { + unchecked + { + int hashCode = (this.FilterParams != null ? this.FilterParams.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ (this.Filename != null ? this.Filename.GetHashCode() : 0); + hashCode = (hashCode * 397) ^ (this.StackType != null ? this.StackType.GetHashCode() : 0); + return hashCode; + } + } + + public override bool Equals(object obj) + { + if (ReferenceEquals(null, obj)) + { + return false; + } + + if (ReferenceEquals(this, obj)) + { + return true; + } + + if (obj.GetType() != this.GetType()) + { + return false; + } + + return this.Equals((StackViewerSession)obj); + } + + protected bool Equals(StackViewerSession other) + { + return Equals(this.FilterParams, other.FilterParams) && string.Equals(this.Filename, other.Filename) && string.Equals(this.StackType, other.StackType); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/StackViewerSessionCache.cs b/src/HtmlJs/PerfDataService/StackViewerSessionCache.cs new file mode 100644 index 000000000..3a72f8b13 --- /dev/null +++ b/src/HtmlJs/PerfDataService/StackViewerSessionCache.cs @@ -0,0 +1,13 @@ +namespace PerfDataService +{ + using Microsoft.Extensions.Caching.Memory; + using Microsoft.Extensions.Options; + + public sealed class StackViewerSessionCache : MemoryCache + { + public StackViewerSessionCache(IOptions optionsAccessor) + : base(optionsAccessor) + { + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Startup.cs b/src/HtmlJs/PerfDataService/Startup.cs new file mode 100644 index 000000000..666b5d261 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Startup.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.AspNetCore.StaticFiles; +using Microsoft.Extensions.FileProviders; +using System.IO; + +namespace PerfDataService +{ + using Microsoft.AspNetCore.Hosting.Server.Features; + using Microsoft.AspNetCore.Http; + + public class Startup + { + public static IConfigurationRoot config; + + public Startup(IHostingEnvironment env) + { + var builder = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); + + //if (env.IsEnvironment("Development")) + //{ + // // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately. + // builder.AddApplicationInsightsSettings(developerMode: true); + //} + + builder.AddEnvironmentVariables(); + Configuration = builder.Build(); + config = Configuration; + } + + public IConfigurationRoot Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container + public void ConfigureServices(IServiceCollection services) + { + // Add framework services. + //services.AddApplicationInsightsTelemetry(Configuration); + services.AddMvc(); + services.AddMemoryCache(); + services.AddTransient(); + services.AddTransient(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + //services.AddSingleton(ServerAddressesFeature); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + loggerFactory.AddConsole(Configuration.GetSection("Logging")); + loggerFactory.AddDebug(); + + //app.UseApplicationInsightsRequestTelemetry(); + + //app.UseApplicationInsightsExceptionTelemetry(); + + app.UseMvc(); + + app.UseStaticFiles(); + + // + // Let the server know that /Views should use the Views folder of our project + // + app.UseStaticFiles(new StaticFileOptions() + { + FileProvider = new PhysicalFileProvider( + Path.Combine(Directory.GetCurrentDirectory(), @"Views")), + RequestPath = new Microsoft.AspNetCore.Http.PathString("/Views") + }); + } + } +} diff --git a/src/HtmlJs/PerfDataService/TemporaryPathProvider.cs b/src/HtmlJs/PerfDataService/TemporaryPathProvider.cs new file mode 100644 index 000000000..0b0fd228b --- /dev/null +++ b/src/HtmlJs/PerfDataService/TemporaryPathProvider.cs @@ -0,0 +1,7 @@ +namespace PerfDataService +{ + public class TemporaryPathProvider : ITemporaryPathProvider + { + public string Path => @""; // TODO: make this config driven + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/ThrowHelper.cs b/src/HtmlJs/PerfDataService/ThrowHelper.cs new file mode 100644 index 000000000..514e4631e --- /dev/null +++ b/src/HtmlJs/PerfDataService/ThrowHelper.cs @@ -0,0 +1,14 @@ +namespace PerfDataService +{ + using System; + using System.Runtime.CompilerServices; + + internal static class ThrowHelper + { + [MethodImpl(MethodImplOptions.NoInlining)] + internal static void ThrowArgumentNullException(string argument) + { + throw new ArgumentNullException(argument); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/TraceDataPlugins/ContentionTraceDataPlugin.cs b/src/HtmlJs/PerfDataService/TraceDataPlugins/ContentionTraceDataPlugin.cs new file mode 100644 index 000000000..8b7a99056 --- /dev/null +++ b/src/HtmlJs/PerfDataService/TraceDataPlugins/ContentionTraceDataPlugin.cs @@ -0,0 +1,49 @@ +namespace PerfDataService.TraceDataPlugins +{ + using System; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Diagnostics.Tracing.Parsers; + using Microsoft.Diagnostics.Tracing.Parsers.Clr; + using Microsoft.Diagnostics.Tracing.Stacks; + + public sealed class ContentionTraceDataPlugin : ITraceDataPlugin + { + public string Type => "Contention"; + + public Func SummaryPredicate => SummaryPredicateFunc; + + public StackSource GetStackSource(TraceEvents events) + { + if (events == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(events)); + } + + var stackSource = new MutableTraceEventStackSource(events.Log) { ShowUnknownAddresses = true }; + var eventSource = events.GetSource(); + + var sample = new StackSourceSample(stackSource); + + var clrTraceEventParser = new ClrTraceEventParser(eventSource); + + clrTraceEventParser.ContentionStart += delegate (ContentionTraceData data) + { + sample.Metric = 1; + sample.TimeRelativeMSec = data.TimeStampRelativeMSec; + + string nodeName = data.ContentionFlags == ContentionFlags.Native ? "Native Contention" : "Managed Contention"; + var nodeIndex = stackSource.Interner.FrameIntern(nodeName); + sample.StackIndex = stackSource.Interner.CallStackIntern(nodeIndex, stackSource.GetCallStack(data.CallStackIndex(), data)); + stackSource.AddSample(sample); + }; + + eventSource.Process(); + return stackSource; + } + + private static bool SummaryPredicateFunc(CallTreeNodeBase node) + { + return node.Name.StartsWith("Managed Contention") || node.Name.StartsWith("Native Contention"); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/TraceDataPlugins/ExceptionTraceDataPlugin.cs b/src/HtmlJs/PerfDataService/TraceDataPlugins/ExceptionTraceDataPlugin.cs new file mode 100644 index 000000000..ef2d29468 --- /dev/null +++ b/src/HtmlJs/PerfDataService/TraceDataPlugins/ExceptionTraceDataPlugin.cs @@ -0,0 +1,50 @@ +namespace PerfDataService.TraceDataPlugins +{ + using System; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Diagnostics.Tracing.Parsers; + using Microsoft.Diagnostics.Tracing.Parsers.Clr; + using Microsoft.Diagnostics.Tracing.Stacks; + + public sealed class ExceptionTraceDataPlugin : ITraceDataPlugin + { + public string Type => "Exceptions"; + + public Func SummaryPredicate => SummaryPredicateFunc; + + public StackSource GetStackSource(TraceEvents events) + { + if (events == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(events)); + } + + var stackSource = new MutableTraceEventStackSource(events.Log) { ShowUnknownAddresses = true }; + var eventSource = events.GetSource(); + + var sample = new StackSourceSample(stackSource); + + var clrTraceEventParser = new ClrTraceEventParser(eventSource); + + clrTraceEventParser.ExceptionStart += delegate (ExceptionTraceData data) + { + sample.Metric = 1; + sample.TimeRelativeMSec = data.TimeStampRelativeMSec; + + // Create a call stack that ends with the 'throw' + var nodeName = "Throw(" + data.ExceptionType + ") " + data.ExceptionMessage; + var nodeIndex = stackSource.Interner.FrameIntern(nodeName); + sample.StackIndex = stackSource.Interner.CallStackIntern(nodeIndex, stackSource.GetCallStack(data.CallStackIndex(), data)); + stackSource.AddSample(sample); + }; + + eventSource.Process(); + return stackSource; + } + + private static bool SummaryPredicateFunc(CallTreeNodeBase node) + { + return node.Name.StartsWith("Throw("); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/TraceDataPlugins/HeapAllocationTraceDataPlugin.cs b/src/HtmlJs/PerfDataService/TraceDataPlugins/HeapAllocationTraceDataPlugin.cs new file mode 100644 index 000000000..8cb2b10ed --- /dev/null +++ b/src/HtmlJs/PerfDataService/TraceDataPlugins/HeapAllocationTraceDataPlugin.cs @@ -0,0 +1,54 @@ +namespace PerfDataService.TraceDataPlugins +{ + using System; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Diagnostics.Tracing.Parsers; + using Microsoft.Diagnostics.Tracing.Parsers.Clr; + using Microsoft.Diagnostics.Tracing.Stacks; + + public sealed class HeapAllocationTraceDataPlugin : ITraceDataPlugin + { + public string Type => "Memory"; + + public Func SummaryPredicate => SummaryPredicateFunc; + + public StackSource GetStackSource(TraceEvents events) + { + if (events == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(events)); + } + + var stackSource = new MutableTraceEventStackSource(events.Log); + var eventSource = events.GetSource(); + + var sample = new StackSourceSample(stackSource); + + var clrTraceEventParser = new ClrTraceEventParser(eventSource); + + clrTraceEventParser.GCAllocationTick += delegate (GCAllocationTickTraceData data) + { + var size = data.AllocationAmount64; + sample.Metric = size; + sample.Count = 1; + sample.TimeRelativeMSec = data.TimeStampRelativeMSec; + + sample.StackIndex = stackSource.Interner.CallStackIntern(stackSource.Interner.FrameIntern("Type " + data.TypeName), stackSource.GetCallStack(data.CallStackIndex(), data)); + if (data.AllocationKind == GCAllocationKind.Large) + { + sample.StackIndex = stackSource.Interner.CallStackIntern(stackSource.Interner.FrameIntern("LargeObject"), sample.StackIndex); + } + + stackSource.AddSample(sample); + }; + + eventSource.Process(); + return stackSource; + } + + private static bool SummaryPredicateFunc(CallTreeNodeBase node) + { + return node.Name.StartsWith("Type "); + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/TraceDataPlugins/SampleProfileTraceDataPlugin.cs b/src/HtmlJs/PerfDataService/TraceDataPlugins/SampleProfileTraceDataPlugin.cs new file mode 100644 index 000000000..f185c2e6d --- /dev/null +++ b/src/HtmlJs/PerfDataService/TraceDataPlugins/SampleProfileTraceDataPlugin.cs @@ -0,0 +1,47 @@ +namespace PerfDataService.TraceDataPlugins +{ + using System; + using Microsoft.Diagnostics.Tracing.Etlx; + using Microsoft.Diagnostics.Tracing.Parsers; + using Microsoft.Diagnostics.Tracing.Parsers.Kernel; + using Microsoft.Diagnostics.Tracing.Stacks; + + public sealed class SampleProfileTraceDataPlugin : ITraceDataPlugin + { + public string Type => "CPU"; + + public Func SummaryPredicate => SummaryPredicateFunc; + + public StackSource GetStackSource(TraceEvents events) + { + if (events == null) + { + ThrowHelper.ThrowArgumentNullException(nameof(events)); + } + + TraceLog log = events.Log; + var stackSource = new MutableTraceEventStackSource(log) { /* ShowUnknownAddresses = true */ }; + var eventSource = events.GetSource(); + + var sample = new StackSourceSample(stackSource); + + var kernelTraceEventParser = new KernelTraceEventParser(eventSource); + + kernelTraceEventParser.PerfInfoSample += delegate (SampledProfileTraceData data) + { + sample.Metric = events.Log.SampleProfileInterval.Milliseconds; + sample.TimeRelativeMSec = data.TimeStampRelativeMSec; + sample.StackIndex = stackSource.GetCallStack(data.CallStackIndex(), data); + stackSource.AddSample(sample); + }; + + eventSource.Process(); + return stackSource; + } + + private static bool SummaryPredicateFunc(CallTreeNodeBase node) + { + return true; + } + } +} \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Views/js/homeDelegate.js b/src/HtmlJs/PerfDataService/Views/js/homeDelegate.js new file mode 100644 index 000000000..85aff0a10 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Views/js/homeDelegate.js @@ -0,0 +1,86 @@ +function HomeDelegate() { + self = this; + self.domain = appSettings.targetUrl; + self.treeDivID = "#treeContainer"; + + self.log = function log(status) { + $("#statusBar span").text(status); + }; + + self.changeDirectoryTreePath = function changeDirectoryTreePath(path="") { + // Passing path="" will cause the server to respond with the default path in appsettings.json + url = self.domain + "/api/data/open?path=" + path; + $.get(url, function (response, status) { + json = JSON.parse(response); + self.log("GET " + url + " Complete"); + createJsTreeFromJSON(json); + }); + }; + + + function createJsTreeFromJSON(JSONTree) { + // In case there is a tree already loaded in the div, destroy it + $(self.treeDivID).jstree("destroy"); + + // Load the JSON data + $(self.treeDivID).jstree({ + 'core': { + 'check_callback': true, + 'data': JSONTree.children + } + }); + + // Add JsTree event listeners (handles user interactions with the tree) + addJsTreeEventListeners(); + + self.log("Completed: Directory Tree Path Update"); + }; + + + function addJsTreeEventListeners() { + // Directory/File Click Event + $(self.treeDivID).on('activate_node.jstree', function (event, node) { + nodeObject = node.node.original; // JSTree has a node within a node.. Weird. + + if (nodeObject.type == "dir") { + self.changeDirectoryTreePath(nodeObject.path); + } else if (nodeObject.type == "file") { + var parent = $(self.treeDivID).jstree('get_selected'); + var isLeaf = $(self.treeDivID).jstree().is_leaf(parent); + if (!isLeaf) { return; } + + // Get "children" (e.g. CPU Stacks, etc.) of 'path' to .etl or etl.zip file + url = self.domain + "/api/data/open?path=" + nodeObject.path; + $.get(url, function (response, status) { + json = JSON.parse(response); + + // Place each child under its parent .etl or .etl.zip file + for (var i = 0; i < json.children.length; ++i) { + console.log(i); + var newNode = json.children[i]; + var newNodeId = $(self.treeDivID).jstree().create_node(parent, newNode, "last"); + $(self.treeDivID).jstree().open_node(parent); + } + }); + } else if (nodeObject.type == "stacks") { + self.openStackWindow(nodeObject.path, nodeObject.stackType); + } + }); + } + + self.openStackWindow = function openStackWindow(filename, stackType) { + // Attach data to current (parent) window so that the new window can access it on load (via window.opener.summaryStackData) + window.domain = self.domain; + window.filename = filename; + window.stackType = stackType; + + // Create and open the new window + var stackViewerWindow = window.open(self.domain + "/Views/static/stackviewer.html"); + + // Log the completed work out + self.log("Completed: Open " + stackType + " Stack Summary at filepath " + filename); + } + +} + +homeDelegate = new HomeDelegate(); diff --git a/src/HtmlJs/PerfDataService/Views/js/settings.js b/src/HtmlJs/PerfDataService/Views/js/settings.js new file mode 100644 index 000000000..91d06efd0 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Views/js/settings.js @@ -0,0 +1,5 @@ +var appSettings = {} + +appSettings.targetHost = "http://localhost"; +appSettings.port = 5000; +appSettings.targetUrl = appSettings.targetHost + ":" + appSettings.port; diff --git a/src/HtmlJs/PerfDataService/Views/js/stackDelegate.js b/src/HtmlJs/PerfDataService/Views/js/stackDelegate.js new file mode 100644 index 000000000..6746b95de --- /dev/null +++ b/src/HtmlJs/PerfDataService/Views/js/stackDelegate.js @@ -0,0 +1,194 @@ +function StackDelegate(domain, filename, stackType, summaryStackData) { + var self = this; + + // These properties define the state of the stackDelegate + self.filename = filename; + self.stackType = stackType; + self.summaryStackData = summaryStackData; + self.domain = domain; + self.focusNode = null; + self.filters = ""; + self.numNodes = 1000; + self.selectedCell = null; + + + // Bottom status bar logger + self.log = function log(status) { + $("#statusBar span").text(status); + }; + + + // This is called when the user double clicks on a node in the by-name-list, callersTree, or CalleesTree + self.setFocusNode = function setFocusNode(node) { + // Get the td element from the name column of this row + var child = node.row[0].children[0]; + + // Remove the span indenter tag, if there is one + $(child).find('span').remove(); + $(node).attr("id", $(child).text().trim()); // Get the name text + + stackDelegate.focusNode = node; + } + + + self.getFocusNode = function getFocusNode() { + return self.focusNode; + } + + + // This is called when the user single clicks on any cell + self.setSelectedCell = function setSelectedCell(cell) { + if (cell == null || cell === undefined) { return; } + + if (!cell.hasOwnProperty("selected") || cell.selected == false) { // If cell is unselected + var oldCell = self.selectedCell; + changeCellState(oldCell, false); + changeCellState(cell, true); // Change to selected state + self.selectedCell = cell; + } else if (cell.hasOwnProperty("selected") && cell.selected == true) { + if (self.selectedCell != null && $(cell)[0] == $(self.selectedCell)[0]) { return; } + changeCellState(cell, false); + self.clearSelectedCell(); + } + } + + // Helper function to setSelectedCell + function changeCellState(cell, selected) { + if (cell == null) { return; } + + if (selected) { + $(cell).addClass("selected"); // This causes the styling to show up (look in stackviewer.css for more) + cell.selected = true; + } else { + $(cell).removeClass("selected"); // This causes the styling to return to normal (look in stackviewer.css for more) + cell.selected = false; + } + } + + self.getSelectedCell = function getSelectedCell() { + return self.selectedCell; + } + + self.clearSelectedCell = function clearSelectedCell() { + if (self.selectedCell == null) { return; } + changeCellState(self.selectedCell, false); + } + + + // Returns the summary stack based on the properties set in this stackDelegate + self.getSummaryData = function getSummaryData(callback, options={}) { + var url = self.domain + "/api/data/stackviewer/summary?filename=" + self.filename + + "&stacktype=" + self.stackType + + "&numNodes=" + self.numNodes + + "&" + self.filters; + // If the caller indicated that the service should subsequently perform a search on this stack + if ("includeSearch" in options) { url = url + "&find=" + $("#by-name .find").val(); } + + self.log("Fetching Summary Data for " + self.filename); + $.get(url, function (response, status) { + json = JSON.parse(response); + self.summaryStackData = json; + + self.log("Completed: Get Summary Data for " + self.filename); + + callback(json); + }); + } + + + // Returns a single node + self.getNode = function getNode(name, callback) { + var url = self.domain + "/api/data/stackviewer/node?filename=" + self.filename + + "&stacktype=" + self.stackType + + "&name=" + name; + + self.log("Fetching Node Data for " + name); + $.get(url, function (response, status) { + json = JSON.parse(response); + + self.log("Completed: Get Node Data for " + name); + + callback(json); + }); + } + + + // Returns the callers data stack based on the state of the properties in this stackDelegate + self.getCallersData = function getCallersData(callback, options={}) { + if (self.focusNode == null && !("overrideFocusNode" in options)) { + throw "Focus node not selected"; + } + + // overrideFocusNode is used when loading the ROOT for the CallTree table and by onTreeNodeExpand(), + // both in stackviewer.html + var nodeString = "overrideFocusNode" in options ? options["overrideFocusNode"] : self.focusNode.id; + var nameAndPath = nodeString.split(/\/(.+)?/); // Split on FIRST occurrence of '/' + var name = nameAndPath[0]; + var path = nameAndPath.length > 1 ? nameAndPath[1] : ""; + + var url = self.domain + "/api/data/stackviewer/callertree?filename=" + self.filename + + "&name=" + name + + "&stacktype=" + self.stackType + + "&path=" + path + + "&" + self.filters; + // If the caller indicated that the service should subsequently perform a search on this stack + if ("includeSearch" in options) { url = url + "&find=" + $("#callers .find").val(); } + + path = path != "" && path != undefined ? "/" + path : path; + self.log("Fetching Callers Data for " + name + path); + + $.get(url, function (response, status) { + json = JSON.parse(response); + + self.log("Completed: Get Callers for " + name + path); + + callback(json, status); + }); + } + + + // Returns the callers data stack based on the state of the properties in this stackDelegate + self.getCalleesData = function getCalleesData(callback, options={}) { + if (self.focusNode == null && !("overrideFocusNode" in options)) { + throw "Focus node not selected"; + } + + // overrideFocusNode is used when loading the ROOT for the CallTree table and by onTreeNodeExpand(), + // both in stackviewer.html + var nodeString = "overrideFocusNode" in options ? options["overrideFocusNode"] : self.focusNode.id; + var nameAndPath = nodeString.split(/\/(.+)?/); // Split on FIRST occurrence of '/' + var name = nameAndPath[0]; + var path = nameAndPath.length > 1 ? nameAndPath[1] : ""; + + var url = self.domain + "/api/data/stackviewer/calleetree?filename=" + self.filename + + "&name=" + name + + "&stacktype=" + self.stackType + + "&path=" + path + + "&" + self.filters; + // If the caller indicated that the service should subsequently perform a search on this stack + if ("includeSearch" in options && "call-treeTree" in options) { + url = url + "&find=" + $("#call-tree .find").val(); + } else if ("includeSearch" in options) { + url = url + "&find=" + $("#callees .find").val(); + } + + path = path != "" && path != undefined ? "/" + path : path; + self.log("Fetching Callees Data for " + name + path); + + $.get(url, function (response, status) { + json = JSON.parse(response); + + self.log("Completed: Get Callees for " + name + path); + + callback(json, status); + }); + } +} + + +// This means the StackDelegate constructor gets called when stackviewer.html loads this javascript file +// The parameters passed to the constructor are grabbed off of the window/tab (index.html) that opened this stack page up +var stackDelegate = new StackDelegate(window.opener.domain, + window.opener.filename, + window.opener.stackType, + window.opener.summaryStackData); diff --git a/src/HtmlJs/PerfDataService/Views/libraries/README.txt b/src/HtmlJs/PerfDataService/Views/libraries/README.txt new file mode 100644 index 000000000..b37086571 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Views/libraries/README.txt @@ -0,0 +1 @@ +The libraries directory contains libraries and other resources that are not node modules. diff --git a/src/HtmlJs/PerfDataService/Views/libraries/bluebird.min.js b/src/HtmlJs/PerfDataService/Views/libraries/bluebird.min.js new file mode 100644 index 000000000..86146d3ce --- /dev/null +++ b/src/HtmlJs/PerfDataService/Views/libraries/bluebird.min.js @@ -0,0 +1,31 @@ +/* @preserve + * The MIT License (MIT) + * + * Copyright (c) 2013-2015 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +/** + * bluebird build version 3.4.1 + * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each +*/ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,n;return function r(t,e,n){function i(s,a){if(!e[s]){if(!t[s]){var c="function"==typeof _dereq_&&_dereq_;if(!a&&c)return c(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=e[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return i(n?n:e)},u,u.exports,r,t,e,n)}return e[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s0;){var e=t.shift();if("function"==typeof e){var n=t.shift(),r=t.shift();e.call(n,r)}else e._settlePromises()}},r.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},e.exports=r,e.exports.firstLineError=a},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0===(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var l=n(o),u=new t(e);u._propagateFrom(this,1);var p=this._target();if(u._setBoundTo(l),l instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:p,bindingPromise:l};p._then(e,s,void 0,u,h),l._then(a,c,void 0,u,h),u._setOnCancel(l)}else u._resolveCallback(p);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152===(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";function r(){try{Promise===o&&(Promise=i)}catch(t){}return o}var i;"undefined"!=typeof Promise&&(i=Promise);var o=t("./promise")();o.noConflict=r,e.exports=o},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var i=r(null),o=r(null);i[" size"]=o[" size"]=0}e.exports=function(e){function n(t,n){var r;if(null!=t&&(r=t[n]),"function"!=typeof r){var i="Object "+a.classString(t)+" has no method '"+a.toString(n)+"'";throw new e.TypeError(i)}return r}function r(t){var e=this.pop(),r=n(t,e);return r.apply(t,this)}function i(t){return t[this]}function o(t){var e=+this;return 0>e&&(e=Math.max(0,e+t.length)),t[e]}var s,a=t("./util"),c=a.canEvaluate;a.isIdentifier;e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=o;else if(c){var r=s(t);e=null!==r?r:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,c=e._async;e.prototype["break"]=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t.isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n.isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),this._enoughBranchesHaveCancelled()?(this._invokeOnCancel(),!0):!1)},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this.isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n=0?o[t]:void 0}var i=!1,o=[];return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},e.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,o.push(this._trace))},e.prototype._popContext=function(){if(void 0!==this._trace){var t=o.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},e.CapturedTrace=null,e.create=n,e.deactivateLongStackTraces=function(){},e.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,c=t.prototype._promiseCreated;e.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=c,i=!1},i=!0,t.prototype._pushContext=e.prototype._pushContext,t.prototype._popContext=e.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},e}},{}],9:[function(t,e,n){"use strict";e.exports=function(e,n){function r(t,e){return{promise:e}}function i(){return!1}function o(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+H.toString(t));r._attachCancellationCallback(t)})}catch(i){return i}}function s(t){if(!this.isCancellable())return this;var e=this._onCancel();void 0!==e?H.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function a(){return this._onCancelField}function c(t){this._onCancelField=t}function l(){this._cancellationParent=void 0,this._onCancelField=void 0}function u(t,e){if(0!==(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function p(t,e){0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function h(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function f(){this._trace=new S(this._peekContext())}function _(t,e){if(N(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=j(t);H.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),H.notEnumerableProp(t,"__stackCleaned__",!0)}}}function d(t,e,n,r,i){if(void 0===t&&null!==e&&z){if(void 0!==i&&i._returnedNonUndefined())return;if(0===(65535&r._bitField))return;n&&(n+=" ");var o="a promise was created in a "+n+"handler but was not returned from it";r._warn(o,!0,e)}}function v(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),y(n)}function y(t,n,r){if(rt.warnings){var i,o=new L(t);if(n)r._attachExtraTrace(o);else if(rt.longStackTraces&&(i=e._peekContext()))i.attachExtraTrace(o);else{var s=j(o);o.stack=s.message+"\n"+s.stack.join("\n")}Y("warning",o)||k(o,"",!0)}}function m(t,e){for(var n=0;n=0;--a)if(r[a]===o){s=a;break}for(var a=s;a>=0;--a){var c=r[a];if(e[i]!==c)break;e.pop(),i--}e=r}}function w(t){for(var e=[],n=0;n0&&(e=e.slice(n)),e}function j(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?C(t):[" (No stack trace)"],{message:n,stack:w(e)}}function k(t,e,n){if("undefined"!=typeof console){var r;if(H.isObject(t)){var i=t.stack;r=e+M(i,t)}else r=e+String(t);"function"==typeof D?D(r,n):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}}function E(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(o){I.throwLater(o)}"unhandledRejection"===t?Y(t,n,r)||i||k(n,"Unhandled rejection "):Y(t,r)}function F(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():H.toString(t);var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(e))try{var r=JSON.stringify(t);e=r}catch(i){}0===e.length&&(e="(empty array)")}return"(<"+x(e)+">, no stack trace)"}function x(t){var e=41;return t.lengths||0>a||!n||!r||n!==r||s>=a||(tt=function(t){if(U.test(t))return!0;var e=P(t);return e&&e.fileName===n&&s<=e.line&&e.line<=a?!0:!1})}}function S(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);nt(this,S),e>32&&this.uncycle()}var O,A,D,V=e._getDomain,I=e._async,L=t("./errors").Warning,H=t("./util"),N=H.canAttachTrace,U=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,B=null,M=null,q=!1,Q=!(0==H.env("BLUEBIRD_DEBUG")||!H.env("BLUEBIRD_DEBUG")&&"development"!==H.env("NODE_ENV")),$=!(0==H.env("BLUEBIRD_WARNINGS")||!Q&&!H.env("BLUEBIRD_WARNINGS")),G=!(0==H.env("BLUEBIRD_LONG_STACK_TRACES")||!Q&&!H.env("BLUEBIRD_LONG_STACK_TRACES")),z=0!=H.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&($||!!H.env("BLUEBIRD_W_FORGOTTEN_RETURN"));e.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},e.prototype._ensurePossibleRejectionHandled=function(){0===(524288&this._bitField)&&(this._setRejectionIsUnhandled(),I.invokeLater(this._notifyUnhandledRejection,this,void 0))},e.prototype._notifyUnhandledRejectionIsHandled=function(){E("rejectionHandled",O,void 0,this)},e.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},e.prototype._returnedNonUndefined=function(){return 0!==(268435456&this._bitField)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),E("unhandledRejection",A,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return y(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var e=V();A="function"==typeof t?null===e?t:e.bind(t):void 0},e.onUnhandledRejectionHandled=function(t){var e=V();O="function"==typeof t?null===e?t:e.bind(t):void 0};var X=function(){};e.longStackTraces=function(){if(I.haveItemsQueued()&&!rt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!rt.longStackTraces&&T()){var t=e.prototype._captureStackTrace,r=e.prototype._attachExtraTrace;rt.longStackTraces=!0,X=function(){if(I.haveItemsQueued()&&!rt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=r,n.deactivateLongStackTraces(),I.enableTrampoline(),rt.longStackTraces=!1},e.prototype._captureStackTrace=f,e.prototype._attachExtraTrace=_,n.activateLongStackTraces(),I.disableTrampolineIfNecessary()}},e.hasLongStackTraces=function(){return rt.longStackTraces&&T()};var W=function(){try{var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),H.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!H.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),K=function(){return H.isNode?function(){return process.emit.apply(process,arguments)}:H.global?function(t){var e="on"+t.toLowerCase(),n=H.global[e];return n?(n.apply(H.global,[].slice.call(arguments,1)),!0):!1}:function(){return!1}}(),J={promiseCreated:r,promiseFulfilled:r,promiseRejected:r,promiseResolved:r,promiseCancelled:r,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:r},Y=function(t){var e=!1;try{e=K.apply(null,arguments)}catch(n){I.throwLater(n),e=!0}var r=!1;try{r=W(t,J[t].apply(null,arguments))}catch(n){I.throwLater(n),r=!0}return r||e};e.config=function(t){if(t=Object(t),"longStackTraces"in t&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&X()),"warnings"in t){var n=t.warnings;rt.warnings=!!n,z=rt.warnings,H.isObject(n)&&"wForgottenReturn"in n&&(z=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!rt.cancellation){if(I.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=l,e.prototype._propagateFrom=u,e.prototype._onCancel=a,e.prototype._setOnCancel=c,e.prototype._attachCancellationCallback=s,e.prototype._execute=o,Z=u,rt.cancellation=!0}"monitoring"in t&&(t.monitoring&&!rt.monitoring?(rt.monitoring=!0,e.prototype._fireEvent=Y):!t.monitoring&&rt.monitoring&&(rt.monitoring=!1,e.prototype._fireEvent=i))},e.prototype._fireEvent=i,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(r){return r}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var Z=p,tt=function(){return!1},et=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;H.inherits(S,Error),n.CapturedTrace=S,S.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;t=this._length=r;for(var r=t-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;t>r;++r){var s=e[r].stack,a=n[s];if(void 0!==a&&a!==r){a>0&&(e[a-1]._parent=void 0,e[a-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;t-1>a?(c._parent=e[a+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var l=c._length+1,u=r-2;u>=0;--u)e[u]._length=l,l++;return}}}},S.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=j(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(w(i.stack.split("\n"))),i=i._parent;b(r),g(r),H.notEnumerableProp(t,"stack",m(n,r)),H.notEnumerableProp(t,"__stackCleaned__",!0)}};var nt=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():F(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,B=t,M=e;var n=Error.captureStackTrace;return tt=function(t){return U.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return B=/@/,M=e,q=!0,function(t){t.stack=(new Error).stack};var i;try{throw new Error}catch(o){i="stack"in o}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(M=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?F(e):e.toString()},null):(B=t,M=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}([]);"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(D=function(t){console.warn(t)},H.isNode&&process.stderr.isTTY?D=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:H.isNode||"string"!=typeof(new Error).stack||(D=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var rt={warnings:$,longStackTraces:!1,cancellation:!1,monitoring:!1};return G&&e.longStackTraces(),{longStackTraces:function(){return rt.longStackTraces},warnings:function(){return rt.warnings},cancellation:function(){return rt.cancellation},monitoring:function(){return rt.monitoring},propagateFromFunction:function(){return Z},boundValueFunction:function(){return h},checkForgottenReturns:d,setBounds:R,warn:y,deprecated:v,CapturedTrace:S,fireDomEvent:W,fireGlobalEvent:K}}},{"./errors":12,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype["return"]=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1],r=function(){throw e};return this.caught(t,r)},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];r instanceof t&&r.suppressUnhandledRejections();var i=function(){return r};return this.caught(n,i)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){function n(){return o(this)}function r(t,n){return i(t,n,e,e)}var i=t.reduce,o=t.all;t.prototype.each=function(t){return this.mapSeries(t)._then(n,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return i(this,t,e,e)},t.each=function(t,e){return r(t,e)._then(n,void 0,void 0,t,void 0)},t.mapSeries=r}},{}],12:[function(t,e,n){"use strict";function r(t,e){function n(r){return this instanceof n?(p(this,"message","string"==typeof r?r:e),p(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return u(n,Error),n}function i(t){return this instanceof i?(p(this,"name","OperationalError"),p(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(p(this,"message",t.message),p(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new i(t)}var o,s,a=t("./es5"),c=a.freeze,l=t("./util"),u=l.inherits,p=l.notEnumerableProp,h=r("Warning","warning"),f=r("CancellationError","cancellation error"),_=r("TimeoutError","timeout error"),d=r("AggregateError","aggregate error");try{o=TypeError,s=RangeError}catch(v){o=r("TypeError","type error"),s=r("RangeError","range error")}for(var y="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),m=0;m1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0):!1}function s(){return c.call(this,this.promise._target()._settledValue())}function a(t){return o(this,t)?void 0:(p.e=t,p)}function c(t){var r=this.promise,c=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?c.call(r._boundValue()):c.call(r._boundValue(),t);if(void 0!==l){r._setReturnedNonUndefined();var h=n(l,r);if(h instanceof e){if(null!=this.cancelPromise){if(h.isCancelled()){var f=new u("late cancellation observer");return r._attachExtraTrace(f),p.e=f,p}h.isPending()&&h._attachCancellationCallback(new i(this))}return h._then(s,a,void 0,this,void 0)}}}return r.isRejected()?(o(this),p.e=t,p):(o(this),t)}var l=t("./util"),u=e.CancellationError,p=l.errorObj;return r.prototype.isFinallyHandler=function(){return 0===this.type},i.prototype._resultCancelled=function(){o(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,i){return"function"!=typeof t?this.then():this._then(n,i,void 0,new r(this,e,t),void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThrough(t,0,c,c)},e.prototype.tap=function(t){return this._passThrough(t,1,c)},r}},{"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r){for(var o=0;o0&&"function"==typeof arguments[e]){t=arguments[e];var r}var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var i=l();this._callback=null===i?e:i.bind(e), +this._preservedValues=r===o?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=n>=1?[]:f,this._init$(void 0,-2)}function c(t,n,i,o){if("function"!=typeof n)return r("expecting a function but got "+u.classString(n));var s=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+u.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+u.classString(i.concurrency)));s=i.concurrency}return s="number"==typeof s&&isFinite(s)&&s>=1?s:0,new a(t,n,s,o).promise()}var l=e._getDomain,u=t("./util"),p=u.tryCatch,h=u.errorObj,f=[];u.inherits(a,n),a.prototype._init=function(){},a.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),a=this._preservedValues,c=this._limit;if(0>n){if(n=-1*n-1,r[n]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==a&&(a[n]=t);var l=this._promise,u=this._callback,f=l._boundValue();l._pushContext();var _=p(u).call(f,t,n,o),d=l._popContext();if(s.checkForgottenReturns(_,d,null!==a?"Promise.filter":"Promise.map",l),_===h)return this._reject(_.e),!0;var v=i(_,this._promise);if(v instanceof e){v=v._target();var y=v._bitField;if(0===(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0===(33554432&y))return 0!==(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);_=v._value()}r[n]=_}var m=++this._totalResolved;return m>=o?(null!==a?this._filter(r,a):this._resolve(r),!0):!1},a.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlighto;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},a.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return c(this,t,e,null)},e.map=function(t,e,n,r){return c(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var s=t("./util"),a=s.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+s.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=a(t).apply(this,arguments),s=r._popContext();return o.checkForgottenReturns(i,s,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e["try"]=function(t){if("function"!=typeof t)return i("expecting a function but got "+s.classString(t));var r=new e(n);r._captureStackTrace(),r._pushContext();var c;if(arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var l=arguments[1],u=arguments[2];c=s.isArray(l)?a(t).apply(u,l):a(t).call(u,l)}else c=a(t)();var p=r._popContext();return o.checkForgottenReturns(c,p,"Promise.try",r),r._resolveFromSyncValue(c),r},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";function r(t){return t instanceof Error&&u.getPrototypeOf(t)===Error.prototype}function i(t){var e;if(r(t)){e=new l(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var n=u.keys(t),i=0;i1){var n,r=new Array(e-1),i=0;for(n=0;e-1>n;++n){var o=arguments[n];if(!f.isObject(o))return p("expecting an object but got "+f.classString(o));r[i++]=o}return r.length=i,t=arguments[n],this.then(void 0,P(r,t,this))}return this.then(void 0,t)},i.prototype.reflect=function(){return this._then(u,u,void 0,this,void 0)},i.prototype.then=function(t,e){if(x.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+f.classString(t);arguments.length>1&&(n+=", "+f.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},i.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},i.prototype.spread=function(t){return"function"!=typeof t?p("expecting a function but got "+f.classString(t)):this.all()._then(t,void 0,void 0,w,void 0)},i.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},i.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new k(this).promise()},i.prototype.error=function(t){return this.caught(f.originatesFromRejection,t)},i.getNewLibraryCopy=e.exports,i.is=function(t){return t instanceof i},i.fromNode=i.fromCallback=function(t){var e=new i(b);e._captureStackTrace();var n=arguments.length>1?!!Object(arguments[1]).multiArgs:!1,r=O(t)(R(e,n));return r===S&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},i.all=function(t){return new k(t).promise()},i.cast=function(t){var e=j(t);return e instanceof i||(e=new i(b),e._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},i.resolve=i.fulfilled=i.cast,i.reject=i.rejected=function(t){var e=new i(b);return e._captureStackTrace(),e._rejectCallback(t,!0),e},i.setScheduler=function(t){if("function"!=typeof t)throw new m("expecting a function but got "+f.classString(t));return v.setScheduler(t)},i.prototype._then=function(t,e,n,r,o){var s=void 0!==o,a=s?o:new i(b),l=this._target(),u=l._bitField;s||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!==(2097152&this._bitField)&&(r=0!==(50397184&u)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var p=c();if(0!==(50397184&u)){var h,f,_=l._settlePromiseCtx;0!==(33554432&u)?(f=l._rejectionHandler0,h=t):0!==(16777216&u)?(f=l._fulfillmentHandler0,h=e,l._unsetRejectionIsUnhandled()):(_=l._settlePromiseLateCancellationObserver,f=new g("late cancellation observer"),l._attachExtraTrace(f),h=e),v.invoke(_,l,{handler:null===p?h:"function"==typeof h&&p.bind(h),promise:a,receiver:r,value:f})}else l._addCallbacks(t,e,a,r,p);return a},i.prototype._length=function(){return 65535&this._bitField},i.prototype._isFateSealed=function(){return 0!==(117506048&this._bitField)},i.prototype._isFollowing=function(){return 67108864===(67108864&this._bitField)},i.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},i.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},i.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},i.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},i.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},i.prototype._isFinal=function(){return(4194304&this._bitField)>0},i.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},i.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},i.prototype._setAsyncGuaranteed=function(){v.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},i.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];return e===h?void 0:void 0===e&&this._isBound()?this._boundValue():e},i.prototype._promiseAt=function(t){return this[4*t-4+2]},i.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},i.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},i.prototype._boundValue=function(){},i.prototype._migrateCallback0=function(t){var e=(t._bitField,t._fulfillmentHandler0),n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=h),this._addCallbacks(e,n,r,i,null)},i.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=h),this._addCallbacks(n,r,i,o,null)},i.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:i.bind(t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:i.bind(e));else{var s=4*o-4;this[s+2]=n,this[s+3]=r,"function"==typeof t&&(this[s+0]=null===i?t:i.bind(t)),"function"==typeof e&&(this[s+1]=null===i?e:i.bind(e))}return this._setLength(o+1),o},i.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},i.prototype._resolveCallback=function(t,e){if(0===(117506048&this._bitField)){if(t===this)return this._rejectCallback(l(),!1);var n=j(t,this);if(!(n instanceof i))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r===this)return void this._reject(l());var o=r._bitField;if(0===(50397184&o)){var s=this._length();s>0&&r._migrateCallback0(this);for(var a=1;s>a;++a)r._migrateCallbackAt(this,a);this._setFollowing(),this._setLength(0),this._setFollowee(r)}else if(0!==(33554432&o))this._fulfill(r._value());else if(0!==(16777216&o))this._reject(r._reason());else{var c=new g("late cancellation observer");r._attachExtraTrace(c),this._reject(c)}}},i.prototype._rejectCallback=function(t,e,n){var r=f.ensureErrorObject(t),i=r===t;if(!i&&!n&&x.warnings()){var o="a promise was rejected with a non-error: "+f.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,e?i:!1),this._reject(t)},i.prototype._resolveFromExecutor=function(t){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)},i.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0===(65536&i)){r._pushContext();var o;e===w?n&&"number"==typeof n.length?o=O(t).apply(this._boundValue(),n):(o=S,o.e=new m("cannot .spread() a non-array: "+f.classString(n))):o=O(t).call(e,n);var s=r._popContext();i=r._bitField,0===(65536&i)&&(o===C?r._reject(n):o===S?r._rejectCallback(o.e,!1):(x.checkForgottenReturns(o,s,"",r,this),r._resolveCallback(o)))}},i.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},i.prototype._followee=function(){return this._rejectionHandler0},i.prototype._setFollowee=function(t){this._rejectionHandler0=t},i.prototype._settlePromise=function(t,e,r,o){var s=t instanceof i,a=this._bitField,c=0!==(134217728&a);0!==(65536&a)?(s&&t._invokeInternalOnCancel(),r instanceof T&&r.isFinallyHandler()?(r.cancelPromise=t,O(e).call(r,o)===S&&t._reject(S.e)):e===u?t._fulfill(u.call(r)):r instanceof n?r._promiseCancelled(t):s||t instanceof k?t._cancel():r.cancel()):"function"==typeof e?s?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,o,t)):e.call(r,o,t):r instanceof n?r._isResolved()||(0!==(33554432&a)?r._promiseFulfilled(o,t):r._promiseRejected(o,t)):s&&(c&&t._setAsyncGuaranteed(),0!==(33554432&a)?t._fulfill(o):t._reject(o))},i.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof i?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof i&&n._reject(o)},i.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},i.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},i.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},i.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=l();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!==(134217728&e)?this._settlePromises():v.settlePromises(this))}},i.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16))return this._setRejected(),this._fulfillmentHandler0=t,this._isFinal()?v.fatalError(t,f.isNode):void((65535&e)>0?v.settlePromises(this):this._ensurePossibleRejectionHandled())},i.prototype._fulfillPromises=function(t,e){for(var n=1;t>n;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._rejectPromises=function(t,e){for(var n=1;t>n;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!==(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},i.prototype._settledValue=function(){var t=this._bitField;return 0!==(33554432&t)?this._rejectionHandler0:0!==(16777216&t)?this._fulfillmentHandler0:void 0},i.defer=i.pending=function(){x.deprecated("Promise.defer","new Promise");var t=new i(b);return{promise:t,resolve:o,reject:s}},f.notEnumerableProp(i,"_makeSelfResolutionError",l),t("./method")(i,b,j,p,x),t("./bind")(i,b,j,x),t("./cancel")(i,k,p,x),t("./direct_resolve")(i),t("./synchronous_inspection")(i),t("./join")(i,k,j,b,x),i.Promise=i,i.version="3.4.0",t("./map.js")(i,k,p,j,b,x),t("./call_get.js")(i),t("./using.js")(i,p,j,F,b,x),t("./timers.js")(i,b,x),t("./generators.js")(i,p,b,j,n,x),t("./nodeify.js")(i),t("./promisify.js")(i,b),t("./props.js")(i,k,j,p),t("./race.js")(i,b,j,p),t("./reduce.js")(i,k,p,j,b,x),t("./settle.js")(i,k,x),t("./some.js")(i,k,p),t("./filter.js")(i,b),t("./each.js")(i,b),t("./any.js")(i),f.toFastProperties(i),f.toFastProperties(i.prototype),a({a:1}),a({b:2}),a({c:3}),a(1),a(function(){}),a(void 0),a(!1),a(new i(b)),x.setBounds(d.firstLineError,f.lastLineError),i}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){function s(t){switch(t){case-2:return[];case-3:return{}}}function a(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var c=t("./util");c.isArray;return c.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function l(t,n){var o=r(this._values,this._promise);if(o instanceof e){o=o._target();var a=o._bitField;if(this._values=o,0===(50397184&a))return this._promise._setAsyncGuaranteed(),o._then(l,this._reject,void 0,this,n);if(0===(33554432&a))return 0!==(16777216&a)?this._reject(o._reason()):this._cancel();o=o._value()}if(o=c.asArray(o),null===o){var u=i("expecting an array or an iterable object but got "+c.classString(o)).reason();return void this._promise._rejectCallback(u,!1)}return 0===o.length?void(-5===n?this._resolveEmptyArray():this._resolve(s(n))):void this._iterate(o)},a.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,s=null,a=0;n>a;++a){var c=r(t[a],i);c instanceof e?(c=c._target(),s=c._bitField):s=null,o?null!==s&&c.suppressUnhandledRejections():null!==s?0===(50397184&s)?(c._proxy(this,a),this._values[a]=c):o=0!==(33554432&s)?this._promiseFulfilled(c._value(),a):0!==(16777216&s)?this._promiseRejected(c._reason(),a):this._promiseCancelled(a):o=this._promiseFulfilled(c,a)}o||i._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},a.prototype._cancel=function(){!this._isResolved()&&this._promise.isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},a.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;nc;c+=2){var u=s[c],p=s[c+1],_=u+e;if(r===E)t[_]=E(u,h,u,p,e,i);else{var d=r(p,function(){return E(u,h,u,p,e,i)});f.notEnumerableProp(d,"__isPromisified__",!0),t[_]=d}}return f.toFastProperties(t),t}function u(t,e,n){return E(t,e,void 0,t,null,n)}var p,h={},f=t("./util"),_=t("./nodeback"),d=f.withAppended,v=f.maybeWrapAsError,y=f.canEvaluate,m=t("./errors").TypeError,g="Async",b={__isPromisified__:!0},w=["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"],C=new RegExp("^(?:"+w.join("|")+")$"),j=function(t){return f.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t},k=function(t){return t.replace(/([$])/,"\\$")},E=y?p:c;e.promisify=function(t,e){if("function"!=typeof t)throw new m("expecting a function but got "+f.classString(t));if(i(t))return t;e=Object(e);var n=void 0===e.context?h:e.context,o=!!e.multiArgs,s=u(t,n,o);return f.copyDescriptors(t,s,r),s},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new m("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");e=Object(e);var n=!!e.multiArgs,r=e.suffix;"string"!=typeof r&&(r=g);var i=e.filter;"function"!=typeof i&&(i=j);var o=e.promisifier;if("function"!=typeof o&&(o=E),!f.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=f.inheritedDataKeys(t),a=0;ao;++o){var s=r[o];e[o]=t[s],e[o+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,-3)}function s(t){var n,s=r(t);return l(s)?(n=s instanceof e?s._then(e.props,void 0,void 0,void 0,void 0):new o(s).promise(),s instanceof e&&n._propagateFrom(s,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}var a,c=t("./util"),l=c.isObject,u=t("./es5");"function"==typeof Map&&(a=Map);var p=function(){function t(t,r){this[e]=t,this[e+n]=r,e++}var e=0,n=0;return function(r){n=r.size,e=0;var i=new Array(2*r.size);return r.forEach(t,i),i}}(),h=function(t){for(var e=new a,n=t.length/2|0,r=0;n>r;++r){var i=t[n+r],o=t[r];e.set(i,o)}return e};c.inherits(o,n),o.prototype._init=function(){},o.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=h(this._values);else{r={};for(var i=this.length(),o=0,s=this.length();s>o;++o)r[this._values[o+i]]=this._values[o]}return this._resolve(r),!0}return!1},o.prototype.shouldCopyValues=function(){return!1},o.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return s(this)},e.props=function(t){return s(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t,e,n,r,i){for(var o=0;i>o;++o)n[o+r]=t[o+e],t[o+e]=void 0}function i(t){this._capacity=t,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(t){return this._capacityh;++h){var _=t[h];(void 0!==_||h in t)&&e.cast(_)._then(u,p,void 0,l,null)}return l}var s=t("./util"),a=function(t){return t.then(function(e){return o(e,t)})};e.race=function(t){return o(t,void 0)},e.prototype.race=function(){return o(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r,i){this.constructor$(t);var s=h();this._fn=null===s?n:s.bind(n),void 0!==r&&(r=e.resolve(r),r._attachCancellationCallback(this)),this._initialValue=r,this._currentCancellable=null,this._eachValues=i===o?[]:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function c(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function l(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+f.classString(e));var o=new a(t,e,n,i);return o.promise()}function u(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(p,void 0,void 0,this,void 0)):p.call(this,n)}function p(t){var n=this.array,r=n._promise,i=_(n._fn);r._pushContext();var o;o=void 0!==n._eachValues?i.call(r._boundValue(),t,this.index,this.length):i.call(r._boundValue(),this.accum,t,this.index,this.length),o instanceof e&&(n._currentCancellable=o);var a=r._popContext();return s.checkForgottenReturns(o,a,void 0!==n._eachValues?"Promise.each":"Promise.reduce",r),o}var h=e._getDomain,f=t("./util"),_=f.tryCatch;f.inherits(a,n),a.prototype._gotAccum=function(t){void 0!==this._eachValues&&t!==o&&this._eachValues.push(t)},a.prototype._eachComplete=function(t){return this._eachValues.push(t),this._eachValues},a.prototype._init=function(){},a.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},a.prototype.shouldCopyValues=function(){return!1},a.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},a.prototype._resultCancelled=function(t){return t===this._initialValue?this._cancel():void(this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel()))},a.prototype._iterate=function(t){this._values=t;var n,r,i=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;i>r;++r){var o={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(u,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(c,c,void 0,n,this)},e.prototype.reduce=function(t,e){return l(this,t,e,null)},e.reduce=function(t,e,n,r){return l(t,e,n,r)}}},{"./util":36}],29:[function(t,e,n){"use strict";var r,i=t("./util"),o=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")},s=i.getNativePromise();if(i.isNode&&"undefined"==typeof MutationObserver){var a=global.setImmediate,c=process.nextTick;r=i.isRecentNode?function(t){a.call(global,t)}:function(t){c.call(process,t)}}else if("function"==typeof s){var l=s.resolve();r=function(t){l.then(t)}}else r="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&window.navigator.standalone?"undefined"!=typeof setImmediate?function(t){setImmediate(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:o:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),i=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});i.observe(r,e);var o=function(){n||(n=!0,r.classList.toggle("foo"))};return function(n){var r=new MutationObserver(function(){r.disconnect(),n()});r.observe(t,e),o()}}();e.exports=r},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t)}var o=e.PromiseInspection,s=t("./util");s.inherits(i,n),i.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},i.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},i.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new i(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function o(t,e){if((0|e)!==e||0>e)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new i(t),o=n.promise();return n.setHowMany(e),n.init(),o}var s=t("./util"),a=t("./errors").RangeError,c=t("./errors").AggregateError,l=s.isArray,u={};s.inherits(i,n),i.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var t=l(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},i.prototype.init=function(){this._initialized=!0,this._init()},i.prototype.setUnwrap=function(){this._unwrap=!0},i.prototype.howMany=function(){return this._howMany},i.prototype.setHowMany=function(t){this._howMany=t},i.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()?(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0):!1},i.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},i.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},i.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new c,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},i.prototype._fulfilled=function(){return this._totalResolved},i.prototype._rejected=function(){return this._values.length-this.length()},i.prototype._addRejected=function(t){this._values.push(t)},i.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},i.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},i.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},i.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return o(t,e)},e.prototype.some=function(t){return o(this,t)},e._SomePromiseArray=i}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!==(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!==(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0===(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!==(50331648&this._bitField)};e.prototype.isCancelled=t.prototype._isCancelled=function(){return 65536===(65536&this._bitField)},t.prototype.isCancelled=function(){return this._target()._isCancelled()},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){function r(t,r){if(u(t)){if(t instanceof e)return t;var i=o(t);if(i===l){r&&r._pushContext();var c=e.reject(i.e);return r&&r._popContext(),c}if("function"==typeof i){if(s(t)){var c=new e(n);return t._then(c._fulfill,c._reject,void 0,c,null),c}return a(t,i,r)}}return t}function i(t){return t.then}function o(t){try{return i(t)}catch(e){return l.e=e,l}}function s(t){try{return p.call(t,"_promise0")}catch(e){return!1}}function a(t,r,i){function o(t){a&&(a._resolveCallback(t),a=null)}function s(t){a&&(a._rejectCallback(t,p,!0),a=null)}var a=new e(n),u=a;i&&i._pushContext(),a._captureStackTrace(),i&&i._popContext();var p=!0,h=c.tryCatch(r).call(t,o,s);return p=!1,a&&h===l&&(a._rejectCallback(h.e,!0,!0),a=null),u}var c=t("./util"),l=c.errorObj,u=c.isObject,p={}.hasOwnProperty;return r}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.handle=t}function o(t){return clearTimeout(this.handle),t}function s(t){throw clearTimeout(this.handle),t}var a=t("./util"),c=e.TimeoutError;i.prototype._resultCancelled=function(){clearTimeout(this.handle)};var l=function(t){return u(+this).thenReturn(t)},u=e.delay=function(t,o){var s,a;return void 0!==o?(s=e.resolve(o)._then(l,null,null,t,void 0),r.cancellation()&&o instanceof e&&s._setOnCancel(o)):(s=new e(n),a=setTimeout(function(){s._fulfill()},+t),r.cancellation()&&s._setOnCancel(new i(a))),s._setAsyncGuaranteed(),s};e.prototype.delay=function(t){return u(t,this)};var p=function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new c("operation timed out"):new c(e),a.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()};e.prototype.timeout=function(t,e){t=+t;var n,a,c=new i(setTimeout(function(){n.isPending()&&p(n,e,a)},t));return r.cancellation()?(a=this.then(),n=a._then(o,s,void 0,c,void 0),n._setOnCancel(c)):n=this._then(o,s,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t){setTimeout(function(){throw t},0)}function c(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}function l(t,n){function i(){if(s>=l)return u._fulfill();var o=c(t[s++]);if(o instanceof e&&o._isDisposable()){try{o=r(o._getDisposer().tryDispose(n),t.promise)}catch(p){return a(p)}if(o instanceof e)return o._then(i,a,null,null,null)}i()}var s=0,l=t.length,u=new e(o);return i(),u}function u(t,e,n){this._data=t,this._promise=e,this._context=n}function p(t,e,n){this.constructor$(t,e,n)}function h(t){return u.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function f(t){this.length=t,this.promise=null,this[t-1]=null}var _=t("./util"),d=t("./errors").TypeError,v=t("./util").inherits,y=_.errorObj,m=_.tryCatch,g={};u.prototype.data=function(){return this._data},u.prototype.promise=function(){return this._promise},u.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():g},u.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==g?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},u.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},v(p,u),p.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},f.prototype._resultCancelled=function(){for(var t=this.length,n=0;t>n;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(2>t)return n("you must pass at least 2 arguments to Promise.using");var i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+_.classString(i));var o,a=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,a=!1):(o=arguments,t--);for(var c=new f(t),p=0;t>p;++p){var d=o[p];if(u.isDisposer(d)){var v=d;d=d.promise(),d._setDisposable(v)}else{var g=r(d);g instanceof e&&(d=g._then(h,null,null,{resources:c,index:p},void 0))}c[p]=d}for(var b=new Array(c.length),p=0;p0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,i());throw new d}}},{"./errors":12,"./util":36}],36:[function(t,e,n){"use strict";function r(){try{var t=T;return T=null,t.apply(this,arguments)}catch(e){return x.e=e,x}}function i(t){return T=t,r}function o(t){return null==t||t===!0||t===!1||"string"==typeof t||"number"==typeof t}function s(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return o(t)?new Error(v(t)):t}function c(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;r>n;++n)i[n]=t[n];return i[n]=e,i}function l(t,e,n){if(!E.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function u(t,e,n){if(o(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return E.defineProperty(t,e,r),t}function p(t){throw t}function h(t){try{if("function"==typeof t){var e=E.names(t.prototype),n=E.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=O.test(t+"")&&E.names(t).length>0;if(n||r||i)return!0}return!1}catch(o){return!1}}function f(t){function e(){}e.prototype=t;for(var n=8;n--;)new e;return t}function _(t){return A.test(t)}function d(t,e,n){for(var r=new Array(t),i=0;t>i;++i)r[i]=e+i+n;return r}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){return null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function m(t){try{u(t,"isOperational",!0)}catch(e){}}function g(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function b(t){return y(t)&&E.propertyIsWritable(t,"stack")}function w(t){return{}.toString.call(t)}function C(t,e,n){for(var r=E.names(t),i=0;i10||t[0]>0}(),H.isNode&&H.toFastProperties(process);try{throw new Error}catch(N){H.lastLineError=N}e.exports=H},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file diff --git a/src/HtmlJs/PerfDataService/Views/libraries/colResizable-1.6.min.js b/src/HtmlJs/PerfDataService/Views/libraries/colResizable-1.6.min.js new file mode 100644 index 000000000..3487db859 --- /dev/null +++ b/src/HtmlJs/PerfDataService/Views/libraries/colResizable-1.6.min.js @@ -0,0 +1,3 @@ +// colResizable 1.6 - a jQuery plugin by Alvaro Prieto Lauroba http://www.bacubacu.com/colresizable/ + +!function(t){var e,i=t(document),r=t("head"),o=null,s={},d=0,n="id",a="px",l="JColResizer",c="JCLRFlex",f=parseInt,h=Math,p=navigator.userAgent.indexOf("Trident/4.0")>0;try{e=sessionStorage}catch(g){}r.append("");var u=function(e,i){var o=t(e);if(o.opt=i,o.mode=i.resizeMode,o.dc=o.opt.disabledColumns,o.opt.disable)return w(o);var a=o.id=o.attr(n)||l+d++;o.p=o.opt.postbackSafe,!o.is("table")||s[a]&&!o.opt.partialRefresh||("e-resize"!==o.opt.hoverCursor&&r.append(""),o.addClass(l).attr(n,a).before('
'),o.g=[],o.c=[],o.w=o.width(),o.gc=o.prev(),o.f=o.opt.fixed,i.marginLeft&&o.gc.css("marginLeft",i.marginLeft),i.marginRight&&o.gc.css("marginRight",i.marginRight),o.cs=f(p?e.cellSpacing||e.currentStyle.borderSpacing:o.css("border-spacing"))||2,o.b=f(p?e.border||e.currentStyle.borderLeftWidth:o.css("border-left-width"))||1,s[a]=o,v(o))},w=function(t){var e=t.attr(n),t=s[e];t&&t.is("table")&&(t.removeClass(l+" "+c).gc.remove(),delete s[e])},v=function(i){var r=i.find(">thead>tr:first>th,>thead>tr:first>td");r.length||(r=i.find(">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td")),r=r.filter(":visible"),i.cg=i.find("col"),i.ln=r.length,i.p&&e&&e[i.id]&&m(i,r),r.each(function(e){var r=t(this),o=-1!=i.dc.indexOf(e),s=t(i.gc.append('
')[0].lastChild);s.append(o?"":i.opt.gripInnerHtml).append('
'),e==i.ln-1&&(s.addClass("JCLRLastGrip"),i.f&&s.html("")),s.bind("touchstart mousedown",J),o?s.addClass("JCLRdisabledGrip"):s.removeClass("JCLRdisabledGrip").bind("touchstart mousedown",J),s.t=i,s.i=e,s.c=r,r.w=r.width(),i.g.push(s),i.c.push(r),r.width(r.w).removeAttr("width"),s.data(l,{i:e,t:i.attr(n),last:e==i.ln-1})}),i.cg.removeAttr("width"),i.find("td, th").not(r).not("table th, table td").each(function(){t(this).removeAttr("width")}),i.f||i.removeAttr("width").addClass(c),C(i)},m=function(t,i){var r,o,s=0,d=0,n=[];if(i){if(t.cg.removeAttr("width"),t.opt.flush)return void(e[t.id]="");for(r=e[t.id].split(";"),o=r[t.ln+1],!t.f&&o&&(t.width(o*=1),t.opt.overflow&&(t.css("min-width",o+a),t.w=o));d*{cursor:"+n.opt.dragCursor+"!important}"),a.addClass(n.opt.draggingClass),o=a,n.c[d.i].l)for(var f,h=0;h