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_ROW の DadState メンバーに対応します。 すべてのダイヤル オンデマンド アドレスは、独自の安定性メトリックを定義します。 現在、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 |