WSAProviderConfigChange 関数 (winsock2.h)

WSAProviderConfigChange 関数は、プロバイダーの構成が変更されたときにアプリケーションに通知します。

構文

INT WSAAPI WSAProviderConfigChange(
  [in, out] LPHANDLE                           lpNotificationHandle,
  [in]      LPWSAOVERLAPPED                    lpOverlapped,
  [in]      LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);

パラメーター

[in, out] lpNotificationHandle

通知ハンドルへのポインター。 通知ハンドルが NULL (ポインター自体ではなくハンドル値) に設定されている場合、この関数は lpNotificationHandle が指す場所で通知ハンドルを返します。

[in] lpOverlapped

WSAOVERLAPPED 構造体へのポインター。

[in] lpCompletionRoutine

種類: _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE

プロバイダー変更通知を受信したときに呼び出される完了ルーチンへのポインター。

戻り値

エラーが発生しない場合、 WSAProviderConfigChange は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。 エラー コード WSA_IO_PENDING は、重複した操作が正常に開始され、完了 (および変更イベント) が後で示されることを示します。

エラー コード 意味
WSANOTINITIALIZED
この関数を使用する前に 、WSAStartup 呼び出しが正常に行われる必要があります。
WSAENETDOWN
ネットワーク サブシステムが失敗しました。
WSA_NOT_ENOUGH_MEMORY
操作を完了するのに十分な空きメモリがありません。
WSA_INVALID_HANDLE
lpNotificationHandle パラメーターが指す値は、有効な通知ハンドルではありません。
WSAEOPNOTSUPP
現在のオペレーティング システム環境では、再起動なしのプロバイダーのインストールまたは削除はサポートされていません。

注釈

WSAProviderConfigChange 関数は、再起動を必要とせずに、このような構成変更をサポートする Windows オペレーティング環境でのプロバイダー (トランスポートと名前空間の両方) のインストールまたは削除をアプリケーションに通知します。 初めて呼び出された場合 (lpNotificationHandle パラメーターは NULL ハンドルを指します)、この関数は直ちに完了し、 lpNotificationHandle が指す場所で通知ハンドルを返します。これは、後続の呼び出しでプロバイダーのインストールと削除の通知を受け取るために使用できます。 2 番目以降の呼び出しは、呼び出しが行われた時刻以降にプロバイダー情報が変更された場合にのみ完了します。これは、アプリケーションが WSAProviderConfigChange の 2 回目以降の呼び出しで重複した I/O を使用することが想定されています (ただし、必須ではありません)。その場合、呼び出しはすぐに返され、指定された重複した完了パラメーターを使用して選択された完了メカニズムを使用して、アプリケーションにプロバイダー構成の変更が通知されます。

WSAProviderConfigChange によって返される通知ハンドルは、Windows CloseHandle 呼び出しを使用して閉じる必要がある (不要になった) 通常のオペレーティング システム ハンドルと似ています。

次の一連のアクションを使用して、アプリケーションが常に現在のプロトコル構成情報を持っていることを保証できます。

  • WSAProviderConfigChange を呼び出す
  • WSAEnumProtocols または WSAEnumNameSpaceProviders を呼び出す
  • WSAProviderConfigChange が (ブロックまたは重複した I/O によって) プロバイダー構成の変更をアプリケーションに通知するたびに、一連のアクション全体を繰り返す必要があります。
Windows 8.1Windows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。

要件

要件
サポートされている最小のクライアント Windows 8.1、 Windows Vista [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winsock2.h
Library Ws2_32.lib
[DLL] Ws2_32.dll

こちらもご覧ください

CloseHandle

WSAEnumNameSpaceProviders

WSAEnumProtocols

Winsock 関数

Winsock リファレンス