過去に掲載されている「ネットワークアダプタを無効に」というスレを見させて頂いたのですが、
うまく動かすことができず、困っています。
記載されていたサンプルコードも正常に動かせない状態です。
ご存知の方がいたら、宜しくお願い致します。
使用言語はVC++でお願いします。
申し訳ございません。
先ほどのスレに情報があまりに少なすぎました。
パソコンのネットワークアダプタを無効にしたくて
「ネットワークアダプタを無効に」のスレの「なーめ」さんのコードを参考にして、
まずはネットワークアダプタを取得しようとしました。
http://madia.world.coocan.jp/vc/vc_bbs/200312_03120012.html
ConnectServerの引数は以下のように設定しました。
BSTR bstrNamespace = SysAllocString(L"root\\cimv2");
if(( hr = pWbemLocator->ConnectServer( bstrNamespace,
NULL,
NULL,
NULL,
0,
NULL,
NULL,
&pWbemServices )) == S_OK ){
すると
while( pEnum->Next( ... )
の部分で pEnum->Nextの戻り値が
WBEM_E_INVALID_CLASS
になります。
過去のスレなどを探したのですが、エラーの原因や対応方法が分からなかったので、ご存知の方がいらっしゃいましたら、何か参考になる事がありましたら、どうぞご教授お願いします。
環境は
使用OSはWindows2000Server,XPHomeEditionです。
使用言語はVC++6.0です。
ここの過去ログで・・・
私が作成したサンプルがあります。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200312/03120035.txt
ただし、C#.NET ですが、基本的には API をインポート
して呼び出していますので、構造的には問題ないかと。
参考にして下さい。
以上。
先のスレの方にも書きましたが・・・
Server OS での動作では、保障できません。
ネットワークリソースを使っているサービスが多分に存在し
その為、無効化した場合、確実に再起動しないと、正常に動
作しません。
当然、Win2000 Pro/XP でも同様です。
無効化・有効化は可能ですが、ネットワークリソースを使用
するサービス等を全て停止・起動させないと、正常稼動は難
しいです。
理由としては・・・OSの動作がWinNTから変わった為です。
ネットワーク的に言いますと、リンクアップしている状態か
ら、リンクダウン(LANケーブルをハブから抜くとか)し
た場合、固定アドレスを割り当てていたとしても、内部的に
は不定になるようで、再度、リンクアップさせても、表面的
には正常に固定アドレスを維持しているかのように見えます
が、正常なネットワーク通信は行えない状態に陥ります。
フラッグシップメーカーのインテルや3Com社の100/1000
BASEのLANカードで実施してみましたが、同様でした。
PnPの影響もあるようですが、アダプタの無効化・有効化を
行った後、正常稼動させるには、かなりの後始末的処理が必
要になります。
実際のところ、私が作成したソフトを組み込んだシステムで
は、その後始末のコード自体が、元の無効化・有効化のコー
ド量を上回りました。
お気をつけ下さい。
※ 無効化・有効化した場合、LANケーブルをハブから抜
いた場合と同じく、リンクダウン・アップのイベントが
発生します。それをWMI等を使って監視し、ダウン時
の処理とアップ時の処理を追加してやる必要があります。
参考までに・・・
以上。
ご教授ありがとう御座います。
サンプルを参考にしてVC++で動作することを試してみたいと思います。
また、分からない事がありましたら、書き込ませてもらいます。
そのときはまたお願いします。
ツイート | ![]() |