我想知道win32GetIpAddrTable
函数调用的上下文中的"有效IPv4地址"是什么。文档指出,此函数在Vista及更高版本上不会返回无效的IPv4地址。它没有解释它是如何确定有效性的。
在Windows Server 2008和Windows Vista上,IPv4地址返回通过GetIpAddrTable函数不受媒体感应的影响本地计算机上TCP/IP堆栈的能力GetIpAddrTable函数只返回有效的IPv4地址
我正在深入研究一个问题,即对此函数的调用没有返回正在运行的适配器的地址。适配器使用驱动程序的DHCP服务器来分配链接本地IP地址。在大多数系统上,这都可以正常工作。在特定的客户系统上,它没有。
Ping和流量测试工作正常,适配器显示在GetAdaptersAddresses
的输出中。我的另一个问题似乎表明,唯一的区别应该是对IPv6的支持。有问题的适配器也接收到链接本地IPv6地址,但这不应该阻止它显示在GetIpAddrTable
输出中,是吗?
交叉引用
- GetIpAddrTable返回的适配器列表与GetAdaptersAddresses不同
简单答案:它完全按照它所说的去做——它返回运行IPv4的连接接口。
我现在已经确认,当限制为IPv4接口时,GetAdaptersAddresses也会跳过我们的网络适配器。因此,在识别IPv4接口时,驱动程序和Windows之间似乎存在问题。