問題タブ [iphelper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - ネットマスク情報を取得するためのIPHelperAPIとは何ですか?
私の最初の賭けはGetIpAddrTable()
サンプルコードがあったので、それはIPv4しかサポートしていません。それから私は試し GetAdaptersInfo()
ましたが、ドキュメントはそれがによって廃止されていることを示唆していGetAdaptersAddresses()
ます。GetAdaptersAdresses()またはその他のIPヘルパーAPIを使用してネットマスクを取得するためのコードサンプルを使用する必要がありますか?
c++ - WinXP 以降の C++ でワイヤレス アダプタの MAC アドレスを取得する
上記をお願いしたいです。IP Helper API を見つけましたが、これは機能します。唯一の問題は、Vista より古いシステムでは、アダプタがワイヤレスか通常のイーサネットかを識別できないことです。WinXP と Server 2003 もサポートする必要があります。
ドキュメント(IP Helper)からの関連する引用は次のとおりです。
IEEE 802.11 ワイヤレス ネットワーク インターフェイス。注: このアダプターの種類は、Windows Vista 以降で返されます。Windows Server 2003 および >Windows XP では、IEEE 802.11 ワイヤレス ネットワーク インターフェイスは >MIB_IF_TYPE_ETHERNET のアダプタ タイプを返します。
では、WinXP/Server2003 以降でワイヤレス アダプタを識別し、MAC アドレスを取得するにはどうすればよいでしょうか?
c++ - アダプタのデフォルト IP を削除するときに DeleteIPAddress が失敗するのはなぜですか?
選択したアダプターの IP をコマンドで切り替えるプログラムを作成しようとしています。
そのために、GetAdaptersInfo() 関数を使用してアダプターのインデックスとその IP コンテキストを取得し、それを使用して現在の IP を削除しています (DeleteIPAddress(context) を使用)。
その後、AddIPAddress() によって新しい IP が挿入されます。
問題は、「デフォルト」の IP (AddIPAddress() によって設定されていない IP) を削除しようとすると、DeleteIPAddress 関数の呼び出しが失敗し、古い IP を削除する前に AddIPAddress を呼び出すと、アダプターに 2 つの異なる同時 IP が残ることです。
DeleteIPAddress 関数がエラー 31 (システムに接続されたデバイスが機能していません) で失敗します。
アダプターの IP アドレスを正常に変更する別の方法はありますか? AddIPAddress からコンテキストを取得せずに DeleteIPAddress を実際に使用できますか?
c - リスト ウィンドウ ルート テーブル
Windows ルート テーブルからエントリを一覧表示したい。from と同じ出力route print
。GetIpForwardTable2
IP Helper API の関数を使用します。しかし、ルート コマンドの出力とは異なる奇妙な結果が得られます。3つのネットワークカード(NAT、ブリッジ、内部ネットワーク)があるVirtualBoxのWindows 7 64ビットで実行し、次のコマンドでcygwinでコンパイルします:
これら_WIN32_WINNT
とNTDDI_VERSION
は、Win7 の機能を利用できるようにするためのものです。簡単にするために、今はipv4のみを検討しています。
コードは次のとおりです。
出力は次のとおりです。
の出力route print -4
は次のとおりです。
コード出力には奇妙なものがたくさんあります。多くのエントリには、文書化されていない値があります。たとえば、次のとおりです。
Protocol
1 ~ 14 の範囲内にある必要があります (ほとんどのエントリにはそのような値はありません)Luid.IfType
0 であってはなりません (ほぼすべてがゼロです)- ほとんどの非エントリーは合理的なものを与えます
Prefix
ここMIB_IPFORWARD_ROW2とここNET_LUIDで説明されています
無効な値を持つものを無視する必要がありますか? もしそうなら、有効なものはどこにありますか?それとも、私は何かひどく間違ったことをしていますか?
また、ケーブルを抜いた状態で Windows を起動すると、エントリが少なくなることもわかりました (これは理にかなっています)。次に、ケーブルを差し込むと、エントリが追加されます。しかし、もう一度プラグを抜くと、それらはまだそこにあります。route
コマンドが期待どおりに機能し、ケーブルが取り外されるとエントリが減少します。
古い機能を試してみるGetIpForwardTable
とうまくいきます。ただし、ipv6 には対応していません。