次の方法で共有


NotifyUnicastIpAddressChange 関数

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

構文

NETIOAPI_API NotifyUnicastIpAddressChange(
  _In_    ADDRESS_FAMILY                     Family,
  _In_    PUNICAST_IPADDRESS_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]
    変更が発生したときに呼び出す関数へのポインター。 この関数は、ユニキャスト IP アドレス通知を受信したときに呼び出されます。

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

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

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

戻り値

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

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

リターン コード 説明
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

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

IN PMIB_UNICASTIPADDRESS_ROW Row OPTIONAL

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

IN MIB_NOTIFICATION_TYPE NotificationType

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

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

要件

対象プラットフォーム

ユニバーサル

バージョン

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

ヘッダー

Netioapi.h (Netioapi.h を含む)

ライブラリ

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyStableUnicastIpAddressTable

SetUnicastIpAddressEntry