-
Notifications
You must be signed in to change notification settings - Fork 264
Open
Description
Steps to reproduce
- Create WPF Application:
<Window x:Class="ClrmdTest2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ClrmdTest2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Height="45"
Margin="63,36,0,0" VerticalAlignment="Top" Width="189" Click="Button_Click"/>
<TextBox x:Name="textbox" HorizontalAlignment="Left" Height="237" Margin="63,111,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="624"/>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Diagnostics.Runtime;
namespace ClrmdTest2
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
string PrintMethods(ClrType t)
{
StringBuilder sb = new StringBuilder();
foreach (ClrMethod m in t.Methods)
{
sb.AppendLine(m.Name);
}
return sb.ToString();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
DataTarget dt = DataTarget.CreateSnapshotAndAttach(Process.GetCurrentProcess().Id);
using (dt)
{
ClrInfo ci = dt.ClrVersions[0];
ClrRuntime clr = ci.CreateRuntime();
foreach (ClrModule module in clr.EnumerateModules())
{
if (module.Name.EndsWith("PresentationCore.dll"))
{
foreach (var x in module.EnumerateTypeDefToMethodTableMap())
{
ClrType t = clr.GetTypeByMethodTable(x.MethodTable);
if (t.Name == "<Module>")
{
textbox.Text = PrintMethods(t);
break;
}
}
}
}
}
}
}
}
- Run and press Button
Results
.cctor
CriticalPtrToStringChars
ExitCleanup
CopyOffsetDirectoryTables
CopyForgottenTables
FillGlyphIndexArray
CompactMaxpLocaTable
UpdatePrivateTable
CalcOutputBufferSize
CreateDeltaTTF(Byte*, UInt32, Byte**, UInt32*, UInt32*, UInt16, UInt16, UInt16, UInt16, UInt16, UInt16*, UInt16, Void* (Void*, UInt32), Void
...
Expected results
ClrMethod.Name should return only method name, not fragment of the signature
The signature of CreateDeltaTTF method is:
.method assembly static int16 MS.Internal.TtfDelta.CreateDeltaTTF(uint8 modopt([mscorlib]System.Runtime.CompilerServices.IsConst)* puchSrcBuffer,
uint32 modopt([mscorlib]System.Runtime.CompilerServices.IsLong) modopt([mscorlib]System.Runtime.CompilerServices.IsConst) ulSrcBufferSize,
uint8** ppuchDestBuffer,
uint32 modopt([mscorlib]System.Runtime.CompilerServices.IsLong)* pulDestBufferSize,
uint32 modopt([mscorlib]System.Runtime.CompilerServices.IsLong)* pulBytesWritten,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) usFormat,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) usLanguage,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) usPlatform,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) usEncoding,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) usListType,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst)* pusKeepCharCodeList,
uint16 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) usListCount,
method void* *(void*,
uint32) lpfnReAllocate,
method void *(void*) lpfnFree,
uint32 modopt([mscorlib]System.Runtime.CompilerServices.IsLong) ulOffsetTableOffset,
void* lpvReserved) cil managed
This is the same for every method that has function pointers in signature
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels