我使用connect和C#挂钩deviare函数。问题是我需要从sockaddr获取IP地址(这是connect函数中的第二个参数)。
我检查了答案: C# sockaddr to sockaddr_in &安培; https://stackoverflow.com/a/17430748/3312744
我试着用它们。但我面临从连接功能获取IntPtr的问题。 我尝试了以下方法:
IParam pm = callInfo.Params.get_Item(1);
IntPtr sock = new IntPtr(pm.Value) ;
IPAddress ip_ader = ConvertSockAddrPtrToIPAddress(sock);
ConvertSockAddrPtrToIPAddress是此答案中使用的方法:https://stackoverflow.com/a/17430748/3312744但始终抛出异常。
异常是(运行时遇到致命错误。错误地址为0x531a0858,位于线程0x724。错误代码为0xc0000005。此错误可能是CLR中的错误或不安全或非错误用户代码的可验证部分。此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈。)
抱歉英语不好。提前谢谢