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 |