次の方法で共有


NotifyTeredoPortChange 関数

NotifyTeredoPortChange 関数は、Teredo クライアントがローカル コンピューター上の Teredo サービス ポートに使用する UDP ポート番号の変更に対して通知を受けるようにドライバーを登録します。

構文

NETIOAPI_API NotifyTeredoPortChange(
  _In_    PTEREDO_PORT_CHANGE_CALLBACK Callback,
  _In_    PVOID                        CallerContext,
  _In_    BOOLEAN                      InitialNotification,
  _Inout_ HANDLE *                     NotificationHandle
);

パラメーター

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

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

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

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

戻り値

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

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

リターン コード 説明
ERROR_INVALID_HANDLE

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

STATUS_INVALID_PARAMETER

その関数に無効なパラメーターが渡された。 Callback パラメーターが NULL ポインターの場合、このエラーが返されます。

STATUS_NOT_ENOUGH_MEMORY

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

その他

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

解説

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

パラメーター 説明

IN PVOID CallerContext

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

IN USHORT Port

Teredo クライアントが現在使用している UDP ポート番号。 コールバック関数に NotificationType パラメーターで渡される MIB_NOTIFICATION_TYPE 値が MibInitialNotification に設定されている場合、このパラメーターは 0 になります。 この状況は、変更通知用にドライバーを登録するときに NotifyTeredoPortChange に渡される InitialNotification パラメーターが TRUE に設定されている場合にのみ発生します。

IN MIB_NOTIFICATION_TYPE NotificationType

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

ドライバーは、GetTeredoPort 関数を使用して、Teredo クライアントが Teredo サービス ポートに使用した初期 UDP ポート番号を取得できます。

Teredo ポートは動的であり、Teredo クライアントがローカル コンピューターで再起動されるたびに変更できます。 ドライバーは、NotifyTeredoPortChange 関数を呼び出すことによって、Teredo サービス ポートが変更されたときに通知を受け取るために登録できます。

Teredo クライアントは、RFC 4380 で定義されているマルチキャスト IPv4 アドレス 224.0.0.253 で送信されるマルチキャスト トラフィックをリッスンするために、静的 UDP ポート 3544 も使用します。 詳細については、「Teredo: UDPthrough ネットワークアドレス変換 (NAT) を介した IPv6 のトンネリング」を参照してください。

NotifyTeredoPortChange 関数は、着信および送信 Teredo トラフィックを有効にするための適切な例外を構成するために、主にファイアウォール ドライバーによって使用されます。

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

要件

対象プラットフォーム

ユニバーサル

バージョン

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

ヘッダー

Netioapi.h (Netioapi.h を含む)

ライブラリ

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

CancelMibChangeNotify2

GetTeredoPort

NotifyStableUnicastIpAddressTable