特定のネットワークインターフェイスに関するさまざまな情報を取得するために必要なAHKスクリプトがあります。これを行うには、GetAdaptersAddresses関数のIPHlpAPIライブラリへのdll呼び出しを実行します。これにより、指定したアドレスにIP_ADAPTER_ADDRESSES構造体が返されます。次に、そのアドレスでメモリの読み取りを開始し、構造体の各メンバーをデコードします。
たとえば、IP_ADAPTER_INFO構造体の場合、最初の4バイトを読み取ると、次の構造体が開始するアドレスを取得します。次に、次の4バイトを読み取ると、ComboIndex値が取得されます。次に、次の260バイトを読み取り、それをANSI文字列として変換すると、アダプターの名前が取得されます。等々。これはこれまでのところうまくいきました。
ただし、IP_ADAPTER_ADDRESSES構造の場合は、機能していないようです。私はこれを試しました:最初の8バイトをスキップして配置し、次の4バイトをスキップして構造の長さを指定し、次にアダプターのインデックスであるはずの次の4バイトを読み取りました。ただし、この数はランダムに大きい数であり、どのアダプターにも対応していません。メモリの各バイトをANSI文字として変換する場合を除いて、残りのデータも同様です。AdapterName、Description、FriendlyNameが表示されます。
実際に必要なのはFriendlyNameだけです。これは、IP_ADAPTER_INFO構造体からの残りの情報がすでにあるためです。では、IP_ADAPTER_ADDRESSES構造でFriendlyNameを見つけることができるアドレスはどこですか?
私はまた、私が得たメモリコンテンツをペーストビンに投稿しました:
IP_ADAPTER_ADDRESSES構造-HEXIP_ADAPTER_ADDRESSES構造
-ANSI