次の方法で共有


NotifyIpInterfaceChange 関数

NotifyIpInterfaceChange 関数は、ローカル コンピューター上のすべての IP インターフェイス、IPv4 インターフェイス、または IPv6 インターフェイスへの変更を通知するようにドライバーを登録します。

構文

NETIOAPI_API NotifyIpInterfaceChange(
  _In_    ADDRESS_FAMILY               Family,
  _In_    PIPINTERFACE_CHANGE_CALLBACK Callback,
  _In_    PVOID                        CallerContext,
  _In_    BOOLEAN                      InitialNotification,
  _Inout_ HANDLE                       *NotificationHandle
);

パラメーター

  • ファミリ [in]
    変更通知用にドライバーを登録するアドレス ファミリ。

    アドレス ファミリに使用できる値は、Winsock2.h ヘッダー ファイルにリスト表示されます。 AF_ アドレス ファミリ定数と PF_ プロトコル ファミリ定数の値は同じ (たとえば、AF_INET と PF_INET) なので、どちらの定数も使用できます。

    Windows Vista 以降のバージョンの Windows オペレーティング システムでは、Family パラメーターに使用できる値は Ws2def.h ヘッダー ファイルで定義されています。 Ws2def.h ヘッダー ファイルは Netioapi.h に自動的に含まれるので、Ws2def.h を直接使用しないでください。

    現在、アドレス ファミリでは次の値がサポートされています:

    • AF_INET
      IPv4 アドレス ファミリ。 この値を指定すると、この関数は、IPv4 変更通知についてのみ通知されるようにドライバーを登録します。

    • AF_INET6
      IPv6 アドレス ファミリ。 この値を指定すると、この関数は、IPv6 変更通知のみのドライバーを登録します。

    • AF_UNSPEC
      アドレス ファミリは指定されていません。 この値を指定すると、この関数は、IPv4 と IPv6 の両方の変更の通知を受け取るドライバーを登録します。

  • Callback [in]
    変更が発生したときに呼び出す関数へのポインター。 この関数は、インターフェイス通知を受信したときに呼び出されます。

  • CallerContext [in]
    インターフェイス通知を受信したときに Callback パラメーターで指定されたコールバック関数に渡されるユーザー コンテキスト。

  • InitialNotification [in]
    変更通知の登録が完了した直後にコールバックを呼び出す必要があるかどうかを示す値。 この初期通知は、IP インターフェイスに対して変更が発生したことを示すものではありません。 コールバックが登録されていることを確認するためのこのパラメーターの目的。

  • NotificationHandle [in, out]
    後で変更通知の登録を解除するために使用できるハンドルを返すために使用されるポインター。 成功すると、このパラメーターに通知ハンドルが返されます。 エラーが発生した場合は、NULL が返されます。

戻り値

関数が成功した場合、NotifyIpInterfaceChange は STATUS_SUCCESS を返します。

関数が失敗した場合、NotifyIpInterfaceChange は以下のいずれかのエラーコードを返します。

リターン コード 説明
ERROR_INVALID_HANDLE

無効なハンドルが検出された場所で内部エラーが発生しました。

STATUS_INVALID_PARAMETER

その関数に無効なパラメーターが渡された。 Family パラメーターが AF_INET、AF_INET6、または AF_UNSPEC でなかった場合、このエラーが返されます。

STATUS_NOT_ENOUGH_MEMORY

メモリが不足していました。

その他

FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。

解説

ドライバーは、Family パラメーターを AF_INET、AF_INET6、または AF_UNSPEC のいずれかに設定する必要があります。

Callback パラメーターで指定されたコールバック関数の呼び出しがシリアル化されます。 コールバック関数は VOID 型の関数として定義する必要があります。 コールバック関数に渡されるパラメーターには、次のものが含まれます。

パラメーター 説明

IN PVOID CallerContext

変更通知用のドライバーを登録するときに NotifyIpInterfaceChange 関数に渡される CallerContext パラメーター。

IN PMIB_IPINTERFACE_ROW OPTIONAL

変更されたインターフェイスの MIB_IPINTERFACE_ROW エントリへのポインター。 コールバック関数に NotificationType パラメーターで渡される MIB_NOTIFICATION_TYPE 値が MibInitialNotification に設定されている場合、このパラメーターは NULL ポインターとなります。 この状況は、変更通知用にドライバーを登録するときに NotifyIpInterfaceChange に渡される InitialNotification パラメーターが TRUE に設定されている場合にのみ発生します。

IN MIB_NOTIFICATION_TYPE NotificationType

通知の種類 このメンバーには、MIB_NOTIFICATION_TYPE リスト型の値のいずれか 1 つを指定できます。

変更通知用のドライバーの登録を解除するには、CancelMibChangeNotify2 関数を呼び出し、NotifyIpInterfaceChange から返される NotificationHandle パラメーターを渡します。

要件

対象プラットフォーム

ユニバーサル

バージョン

Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。

ヘッダー

Netioapi.h (Netioapi.h を含む)

ライブラリ

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

CancelMibChangeNotify2

GetIfEntry2

GetIfStackTable

GetIfTable2

GetInvertedIfStackTable

GetIpInterfaceEntry

InitializeIpInterfaceEntry

MIB_IF_ROW2

MIB_IF_TABLE2

MIB_IPINTERFACE_ROW

MIB_NOTIFICATION_TYPE

SetIpInterfaceEntry