PNRP と WSANSPIoctl
PNRP では 、WSANSPIoctl 関数を使用して、次の変更に関する通知を受け取ります。
- ネットワーク クラウドの一覧
- 名前解決要求の結果の可用性
WSALookupServiceBegin の最初の呼び出しでは、クライアントに通知される情報の種類を定義します。 クライアントには、Windows メッセージ、完了ルーチン、WSAEVENT オブジェクトへのハンドル、またはポートを使用して通知を受け取ることができます。 オプションと lpCompletion パラメーターの設定の詳細については、「 WSANSPIoctl」を参照してください。
WSALookupServiceNext の呼び出し後も通知を受け取り続けるには、アプリケーションで WSANSPIoctl をもう一度呼び出す必要があります。
WSANSPIoctl が呼び出された場合でも、WSALookupServiceNext 関数はブロックします。 WSALookupServiceNext を呼び出す前に、ブロックが問題である場合、アプリケーションは通知を受け取るまで待機する必要があります。
この関数を呼び出す場合、パラメーターには次の値が必要です。
-
hLookup
-
WSALookupServiceBegin から返されるハンドルを指定します。
-
dwControlCode
-
SIO_NSP_NOTIFY_CHANGEする必要があります。
-
lpvInBuffer
-
NULL にする必要があります。
-
cbInBuffer
-
ゼロ (0) にする必要があります。
-
lpvOutBuffer
-
NULL にする必要があります。
-
cbOutBuffer
-
ゼロ (0) にする必要があります。
-
lpcbBytesReturned
-
NULL にする必要があります。
-
lpCompletion
-
NULL または WSACOMPLETION 構造体へのポインターを指定します。
通知が受信されたら、 WSALookupServiceNext を 1 回呼び出して結果を取得します。
検索を終了するには、 WSALookupServiceEnd を呼び出します。
解決策の通知
クライアントには、名前解決エントリが追加されるたびに通知を受け取ることができます。 次に、クライアントは WSALookupServiceNext を呼び出して解決データを取得します。
クライアントがこの手法を使用しない場合、指定されたタイムアウトが発生するまで 、WSALookupServiceNext の呼び出しをブロックできます。
クラウド リスト通知
一連のクラウドに変更がある場合は、いつでもクライアントに通知できます。
WSALookupServiceNext 関数は、WSA_E_NO_MOREをセット区切り記号として返します。 クライアント アプリケーションでは、このメッセージが返されるまで既存のクラウドを列挙し、通知スキームを使用して、発生した後の変更を取得する必要があります。 クライアント アプリケーションは WSALookupServiceNext を呼び出すこともできますが、変更が発生するまで呼び出しはブロックされます。
WSALookupServiceNext 関数は、WSAQUERYSET 構造体内のクラウドを返します。 dwOutputFlags メンバーには、次のいずれかのフラグが返されます。
値 | 説明 |
---|---|
RESULT_IS_ADDED | 返されるクラウドが追加されます。 |
RESULT_IS_CHANGED | 返されるクラウドが変更されます。 |
RESULT_IS_DELETED | 返されるクラウドは削除され、無効です。 |
関連トピック
-
WSALookupServiceBegin
-
WSALookupServiceEnd
-
WSAQUERYSET