NotifyRouteChange2 関数
NotifyRouteChange2 関数は、ローカル コンピューター上の IP ルート エントリへの変更を通知するドライバーを登録します。
構文
NETIOAPI_API NotifyRouteChange2(
_In_ ADDRESS_FAMILY Family,
_In_ PIPFORWARD_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]
初期化する MIB_IPINTERFACE_ROW 構造へのポインター。 正常に戻った場合、この構造のメンバーは、ローカル コンピューター上のインターフェイスの既定の情報で初期化されます。
戻り値
関数が成功した場合、NotifyRouteChange2 は STATUS_SUCCESS を返します。
関数が失敗した場合、NotifyRouteChange2 は以下のエラーコードの 1 つを返します。
リターン コード | 説明 |
---|---|
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 |
変更通知用のドライバーを登録するときに NotifyRouteChange2 関数に渡される CallerContext パラメーター。 |
IN PMIB_IPFORWARD_ROW2 行 OPTIONAL |
変更された IP ルート エントリの MIB_IPFORWARD_ROW2 エントリへのポインター。 コールバック関数に NotificationType パラメーターで渡される MIB_NOTIFICATION_TYPE 値が MibInitialNotification に設定されている場合、このパラメーターは NULL ポインターとなります。 この状況は、変更通知用にドライバーを登録するときに NotifyRouteChange2 に渡される InitialNotification パラメーターが TRUE に設定されている場合にのみ発生します。 |
IN MIB_NOTIFICATION_TYPE NotificationType |
通知の種類 このメンバーには、MIB_NOTIFICATION_TYPE リスト型の値のいずれか 1 つを指定できます。 |
変更通知用のドライバーの登録を解除するには、CancelMibChangeNotify2 関数を呼び出し、NotifyRouteChange2 から返される NotificationHandle パラメーターを渡します。
要件
対象プラットフォーム |
ユニバーサル |
バージョン |
Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ヘッダー |
Netioapi.h (Netioapi.h を含む) |
ライブラリ |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |