返されたさまざまなアダプタリスト
GetIpAddrTable
より少ないネットワークアダプタを返す理由の根本的な原因を知りたいですGetAdaptersAddresses
。候補となる理由を以下に示します(回答ごとに更新)。
候補となる理由
- IPv6アダプター:これらはにのみ表示され
GetAdaptersAddresses
ます。この例では、GetIpAddrTableからの出力に表示されないIPv4とIPv6の両方のリンクローカルIPアドレスを持つアダプターのケースがあります。
バックグラウンド
GetIpAddrTable
Windows 764ビットHomePremium(バージョン:6.1.7601 Service Pack 1ビルド7601)を実行している特定のDellラップトップの機能に関する問題を調査しています。問題のシステムは、を介して特定のネットワークアダプタを検出できませんGetIpAddrTable
。診断結果を以下に示します。
これらの2つの関数からこのように大きく異なる結果が表示される理由を誰かが説明できますか?私たちはGetIpAddrTable
2年近く問題なく使用しています。
ドキュメントチェック
のドキュメントにGetIpAddrTable
は、リンク状態の検出によってXPで問題が発生する可能性があることが示されていますが、アダプターがまったく表示されない理由は示されていません。仮想アダプタは含まれていないようですが、デバイスは仮想アダプタではありません(Ethernet over USBです)。
Windows Server2008およびWindowsVistaでは、GetIpAddrTable関数によって返されるIPv4アドレスは、ローカルコンピューター上のTCP/IPスタックのメディアセンシング機能の影響を受けません。GetIpAddrTable関数は、有効なIPv4アドレスのみを返します。
このシステムで行ったテストでは、有効な接続がありますが、によってのみ報告されGetAdaptersAddresses
、ではありませんGetIpAddrTable
。Windowsはアダプタが無効であると考えていると思いますが、この理論を確認するために何をテストすればよいかわかりません。パケットはデバイスとの間で流れており、IPv4アドレスマッピングテーブルには表示されません。
実装の詳細
- Belcarra USBLANイーサネットガジェットドライバー(当社用にカスタマイズ)を使用しています
- デバイスがDHCPを介してホストとデバイスに登録されることを期待しています
- ドライバーはDHCPを提供します
- 最初のホストアダプタには169.254.142.9が割り当てられています
- 私たちの最初のデバイスアダプターは169.254.142.10です。
- デバイスへのトラフィックは外部にルーティングされません(リンクローカル)
GetIpAddrTableの結果
通常、2つまたは3つのネットワークアダプタが表示され、ループバックアダプタは表示されないことが予想されます。おそらく、このリストに127.0.0.1が存在することは問題の一部であり、通常、稼働中のマシンでは観察されません。
- アダプタ1:ソフトウェアループバックインターフェイス1
- アダプター2:Intel(R)Centrino(R)Wireless-N 1030
GetAdaptersAddressesの結果
この関数によって返されるアダプターを、返される順序でリストしました。最初の呼び出しからの一致するアダプターが強調されます。ipconfig出力に存在しない唯一のアダプターは太字で示されています。
- アダプター1:USBLANアダプター
- アダプター2:Microsoft仮想WiFiミニポートアダプター
- アダプター3:Bluetoothデバイス(パーソナルエリアネットワーク)
- アダプター4:Intel(R)Centrino(R)Wireless-N 1030
- アダプター5:RealtekPCIeGBEファミリーコントローラー
- アダプタ6:ソフトウェアループバックインターフェイス1
- アダプター7:MicrosoftISATAPアダプター
- アダプター8:Microsoft ISATAPアダプター#2
- アダプター9:Teredoトンネリング疑似インターフェース
- アダプター10:Microsoft ISATAPアダプター#3
- アダプター11:Microsoft ISATAPアダプター#4
- アダプター12:Microsoft ISATAPアダプター#5
ipconfig/all結果
ソフトウェアループバックアダプタだけが存在しないことに注意してください。これは、ipconfigが2番目の関数または同様のインターフェイスを内部で使用していることを示しています。
- アダプター1:USBLANアダプター
- アダプター2:Microsoft仮想WiFiミニポートアダプター
- アダプター3:Bluetoothデバイス(パーソナルエリアネットワーク)
- アダプター4:Intel(R)Centrino(R)Wireless-N 1030
- アダプター5:RealtekPCIeGBEファミリーコントローラー
- アダプター6:MicrosoftISATAPアダプター
- アダプター7:Microsoft ISATAPアダプター#2
- アダプター8:Teredoトンネリング疑似インターフェース
- アダプター9:Microsoft ISATAPアダプター#3
- アダプター10:Microsoft ISATAPアダプター#4
- アダプター11:Microsoft ISATAPアダプター#5
相互参照の結果
コマンドは、ソフトウェアループバックインターフェイスを除いて、ipconfig /all
と同じデータを返しているようです。GetAdaptersAddresses
現在、この問題を解決するために使用するライブラリを切り替えることを検討していますが、期待される結果が返されないGetAdaptersAddresses
理由が心配です。GetIpAddrTable
ご入力いただきありがとうございます!