관리되는 IP 도우미 기능을 C# .net으로 변환 할 수 있습니까? 나는 그것이 PInvoke
ing에 의해 쓰여 져야한다는 것을 안다. MicrosoftC# .NET의 관리자 IP 도우미 기능
당신에게 감사 할 것이다 : 여기
는 IP 도우미 기능입니다. 여기 은 예입니다public static TcpTable GetExtendedTcpTable(bool sorted)
{
List<TcpRow> tcpRows = new List<TcpRow>();
IntPtr tcpTable = IntPtr.Zero;
int tcpTableLength = 0;
if (IpHelper.GetExtendedTcpTable(tcpTable, ref tcpTableLength, sorted, IpHelper.AfInet, IpHelper.TcpTableType.OwnerPidAll, 0) != 0)
{
try
{
tcpTable = Marshal.AllocHGlobal(tcpTableLength);
if (IpHelper.GetExtendedTcpTable(tcpTable, ref tcpTableLength, true, IpHelper.AfInet, IpHelper.TcpTableType.OwnerPidAll, 0) == 0)
{
IpHelper.TcpTable table = (IpHelper.TcpTable)Marshal.PtrToStructure(tcpTable, typeof(IpHelper.TcpTable));
IntPtr rowPtr = (IntPtr)((long)tcpTable + Marshal.SizeOf(table.length));
for (int i = 0; i < table.length; ++i)
{
tcpRows.Add(new TcpRow((IpHelper.TcpRow)Marshal.PtrToStructure(rowPtr, typeof(IpHelper.TcpRow))));
rowPtr = (IntPtr)((long)rowPtr + Marshal.SizeOf(typeof(IpHelper.TcpRow)));
}
}
}
finally
{
if (tcpTable != IntPtr.Zero)
{
Marshal.FreeHGlobal(tcpTable);
}
}
}
return new TcpTable(tcpRows);
}
`
여기에 기본 기능입니다 :
[DllImport(IpHelper.DllName, SetLastError = true)]
public static extern uint GetExtendedTcpTable(IntPtr tcpTable, ref int tcpTableLength, bool sort, int ipVersion, TcpTableType tcpTableType, int reserved);
이 외모에 대한 pinvoke.net을 확인할 수 있습니다 sendmetehc와 아주 흡사하다. odez 질문. SO 사용자가 pinvoke 선언의 전체 목록을 제공 할 것으로 합리적으로 기대할 수 없습니다. 어쨌든 이미 완료되었습니다. pinvoke interop assistant 또는 pinvoke.net과 같은 사이트를 사용하십시오. 그리고 물론 .NET 프레임 워크를 먼저 사용하십시오. 이미 GetExtendedTcpTable을 포함하여 winapi 함수를 많이 포함하고 있습니다. –
오케이. 죄송 해요. 나는 그것을 독자적으로 쓰려고 노력할 것이다. .NET이 GetExtendedTcpTable과 같은 winapi를 감싸는 곳으로 안내해 주시겠습니까? –