WSCGetProviderInfo32 関数 (ws2spi.h)
構文
int WSCGetProviderInfo32(
[in] LPGUID lpProviderId,
[in] WSC_PROVIDER_INFO_TYPE InfoType,
[out] PBYTE Info,
[in, out] size_t *InfoSize,
[in] DWORD Flags,
[out] LPINT lpErrno
);
パラメーター
[in] lpProviderId
プロバイダーのグローバル一意識別子 (GUID) へのポインター。
[in] InfoType
この LSP プロトコル エントリに対して要求される情報クラス。
[out] Info
要求された LSP プロトコル エントリの情報クラス データを受信するバッファーへのポインター。 このパラメーターが NULL の場合、 WSCGetProviderInfo32 はエラーを返し、このバッファーに必要なサイズは InfoSize パラメーターで返されます。
[in, out] InfoSize
Info パラメーターが指すバッファーのサイズ (バイト単位)。 Info パラメーターが NULL の場合、 WSCGetProviderInfo32 はエラーを返し、 InfoSize パラメーターは必要なバッファーのサイズを受け取ります。
[in] Flags
WSCGetProviderInfo32 関数呼び出しの動作を変更するために使用されるフラグ。
[out] lpErrno
関数が失敗した場合のエラー コードへのポインター。
戻り値
エラーが発生しない場合、 WSCGetProviderInfo32 は ERROR_SUCCESS (ゼロ) を返します。 それ以外の場合は 、SOCKET_ERRORを返し、 lpErrno パラメーターで特定のエラー コードが返されます。
エラー コード | 意味 |
---|---|
|
呼び出しは実装されていません。 InfoType パラメーターに **ProviderInfoAudit** が指定されている場合、このエラーが返されます。 |
1 つ以上の引数がユーザー・アドレス・スペースの有効な部分にありません。 | |
1 つ以上の引数が無効です。 | |
指定した lpProviderId のプロトコル エントリが見つかりませんでした。 | |
回復不可能なエラーが発生しました。 このエラーは、ユーザーが Winsock レジストリにアクセスするために必要な管理特権がない、または Winsock カタログ エントリを開くときにエラーが発生した、といういくつかの条件で返されます。 | |
メモリが不足していました。 このエラーは、新しいカタログ エントリを割り当てるメモリが不足している場合に返されます。 |
解説
WSCGetProviderInfo32 は、厳密には 32 ビット バージョンの WSCGetProviderInfo です。 64 ビット コンピューターでは、特に 32 ビットではないすべての呼び出し (たとえば、"32" で終わっていないすべての関数) は、ネイティブの 64 ビット カタログで動作します。 64 ビット コンピューターで実行されるプロセスでは、特定の 32 ビット関数呼び出しを使用して、厳密に 32 ビット カタログで動作し、互換性を維持する必要があります。 特定の 32 ビット呼び出しの定義とセマンティクスは、ネイティブの呼び出しと同じです。
WSCGetProviderInfo32 は、32 ビットレイヤード サービス プロバイダーのプロトコル エントリの情報クラス データを取得するために使用されます。 InfoType パラメーターが ProviderInfoLspCategories に設定されている場合、成功すると、WSCGetProviderInfo32 は Info パラメーターを 32 ビット LSP によって実装された適切な LSP カテゴリ フラグと共に設定してを返します。
Winsock 2 は、階層化されたプロトコルに対応します。 階層化プロトコルは、より高いレベルの通信機能のみを実装するプロトコルであり、リモート エンドポイントとのデータの実際の交換に基づくトランスポート スタックに依存します。 階層化されたプロトコルまたは階層化されたサービス プロバイダーの例としては、認証を実行し、暗号化スキームに基づいて相互に合意されたプロトコルを確立するために、接続確立プロセスにプロトコルを追加するセキュリティ層があります。 このようなセキュリティ プロトコルでは、一般に、TCP や SPX などの基になる信頼性の高いトランスポート プロトコルのサービスが必要になります。 基本プロトコルという用語は、リモート エンドポイントとのデータ通信を実行できる TCP や SPX などのプロトコルを指します。 階層化プロトコルという用語は、スタンドアロンにできないプロトコルを記述するために使用されます。 その後、プロトコル チェーンは、1 つ以上の階層化されたプロトコルとして定義され、ベース プロトコルによって連結され、固定されます。 基本プロトコルには、WSAProtocol_Info 構造体の ChainLen メンバーが BASE_PROTOCOL に設定され、1 に定義されています。 階層化プロトコルでは、WSAPROTOCOL_INFO構造体の ChainLen メンバーが LAYERED_PROTOCOL に設定され、ゼロとして定義されます。 プロトコル チェーンには、WSAPROTOCOL_INFO構造体の ChainLen メンバーが 1 より大きく設定されています。
LSP の初期化中に、LSP は多数の Winsock SPI 関数へのポインターを提供する必要があります。 これらの関数は、LSP のすぐ上のレイヤー (別の LSP または Ws2_32.DLL) によって通常の処理中に呼び出されます。
インストール可能なファイル システム (IFS) を実装する LSP は、単独で実装される関数へのポインターを選択的に提供するか、LSP のすぐ下にあるレイヤーによって提供されるポインターを渡すかを選択できます。 IFS 以外の CSP は、独自のハンドルを提供するため、すべての Winsock SPI 関数を実装する必要があります。 これは、各 SPI では、作成したすべてのソケット ハンドルを下位プロバイダー (別の LSP またはベース プロトコル) のソケット ハンドルにマップするために LSP が必要になるためです。
ただし、すべての LSP は、Winsock SPI 関数のサブセットに対してのみ追加処理を行うことで、特定の作業を実行します。
LSP が実装する SPI 関数のサブセットと、それらの各関数に対して実行される余分な処理の性質に基づいて、LSP カテゴリを定義できます。
LSP を分類するだけでなく、Winsock ソケットを使用するアプリケーションを分類することで、実行時に特定のプロセスに LSP を関与させる必要があるかどうかを選択的に判断できるようになります。
Windows Vista 以降では、LSP は Windows ソケットの呼び出しとデータとの対話方法に基づいて分類できます。 LSP カテゴリは、Winsock SPI 関数のサブセットに対する動作の識別可能なグループです。 たとえば、HTTP コンテンツ フィルターはデータ インスペクター ( LSP_INSPECTOR カテゴリ) として分類されます。 LSP_INSPECTOR カテゴリは、データ転送 SPI 関数に対するパラメーターを検査しますが、変更は行いません。 アプリケーションは、LSP のカテゴリに対してクエリを実行し、LSP カテゴリとアプリケーションの許可された一連の LSP カテゴリに基づいて LSP を読み込まないことを選択できます。
次の表に、LSP を分類できるカテゴリを示します。
LSP カテゴリ | 説明 |
---|---|
**LSP_CRYPTO_COMPRESS** | LSP は、暗号化またはデータ圧縮プロバイダーです。 |
**LSP_FIREWALL** | LSP はファイアウォール プロバイダーです。 |
**LSP_LOCAL_CACHE** | LSP はローカル キャッシュ プロバイダーです。 |
**LSP_INBOUND_MODIFY** | LSP は受信データを変更します。 |
**LSP_INSPECTOR** | LSP はデータを検査またはフィルター処理します。 |
**LSP_OUTBOUND_MODIFY** | LSP は送信データを変更します。 |
**LSP_PROXY** | LSP はプロキシとして機能し、パケットをリダイレクトします。 |
**LSP_REDIRECTOR** | LSP はネットワーク リダイレクターです。 |
**LSP_SYSTEM** | LSP は、サービスおよびシステム プロセスで使用できます。 |
LSP は、複数のカテゴリに属している可能性があります。 たとえば、ファイアウォール/セキュリティ LSP は、インスペクター (LSP_INSPECTOR) カテゴリとファイアウォール (LSP_FIREWALL) カテゴリの両方に属している可能性があります。
LSP にカテゴリが設定されていない場合は、その他のすべてのカテゴリに属すると見なされます。 この LSP カテゴリは、サービスまたはシステム プロセス (lsass、winlogon、多くの svchost プロセスなど) には読み込まれません。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ws2spi.h |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |