RestoreMediaSense

RestoreMediaSense 関数は、以前に DisableMediaSense を呼び出したローカルコンピュータ上の TCP/IP スタックのメディアセンス機能を復元する。

RestoreMediaSense pOverlapped, lpdwEnableCount

pOverlapped : [var] OVERLAPPED 構造体へのポインタ。hEvent メンバ以外はすべて 0 に設定し、hEvent には有効なイベントオブジェクトへのハンドルを設定する。CreateEvent でイベントオブジェクトを作成する。
lpdwEnableCount : [var] RestoreMediaSense が成功した場合、残っている参照数を受け取るオプションの DWORD 変数へのポインタ。この変数は EnableRouter / UnenableRouter でも使用される。

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

解説

RestoreMediaSense 関数は、以前に DisableMediaSense を呼び出したローカルコンピュータ上の TCP/IP
スタックのメディアセンス機能を復元する。

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

[備考]
pOverlapped が NULL なら RestoreMediaSense は同期実行され、そうでなければ OVERLAPPED
を用いて非同期実行される。DisableMediaSense は後に RestoreMediaSense
が呼ばれるまで完了しない。その間、I/O 要求パケット (IRP) はキューに残る。また、DisableMediaSense
を呼び出したプロセスが終了すると IRP はキャンセルされ、キャンセルルーチンによりメディアセンス機能が再度復元される。
同期呼び出しでは NULL を渡し、IRP 完了時に関数が返る。非同期呼び出しでは OVERLAPPED を割り当て、hEvent 以外を
0、hEvent に CreateEvent のハンドルを設定する。非同期時は ERROR_IO_PENDING を返すことがある。IRP
はメディアセンス機能復元時に完了する。イベントオブジェクトが不要になれば CloseHandle でハンドルをクローズする
(プロセス終了時は自動クローズ)。DisableMediaSense が先に呼ばれていない場合、RestoreMediaSense は
ERROR_INVALID_PARAMETER を返す。Windows Server 2003 / Windows XP
では、TCP/IP スタックが物理ネットワークインターフェイスのメディアセンス切断イベントに応じてインターフェイスの全 IP
アドレスを削除するポリシーを実装している。スイッチやハブの電源断、ケーブル切断などで切断イベントが発生すると IP 設定情報が失われ、IP
ヘルパ経由の取得にも表示されなくなる。この挙動はサーバやクラスタに影響し得るため、DisableMediaSense
で一時的にメディアセンス機能を無効化し、後で RestoreMediaSense を呼び出して復元できる。関連するレジストリ設定:
System\CurrentControlSet\Services\Tcpip\Parameters\DisableDHCPMediaSense
マシン起動時にこのレジストリキーが存在すれば内部フラグがセットされる。同じ内部フラグは DisableMediaSense /
RestoreMediaSense でも設定/解除される。レジストリ設定による変更は再起動が必要。
Windows Vista 以降の TCP/IP スタックは切断時にインターフェイスを隠さなくなったため、これらの関数は何もせず常に
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