次の方法で共有


WSCUpdateProvider 関数 (ws2spi.h)

WSCUpdateProvider 関数は、システム構成データベース内の指定されたトランスポート プロバイダーを変更します。

構文

int WSCUpdateProvider(
  [in]  LPGUID                    lpProviderId,
  [in]  const WCHAR               *lpszProviderDllPath,
  [in]  const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  [in]  DWORD                     dwNumberOfEntries,
  [out] LPINT                     lpErrno
);

パラメーター

[in] lpProviderId

プロバイダーのグローバル一意識別子 (GUID) へのポインター。

[in] lpszProviderDllPath

プロバイダー 64 ビット DLL への読み込みパスを含む Unicode 文字列へのポインター。 この文字列は、パス解決の通常の規則を観察し、埋め込み環境文字列 ( %SystemRoot%など) を含めることができます。 このような環境文字列は、Ws2_32.dll がアプリケーションの代わりにプロバイダー DLL を読み込む必要がある場合に展開されます。 埋め込まれた環境文字列が展開されると、Ws2_32.dll は結果の文字列を LoadLibrary 関数に渡し、プロバイダーをメモリに読み込みます。 詳細については、「 LoadLibrary」を参照してください。

[in] lpProtocolInfoList

WSAProtocol_Info構造体の配列へのポインター。 各構造体は、プロバイダーによってサポートされるプロトコル、アドレス ファミリ、ソケットの種類を指定または変更します。

[in] dwNumberOfEntries

lpProtocolInfoList 配列内のエントリの数。

[out] lpErrno

関数が失敗した場合のエラー コードへのポインター。

戻り値

エラーが発生しない場合、 WSCUpdateProvider は 0 を返します。 それ以外の場合は 、SOCKET_ERRORを返し、 lpErrno パラメーターで特定のエラー コードが返されます。

エラー コード 意味
WSAEFAULT
1 つ以上の引数がユーザー・アドレス・スペースの有効な部分にありません。
WSAEINVAL
1 つ以上の引数が無効です。
WSANO_RECOVERY
回復不可能なエラーが発生しました。 このエラーは、ユーザーが Winsock レジストリに書き込むのに必要な管理特権がない、またはカタログ エントリを開いたり書き込んだりするときにエラーが発生したなど、いくつかの条件で返されます。
WSA_NOT_ENOUGH_MEMORY
メモリが不足していました。 このエラーは、新しいカタログ エントリを割り当てるメモリが不足している場合に返されます。

解説

WSCUpdateProvider 関数は、指定されたプロバイダーの Windows ソケット 2 構成情報を変更します。 これは、ベース プロトコル、階層化されたプロトコル、プロトコル チェーンに適用されます。

Winsock 2 は、階層化されたプロトコルに対応します。 階層化プロトコルは、より高いレベルの通信機能のみを実装するプロトコルであり、リモート エンドポイントとのデータの実際の交換に基づくトランスポート スタックに依存します。 階層化されたプロトコルの例としては、認証を実行し、相互に合意された暗号化スキームを確立するために、接続確立プロセスにプロトコルを追加するセキュリティ層があります。 このようなセキュリティ プロトコルでは、一般に、TCP や SPX などの基になる信頼性の高いトランスポート プロトコルのサービスが必要になります。 基本プロトコルという用語は、リモート エンドポイントとのデータ通信を実行できる TCP や SPX などのプロトコルを指します。 階層化プロトコルという用語は、スタンドアロンにできないプロトコルを記述するために使用されます。 その後、プロトコル チェーンは、1 つ以上の階層化されたプロトコルとして定義され、ベース プロトコルによって連結され、固定されます。 基本プロトコルには、WSAProtocol_Info 構造体の ChainLen メンバーが BASE_PROTOCOL に設定され、1 に定義されています。 階層化プロトコルでは、WSAPROTOCOL_INFO構造体の ChainLen メンバーが LAYERED_PROTOCOL に設定され、ゼロとして定義されます。 プロトコル チェーンには、WSAPROTOCOL_INFO構造体の ChainLen メンバーが 1 より大きく設定されています。

成功すると、 WSCUpdateProvider は、 WSAProviderConfigChange を呼び出して、変更の通知を登録したすべての関心のあるアプリケーションにアラートを送信しようとします。

WSCUpdateProvider 関数は、Administrators グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。 Administrators グループのメンバーではないユーザーが WSCUpdateProvider を呼び出すと、関数呼び出しは失敗します。

Windows Vista または Windows Server 2008 で実行されているコンピューターの場合、この関数はユーザー アカウント制御 (UAC) のために失敗する可能性もあります。 この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、 requestedExecutionLevelrequireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、この呼び出しは失敗します。 Windows Vista または Windows Server 2008 上のアプリケーションにこのマニフェスト ファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしたユーザーは、この関数を成功させるために、拡張シェルで組み込みの Administrator (RunAs 管理者) としてアプリケーションを実行する必要があります。

ファイルのインストールまたはサービス プロバイダー固有の構成は、呼び出し元によって実行する必要があります。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー ws2spi.h
Library Ws2_32.lib
[DLL] Ws2_32.dll

関連項目

WSAProtocol_Info

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider

WSCEnumProtocols

WSCInstallProvider