3

在带有 .NET 的 C++ 中,我试图获取刚刚与 RasDial 连接的 RASCONN 的 IP 地址或接口名称(我有 HRASCONN 指针)。我发现 MSDN API 令人困惑,经过数小时的搜索,我找不到正确的调用(但似乎它们必须存在)。

如果有更好的方法来做到这一点,这里的目标是有一些唯一的标识符,这样当我以后在我的管理 C# 中调用 NetworkInterface.GetAllNetworkInterfaces() 时,我可以选择正确的连接。

4

1 回答 1

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

希望有帮助!

于 2012-06-06T19:12:54.977 回答