WSCInstallProvider64_32関数 (ws2spi.h)
[**WSCInstallProvider64_32** は、Windows Vista の時点で使用できなくなります。 代わりに、 WSCInstallProvider または WSCInstallProviderAndChains を使用します。
WSCInstallProvider64_32関数は、指定されたトランスポート サービス プロバイダーを 64 ビット コンピューター上の 32 ビットおよび 64 ビットのシステム構成データベースにインストールします。
構文
int WSCInstallProvider64_32(
[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
関数が失敗した場合のエラー コードへのポインター。
戻り値
WSCInstallProvider64_32成功すると、0 が返されます。 それ以外の場合は 、SOCKET_ERRORを返し、 lpErrno パラメーターで特定のエラー コードが返されます。
エラー コード | 意味 |
---|---|
1 つ以上の引数がユーザー・アドレス・スペースの有効な部分にありません。 | |
1 つ以上の引数が無効です。 | |
バッファーにメモリを割り当てませんでした。 | |
回復不可能なエラーが発生しました。 このエラーは、プロバイダーが既にインストールされている、ユーザーが Winsock レジストリに書き込むのに必要な管理特権がない、カタログ エントリを作成またはインストールするときにエラーが発生した、など、いくつかの条件で返されます。 | |
失敗しないシステム呼び出しが失敗しました。 | |
メモリが不足していました。 このエラーは、新しいカタログ エントリを割り当てるメモリが不足している場合に返されます。 |
注釈
WSCInstallProvider64_32 は、1 つのトランスポート サービス プロバイダーのみをインストールする WSCInstallProviderAndChains64_32 関数の基本バージョンです。 WSCInstallProvider64_32 を使用して、ベース プロトコル、階層化プロトコル、またはプロトコル チェーンをインストールできます。 階層化サービス プロバイダーがインストールされている場合は、この関数を使用すると、 1 つの関数呼び出しで階層化プロトコルと 1 つ以上のプロトコル チェーンをインストールできるため、WSCInstallProviderAndChains64_32を使用する必要があります。 WSCInstallProvider64_32を使用して同じ作業を実行するには、各サービス プロバイダー コンポーネントをインストールするために複数の関数呼び出しが必要になります。
Windows ソケット (Winsock) 2 は、階層化されたプロトコルの概念に対応します。 階層化されたプロトコルは、リモート エンドポイントとのデータの実際の交換に基づくトランスポート スタックに依存しながら、より高いレベルの通信機能のみを実装するプロトコルです。 階層化されたプロトコルの例としては、認証を実行し、相互に合意された暗号化スキームを確立するためのプロトコルを接続確立プロセスに追加するセキュリティ層があります。 このようなセキュリティ プロトコルでは、一般に、TCP や SPX などの基になる信頼性の高いトランスポート プロトコルのサービスが必要になります。 基本プロトコルという用語は、リモート エンドポイントとのデータ通信を完全に実行できる TCP や SPX などのプロトコルを指します。 階層化プロトコルという用語は、スタンドアロンにできないプロトコルを記述するために使用されます。 その後、プロトコル チェーンは、1 つ以上の階層化されたプロトコルとして定義され、ベース プロトコルによって連結され、固定されます。 基本プロトコルには、WSAProtocol_Info 構造体の ChainLen メンバーが BASE_PROTOCOL に設定され、1 に定義されています。 階層化プロトコルでは、WSAPROTOCOL_INFO構造体の ChainLen メンバーが LAYERED_PROTOCOL に設定され、ゼロとして定義されます。 プロトコル チェーンには、WSAPROTOCOL_INFO構造体の ChainLen メンバーが 1 より大きく設定されています。
WSCInstallProvider64_32 は、64 ビット バージョンの WSCInstallProvider であり、64 ビット プラットフォーム上の 32 ビット カタログと 64 ビット カタログの両方にプロバイダーをインストールします。 つまり、64 ビット プラットフォームでは、2 つの Winsock カタログが維持され、32 ビットプロセスと 64 ビット プロセスの両方で、この関数でインストールされているトランスポート プロバイダーを読み込むことができます。 64 ビット プラットフォームでは、 WSCInstallProvider は 64 ビット Winsock カタログにのみインストールします。
64 ビット コンピューターでは、32 ビット用に特別に設計されていないすべての呼び出し (たとえば、"32" で終わっていないすべての関数) は、ネイティブの 64 ビット カタログで動作します。 64 ビット コンピューターで実行されるプロセスでは、互換性を維持するために 、WSCInstallProvider64_32 を使用して 32 ビット カタログと 64 ビット カタログの両方で動作する必要があります。 特定の 32 ビット呼び出しの定義とセマンティクスは、ネイティブの呼び出しと同じです。
このルーチンは、指定されたプロバイダーに必要な一般的な Winsock 2 構成情報を作成します。 これは、ベース プロトコル、階層化されたプロトコル、プロトコル チェーンに適用されます。
lpProtocolInfoList パラメーターには、インストールするプロトコル エントリの一覧が含まれています。 WSCInstallProvider64_32の呼び出し元は、適切なプロトコル エントリを設定する責任があります。 lpProtocolInfoList パラメーターは NULL にすることはできません。
このルーチンが正常に完了すると、lpProtocolInfoList に指定されたプロトコル情報は、WSAEnumProtocols、WSCEnumProtocols、または WSCEnumProtocols32 によって返されます。 Windows では、この関数が正常に完了した後に WSAStartup を 呼び出して作成された Ws2_32.dll のインスタンスにのみ、 WSAEnumProtocols、 WSCEnumProtocols、WSCEnumProtocols32 の新しいエントリが含まれること に注意してください。
成功すると、 WSCInstallProvider64_32 は 、WSAProviderConfigChange を呼び出して、変更の通知を登録したすべての関心のあるアプリケーションにアラートを送信しようとします。
WSCInstallProvider64_32関数は、Administrators グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。 Administrators グループのメンバーではないユーザーによってWSCInstallProvider64_32が呼び出された場合、関数呼び出しは失敗し、lpErrno パラメーターでWSANO_RECOVERYが返されます。 Windows Vista または Windows Server 2008 を実行しているコンピューターの場合、ユーザー アカウント制御 (UAC) が原因でこの関数が失敗する可能性もあります。 この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、 requestedExecutionLevel が requireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、この呼び出しは失敗します。 Windows Vista または Windows Server 2008 上のアプリケーションにこのマニフェスト ファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしたユーザーは、この関数を成功させるために、拡張シェルで組み込みの Administrator (RunAs 管理者) としてアプリケーションを実行する必要があります。
ファイルのインストールまたはサービス プロバイダー固有の構成は、呼び出し元のアプリケーションによって実行する必要があります。
WSCInstallProvider または WSCInstallProviderAndChains 関数を使用する場合、32 ビット カタログにプロバイダーをインストールするには関数を 1 回呼び出し、64 ビット プラットフォームの 64 ビット カタログにプロバイダーをインストールするには 1 回呼び出す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP Professional x64 Edition [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 x64 Edition [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ws2spi.h |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |