I have the following System.Net.IPAddress object in Windbg and would like to convert the m_address (4294967295 m_Address) field to the corresponding dotted-quad notation. How can I accomplish this? I see that the m_ToString has a value of 00000000. How is that string obtained?
Name: System.Net.IPAddress
MethodTable: 71c3d860
EEClass: 71a299f0
Size: 40(0x28) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll
Fields:
MT Field Offset Type VT Attr Value Name
727e821c 40018b1 4 System.Int64 1 instance 4294967295 m_Address
727f2248 40018b2 14 System.String 0 instance 00000000 m_ToString
71c42030 40018b6 1c System.Int32 1 instance 2 m_Family
727e1994 40018b7 18 System.UInt16[] 0 instance 022c20a8 m_Numbers
727e821c 40018b8 c System.Int64 1 instance 0 m_ScopeId
727f3aa4 40018b9 20 System.Int32 1 instance 0 m_HashCode
71c3d860 40018ad 7ec System.Net.IPAddress 0 static 022c1ff8 Any
71c3d860 40018ae 7f0 System.Net.IPAddress 0 static 022c203c Loopback
71c3d860 40018af 7f4 System.Net.IPAddress 0 static 022c2080 Broadcast
71c3d860 40018b0 7f8 System.Net.IPAddress 0 static 022c2080 None
71c3d860 40018b3 7fc System.Net.IPAddress 0 static 022c20c4 IPv6Any
71c3d860 40018b4 800 System.Net.IPAddress 0 static 022c2108 IPv6Loopback
71c3d860 40018b5 804 System.Net.IPAddress 0 static 022c214c IPv6None
So it seems at the breakpoint the m_Address field did not have a address. After executing the UdpClient.Receive method. I get the following.
0:000> !DumpObj /d 024a20f8
Name: System.Net.IPAddress
MethodTable: 71c3d860
EEClass: 71a299f0
Size: 40(0x28) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll
Fields:
MT Field Offset Type VT Attr Value Name
727e821c 40018b1 4 System.Int64 1 instance 100731402 m_Address
727f2248 40018b2 14 System.String 0 instance 024a2198 m_ToString
71c42030 40018b6 1c System.Int32 1 instance 2 m_Family
727e1994 40018b7 18 System.UInt16[] 0 instance 024a2120 m_Numbers
727e821c 40018b8 c System.Int64 1 instance 0 m_ScopeId
727f3aa4 40018b9 20 System.Int32 1 instance 0 m_HashCode
71c3d860 40018ad 7ec System.Net.IPAddress 0 static 022c1ff8 Any
71c3d860 40018ae 7f0 System.Net.IPAddress 0 static 022c203c Loopback
71c3d860 40018af 7f4 System.Net.IPAddress 0 static 022c2080 Broadcast
71c3d860 40018b0 7f8 System.Net.IPAddress 0 static 022c2080 None
71c3d860 40018b3 7fc System.Net.IPAddress 0 static 022c20c4 IPv6Any
71c3d860 40018b4 800 System.Net.IPAddress 0 static 022c2108 IPv6Loopback
71c3d860 40018b5 804 System.Net.IPAddress 0 static 022c214c IPv6None
0:000> !DumpObj /d 024a2198
Name: System.String
MethodTable: 727f2248
EEClass: 72423444
Size: 32(0x20) bytes
File: C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
String: 10.10.1.6
Fields:
MT Field Offset Type VT Attr Value Name
727f3aa4 40000aa 4 System.Int32 1 instance 9 m_stringLength
727f2c40 40000ab 8 System.Char 1 instance 31 m_firstChar
727f2248 40000ac c System.String 0 shared static Empty
But the question remains what is the mathematical formula to convert the Int64 to an IP Address?