DisableMediaSense

DisableMediaSense 関数は、ローカルコンピュータ上の TCP/IP スタックのメディア検出機能を無効化する。

DisableMediaSense pHandle, pOverLapped

pHandle : [intptr] ハンドルを格納する変数へのポインタ。pOverlapped が非 NULL の場合、IP ドライバの呼び出しとメディア検出無効化に必要なハンドルを内部的に格納するのに使われる。この変数の値をアプリケーションから利用してはならない。ハンドルは内部用であり、閉じてはならない。
pOverLapped : [var] OVERLAPPED 構造体へのポインタ。hEvent 以外のメンバはすべて 0 に設定する必要がある。hEvent には有効なイベントオブジェクトのハンドル (CreateEvent で作成) を設定する。

(プラグイン / モジュール : iphlpapi.dll)

解説

DisableMediaSense 関数は、ローカルコンピュータ上の TCP/IP スタックのメディア検出機能を無効化する。

[戻り値]
関数が成功すると戻り値は NO_ERROR となる。失敗した場合の戻り値は以下のいずれかのエラーコードとなる。
このドキュメントは省略されている。

[備考]
pHandle か pOverlapped のいずれかが NULL なら DisableMediaSense は同期実行される。両方とも非
NULL なら OVERLAPPED を用いて非同期実行される。本関数は後で RestoreMediaSense
が呼ばれるまで完了しない。それまで IRP はキューに残る。呼び出しプロセスが終了すると IRP
はキャンセルされてメディア検出が復元される。同期呼び出しは別スレッドで行う必要がある。非同期呼び出しでは常に
ERROR_IO_PENDING を返し、IRP は RestoreMediaSense
呼び出し時に完了する。イベントオブジェクトのハンドルは不要になったら CloseHandle
で閉じる。プロセス終了時にシステムが自動的に閉じる。Windows Server 2003 / XP の TCP/IP
スタックは、下位ネットワークインターフェイスからのメディアセンス切断イベントに対応して、そのインターフェイスの全 IP
アドレスを削除する。スイッチ/ハブの電源オフやケーブル抜けで切断イベントが発生し、関連する IP 設定情報が失われる。さらに IP
helper
から切断インターフェイスを隠す方針により、アプリケーションからは単なる切断かシステムから削除されたかの区別が難しかった。クラスタなどのサーバには深刻な影響があり、DisableMediaSense
でメディアセンスを一時的に無効化できる。後で RestoreMediaSense
を呼んで復元する。System\CurrentControlSet\Services\Tcpip\Parameters\DisableDHCPMediaSense
レジストリキーも関連する。Windows Vista 以降の TCP/IP
スタックでは切断時にインターフェイスを隠さないよう変更されたため、DisableMediaSense /
RestoreMediaSense は何もせず常に NO_ERROR を返す。

情報

プラグイン / モジュールiphlpapi.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の iphlpapi.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_iphlpapi_gen2.hs