gpt4 book ai didi

c# - 在 Windows 7 64 位中使用 [DllImport ("iphlpapi.dll")]

转载 作者:太空狗 更新时间:2023-10-29 23:39:38 25 4
gpt4 key购买 nike

 [DllImport("iphlpapi.dll")]
private static extern int GetTcpTable(IntPtr pTcpTable, ref int pdwSize, bool bOrder);

我正在使用这个 dll 并将函数调用为 GetTcpTable(IntPtr.Zero, ref iBytes, false)

它在 Windows 7 32 位操作系统中运行良好,但在 64 位操作系统中无法运行。我如何才能使其在 Windows 7 64 位操作系统中运行?

最佳答案

看起来问题出在您的签名上:

private static extern int GetTcpTable(IntPtr pTcpTable, ref int pdwSize, bool bOrder);

查看 documentation而是显示以下内容:

public static extern int GetTcpTable(byte[] pTcpTable, out int pdwSize, bool bOrder);

您正在使用 IntPtr,但它应该是一个将填充 MIB_TCPTABLE 的缓冲区结构。

我尝试查找引用实现所有这些的正确方法的文章,但没有找到很多。我很震惊 pinvoke.net 甚至没有列出 GetTcpTable 或我上面提到的结构。

编辑:您可能想看看 GetExtendedTcpTable()

我还发现有一个GetTcpTable2()这是在 Vista 中引入的。它包含相同的签名,所以也许只是看看是否调用它而不是让它在 x64 上神奇地工作,因为你当前的调用应该在 x86 上工作。它可能无法 100% 开箱即用,但我很好奇它是否能让你走得更远或至少得到不同的结果。

关于c# - 在 Windows 7 64 位中使用 [DllImport ("iphlpapi.dll")],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com