C++ 从GetAdapterAddresses()获取子网掩码

C++ 从GetAdapterAddresses()获取子网掩码,c++,c,winapi,iphelper,C++,C,Winapi,Iphelper,我正在使用GetAdapterAddresses()方法获取系统上所有接口的ip地址 我需要找到每个接口的广播地址。我可以使用IP地址和子网掩码计算,但在IP_适配器_地址结构中看不到子网掩码 是否有任何方法可以使用GetAdapterAddresses()检索子网掩码?仅在Vista和更高版本上提供子网掩码 当循环通过记录的FirstUnicastAddress字段所指向的单播地址时,该记录包含一个OnLinkPrefixLength字段。此字段在Vista之前的系统上不可用。此字段是子网掩码

我正在使用
GetAdapterAddresses()
方法获取系统上所有接口的ip地址

我需要找到每个接口的广播地址。我可以使用IP地址和子网掩码计算,但在IP_适配器_地址结构中看不到子网掩码

是否有任何方法可以使用
GetAdapterAddresses()
检索子网掩码?

仅在Vista和更高版本上提供子网掩码

当循环通过记录的
FirstUnicastAddress
字段所指向的单播地址时,该记录包含一个
OnLinkPrefixLength
字段。此字段在Vista之前的系统上不可用。此字段是子网掩码的长度,以位为单位。对于IPv4单播地址,可以使用将
OnLinkPrefixLength
值转换为子网掩码,然后根据需要使用子网掩码来屏蔽单播IPv4地址


在Vista之前的系统上,用于获取可用IPv4接口的列表。该记录包含IPv4地址的
dwAddr
字段、子网掩码的
dwMask
字段和广播地址的
dwBCastAddr
字段。您可以在该表中循环查找由
GetAdapterAddresses()
报告的每个单播IPv4地址,然后您将得到它们关联的子网掩码和广播IP地址。

是否有方法将
ConvertLengthToIpv4Mask()
返回的ULONG转换为字符串表示形式(如“255.255.255.0”)?好的,我可以使用in_addr结构和inet_ntoa。谢谢。顺便说一句,谢谢你的回答!只想补充一点,IP适配器单播地址的MSDN文档对于Windows Embedded Compact 7是错误的。它没有列出OnLinkPrefixLength,但是看看.h文件,它就在那里。我已经确认它在那里。(新版本也一样)。它不存在于CE 6或更低版本中(正确记录)。