在使用.NET的C ++中,我正在尝试获取我刚刚与RasDial连接的RASCONN的IP地址或接口名称(我有HRASCONN指针)。我发现MSDN API令人困惑,经过几个小时的搜索我找不到合适的电话(但似乎它们必须存在)。
如果有更好的方法可以做到这一点,那么这里的目标是拥有一些独特的标识符,以便当我稍后在管理C#中调用NetworkInterface.GetAllNetworkInterfaces()时,我可以选择正确的连接。
答案 0 :(得分:6)
您需要查看RasGetProjectionInfo函数并使用之前检索到的HRASCONN指针。 RASP_PppIp应该是传入的rasprojection值,以获取包含您的IP地址的RASPPPIP结构。我发布了一些C ++代码供你使用,但这不是我最好的语言,也不想让自己尴尬。
以下是一些有用的链接,可以帮助您:
RasGetProjectionInfo:http://msdn.microsoft.com/en-us/library/aa377548(v=vs.85).aspx
RASPPPIP:http://msdn.microsoft.com/en-us/library/aa377634(v=vs.85).aspx
由于您的应用程序似乎正在使用C#,您可能需要考虑在CodePlex上使用DotRas项目。它是围绕整个RAS API的基于C#的包装器。要从DotRas获取PPP信息,您需要:
using DotRas;
var conn = RasConnection.GetActiveConnections().Where(c => c.EntryName == "Your Entry").FirstOrDefault();
RasPppIp ipInfo = conn.GetProjectionInfo(RasProjectionType.IP);
从这里,您可以访问ipInfo.IPAddress属性以获取所需的信息。
以下是DotRas的链接:https://github.com/winnster/DotRas
希望有所帮助!