WSCInstallProvider 関数 (ws2spi.h)

**注** 階層型サービス プロバイダーは非推奨です。 Windows 8 および Windows Server 2012 以降では、 Windows フィルタリング プラットフォームを使用します
 
**WSCInstallProvider** 関数は、指定されたトランスポート プロバイダーをシステム構成データベースにインストールします。

構文

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

パラメーター

[in] lpProviderId

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

[in] lpszProviderDllPath

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

[in] lpProtocolInfoList

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

[in] dwNumberOfEntries

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

[out] lpErrno

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

戻り値

WSCInstallProvider が成功すると、0 が返されます。 それ以外の場合は 、SOCKET_ERRORを返し、 lpErrno パラメーターに特定のエラー コードが返されます。

エラー コード 意味
WSAEFAULT
1 つ以上の引数が、ユーザー・アドレス・スペースの有効な部分にありません。
WSAEINVAL
1 つ以上の引数が無効です。
WSAENOBUFS
バッファーにメモリを割り当てることはできません。
WSANO_RECOVERY
回復不可能なエラーが発生しました。 このエラーは、プロバイダーが既にインストールされている、ユーザーが Winsock レジストリに書き込むのに必要な管理特権がない、カタログ エントリを作成またはインストールするときにエラーが発生したなど、いくつかの条件で返されます。
WSASYSCALLFAILURE
失敗しないシステム呼び出しが失敗しました。
WSA_NOT_ENOUGH_MEMORY
メモリが不足していました。 このエラーは、新しいカタログ エントリを割り当てるためのメモリが不足している場合に返されます。

解説

WSCInstallProvider は、1 つのトランスポート サービス プロバイダーをインストールするために使用されます。 このルーチンは、指定されたプロバイダーに必要な一般的な Windows ソケット 2 構成情報を作成します。 これは、基本プロトコル、階層型プロトコル、およびプロトコル チェーンに適用されます。 レイヤード サービス プロバイダーがインストールされている場合は、 WSCInstallProviderAndChains を使用する必要があります。 WSCInstallProviderAndChains では、1 つの関数呼び出しを使用して、レイヤード プロトコルと 1 つ以上のプロトコル チェーンをインストールできます。 WSCInstallProvider を使用して同じ作業を実行するには、複数の関数呼び出しが必要になります。

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

lpProtocolInfoList パラメーターには、インストールするプロトコル エントリの一覧が含まれています。 WSCInstallProvider の呼び出し元は、適切なプロトコル エントリを設定する必要があります。 lpProtocolInfoList パラメーターは NULL にすることはできません。

この呼び出しが正常に完了すると、 その後 WSAEnumProtocols または WSCEnumProtocols を呼び出すと、新しく作成されたプロトコル エントリが返されます。 Windows 環境では、WSCInstallProvider が正常に完了した後に WSAStartup を呼び出して作成された Ws_32.dll のインスタンスにのみ、WSAEnumProtocolsWSCEnumProtocols が返されるときに新しいエントリが含まれることに注意してください。

メモWSAEnumProtocols 関数は、WSCEnumProtocols が行っている間、レイヤー化されたプロトコル エントリを列挙しません。

 

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

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

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

要件

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

関連項目

WSAEnumProtocols

WSAProtocol_Info

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider

WSCEnumProtocols