WSCGetProviderInfo 関数 (ws2spi.h)

**注** 階層型サービス プロバイダーは非推奨です。 Windows 8とWindows Server 2012以降では、Windows フィルター プラットフォームを使用します
 
**WSCGetProviderInfo** 関数は、レイヤード サービス プロバイダー (LSP) の情報クラスに関連付けられているデータを取得します。

構文

int WSCGetProviderInfo(
  [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 の場合、 WSCGetProviderInfo はエラーを返し、このバッファーに必要なサイズは InfoSize パラメーターで返されます。

[in, out] InfoSize

Info パラメーターが指すバッファーのサイズ (バイト単位)。 Info パラメーターが NULL の場合、 WSCGetProviderInfo はエラーを返し、 InfoSize パラメーターは必要なバッファーのサイズを受け取ります。

[in] Flags

WSCGetProviderInfo 関数呼び出しの動作を変更するために使用されるフラグ。

[out] lpErrno

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

戻り値

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

エラー コード 意味
ERROR_CALL_NOT_IMPLEMENTED
呼び出しは実装されていません。 InfoType パラメーターに **ProviderInfoAudit** が指定されている場合、このエラーが返されます。
WSAEFAULT
1 つ以上の引数がユーザー・アドレス・スペースの有効な部分にありません。
WSAEINVAL
1 つ以上の引数が無効です。
WSAEINVALIDPROVIDER
指定した lpProviderId のプロトコル エントリが見つかりませんでした。
WSANO_RECOVERY
回復不可能なエラーが発生しました。 このエラーは、ユーザーが Winsock レジストリにアクセスするために必要な管理特権がない、または Winsock カタログ エントリを開くときにエラーが発生した、といういくつかの条件で返されます。
WSA_NOT_ENOUGH_MEMORY
メモリが不足していました。 このエラーは、新しいカタログ エントリを割り当てるメモリが不足している場合に返されます。

注釈

WSCGetProviderInfo は、階層化されたサービス プロバイダーの情報クラス データを取得するために使用されます。 InfoType パラメーターが ProviderInfoLspCategories に設定されている場合、成功すると、WSCGetProviderInfoInfo パラメーターを 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

こちらもご覧ください

階層型サービス プロバイダーとアプリケーションの分類

WSAProtocol_Info

WSCGetApplicationCategory

WSCSetApplicationCategory

WSCSetProviderInfo

WSC_PROVIDER_INFO_TYPE