NotifyStableUnicastIpAddressTable 関数

NotifyStableUnicastIpAddressTable 関数は、ローカル コンピューター上の安定したユニキャスト IP アドレス テーブルを取得します。

構文

NETIOAPI_API NotifyStableUnicastIpAddressTable(
  _In_    ADDRESS_FAMILY                           Family,
  _Out_   PMIB_UNICASTIPADDRESS_TABLE              *Table,
  _In_    PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
  _In_    PVOID                                    CallerContext,
  _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 エントリのみを含む安定したユニキャスト IP アドレス テーブルを取得します。

    • AF_INET6
      IPv6 アドレス ファミリ。 この値を指定すると、関数は IPv6 エントリのみを含む安定したユニキャスト IP アドレス テーブルを取得します。

    • AF_UNSPEC
      アドレス ファミリは指定されていません。 この値を指定すると、関数は IPv4 と IPv6 の両方のエントリを含む安定したユニキャスト IP アドレス テーブルを取得します。

  • テーブル [out]
    MIB_UNICASTIPADDRESS_TABLE 構造へのポインター。 NotifyStableUnicastIpAddressTable が成功すると、このパラメーターはローカル コンピューター上の安定したユニキャスト IP アドレス テーブルを返します。

    NotifyStableUnicastIpAddressTable が I/O 要求が保留中であることを示す ERROR_IO_PENDING を返す場合、安定したユニキャスト IP アドレス テーブルが CallerCallback パラメーターの関数に返されます。

  • CallerCallback [in]
    安定したユニキャスト IP アドレス テーブルを使用して呼び出す関数へのポインター。 この関数は、NotifyStableUnicastIpAddressTable が ERROR_IO_PENDING を返す場合に呼び出されます。これは、I/O 要求が保留中であることを示します。

  • CallerContext [in]
    安定したユニキャスト IP アドレス テーブルが使用可能な場合に、CallerCallback パラメーターで指定されたコールバック関数に渡されるユーザー コンテキスト。

  • NotificationHandle [in, out]
    ドライバーが安定したユニキャスト IP アドレス テーブルを取得する要求を取り消すために使用できるハンドルを返すために使用されるポインター。 このパラメーターは、NotifyStableUnicastIpAddressTable からの戻り値が ERROR_IO_PENDING の場合に返されます。これは、I/O 要求が保留中であることを示します。

戻り値

NotifyStableUnicastIpAddressTable は STATUS_SUCCESS を返し、関数がすぐに成功した場合、Table パラメーターに安定したユニキャスト IP テーブルが返されます。

I/O 要求が保留中の場合、関数は ERROR_IO_PENDING を返し、安定したユニキャスト IP アドレス テーブルで I/O 要求が完了したときに CallerCallback パラメーターが指す関数が呼び出されます。

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

リターン コード 説明
ERROR_INVALID_HANDLE

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

STATUS_INVALID_PARAMETER

その関数に無効なパラメーターが渡された。 Table パラメーターが NULL ポインターであった場合、NotificationHandle パラメーターが NULL ポインターであった場合、または Family パラメーターが AF_INET、AF_INET6、または AF_UNSPEC のいずれでもなかった場合、このエラーが返されます。

STATUS_NOT_ENOUGH_MEMORY

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

その他

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

解説

ダイヤル オンデマンド アドレスを除くすべてのユニキャスト IP アドレスは、優先状態の場合にのみ安定していると見なされます。 通常のユニキャスト IP アドレス エントリの場合、この状態は IpDadStatePreferred に設定されている IP アドレスのMIB_UNICASTIPADDRESS_ROWDadState メンバーに対応します。 すべてのダイヤル オンデマンド アドレスは、独自の安定性メトリックを定義します。 現在、NotifyStableUnicastIpAddressTable 関数が考慮する唯一のダイヤル オンデマンド アドレスは、Teredo クライアントがローカル コンピューター上で使用するユニキャスト IP アドレスです。

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

NotifyStableUnicastIpAddressTable が成功し、STATUS_SUCCESS を返すと、Table パラメーターはローカル コンピューター上の安定したユニキャスト IP アドレス テーブルを返します。

NotifyStableUnicastIpAddressTable が I/O 要求が保留中であることを示す ERROR_IO_PENDING を返す場合、安定したユニキャスト IP アドレス テーブルが CallerCallback パラメーターの関数に返されます。

Teredo が使用するユニキャスト IP アドレスがローカル コンピューターで使用できるが、安定した (修飾された) 状態ではない場合、NotifyStableUnicastIpAddressTable は ERROR_IO_PENDING を返し、最終的に CallerCallback パラメーターで関数を呼び出すことによって安定したユニキャスト IP アドレス テーブルが返されます。 Teredo アドレスが使用できないか、安定した状態にあり、他のユニキャスト IP アドレスが安定した状態である場合、CallerCallback パラメーターの関数は呼び出されません。

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

パラメーター 説明

IN PVOID CallerContext

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

IN PMIB_UNICASTIPADDRESS_TABLE AddressTable

ローカル コンピューター上の安定したユニキャスト IP アドレス テーブルを含む MIB_UNICASTIPADDRESS_TABLE 構造へのポインター。

NotifyStableUnicastIpAddressTable 関数は、主に Teredo クライアントを使用するドライバーによって使用されます。

コールバックが完了した後に通知を取り消すには、CancelMibChangeNotify2 関数を呼び出し、NotifyStableUnicastIpAddressTable が返す NotificationHandle パラメーターを渡します。

要件

対象プラットフォーム

ユニバーサル

バージョン

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

ヘッダー

Netioapi.h (Netioapi.h を含む)

ライブラリ

Netio.lib

IRQL

< DISPATCH_LEVEL

関連項目

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry