3

.NETを使用するC++で、RasDialに接続したばかりのRASCONNのIPアドレスまたはインターフェイス名を取得しようとしています(HRASCONNポインターがあります)。私はMSDNAPIを混乱させており、何時間も検索した後、適切な呼び出しを見つけることができません(しかし、それらは存在しているに違いないようです)。

これを行うためのより良い方法がある場合、ここでの目標は、後で管理C#でNetworkInterface.GetAllNetworkInterfaces()を呼び出したときに、正しい接続を選択できるように、いくつかの一意の識別子を持つことです。

4

1 に答える 1

6

RasGetProjectionInfo関数を確認し、前に取得したHRASCONNポインターを使用する必要があります。RASP_PppIpは、IPアドレスを含むRASPPPIP構造体を取得するために渡されるrasprojection値である必要があります。私はあなたが使用できるようにいくつかの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 に答える