BCryptResolveProviders 関数 (bcrypt.h)

BCryptResolveProviders 関数は、指定された条件を満たすすべてのプロバイダーのコレクションを取得します。

構文

NTSTATUS BCryptResolveProviders(
  [in, optional] LPCWSTR              pszContext,
  [in, optional] ULONG                dwInterface,
  [in, optional] LPCWSTR              pszFunction,
  [in, optional] LPCWSTR              pszProvider,
  [in]           ULONG                dwMode,
  [in]           ULONG                dwFlags,
  [in, out]      ULONG                *pcbBuffer,
  [in, out]      PCRYPT_PROVIDER_REFS *ppBuffer
);

パラメーター

[in, optional] pszContext

プロバイダーを取得するコンテキストの識別子を含む null で終わる Unicode 文字列へのポインター。 これが NULL または空の文字列に設定されている場合、既定のコンテキストが想定されます。

[in, optional] dwInterface

プロバイダーがサポートする必要があるインターフェイスの識別子。 これは 、CNG インターフェイス識別子のいずれかである必要があります。 pszFunction パラメーターが NULL または空の文字列でない場合は、dwInterface を 0 に設定して、関数がインターフェイスを推論するように強制できます。

[in, optional] pszFunction

プロバイダーがサポートする必要があるアルゴリズムまたは関数識別子を含む null で終わる Unicode 文字列へのポインター。 これには、標準の CNG アルゴリズム識別子 の 1 つ、または別の登録済みアルゴリズムの識別子を指定できます。 dwInterface が 0 以外の値に設定されている場合、pszFunctionを NULL にして、すべてのアルゴリズムと関数を含めることができます。

[in, optional] pszProvider

取得するプロバイダーの名前を含む null で終わる Unicode 文字列へのポインター。 このパラメーターが NULL の場合、すべてのプロバイダーが含まれます。

このパラメーターを使用すると、複数のプロバイダーが他の条件を満たす場合に取得する特定のプロバイダーを指定できます。

[in] dwMode

取得するプロバイダーの種類を指定します。 次のいずれかの値を指定できます。

意味
CRYPT_UM
ユーザー モード プロバイダーを取得します。
CRYPT_KM
カーネル モード プロバイダーを取得します。
CRYPT_MM
ユーザー モードとカーネル モード プロバイダーの両方を取得します。

[in] dwFlags

この関数の動作を変更するフラグのセット。

これは、0 または次の値の 1 つ以上の組み合わせにすることができます。

意味
CRYPT_ALL_FUNCTIONS
1
この関数は、指定された条件を満たす各プロバイダーでサポートされているすべての関数を取得します。 このフラグが指定されていない場合、この関数は、指定された条件を満たすプロバイダーまたはプロバイダーの最初の関数のみを取得します。
CRYPT_ALL_PROVIDERS
2
この関数は、指定された条件を満たすすべてのプロバイダーを取得します。 このフラグが指定されていない場合、この関数は、指定された条件を満たす最初のプロバイダーのみを取得します。

[in, out] pcbBuffer

エントリ時に、ppBuffer パラメーターが指すバッファーのサイズ (バイト単位) を含む DWORD 値へのポインター。 終了時に、この値はバッファーにコピーされたバイト数、またはバッファーの必要なサイズ (バイト単位) を受け取ります。

[in, out] ppBuffer

指定した 条件を満 たすプロバイダーのコレクションを受け取るCRYPT_PROVIDER_REFS ポインターのアドレス。

このパラメーターが NULL の場合、この関数は STATUS_SUCCESS を返し、すべてのデータの必要なサイズ (バイト単位) である pcbBuffer パラメーターが指す値を格納します。

このパラメーターが NULL ポインターのアドレスの場合、この関数は必要なメモリを割り当て、プロバイダーに関する情報をメモリに入力し、このパラメーターにこのメモリへのポインターを配置します。 このメモリの使用が完了したら、このポインターを BCryptFreeBuffer 関数に渡して解放します。

このパラメーターが NULL 以外のポインターのアドレスである場合、この関数はプロバイダー情報をこのバッファーにコピーします。 pcbBuffer パラメーターには、バッファー全体のサイズ (バイト単位) が含まれている必要があります。 バッファーがすべてのプロバイダー情報を保持するのに十分な大きさでない場合、この関数は STATUS_BUFFER_TOO_SMALLを返します。

戻り値

関数の成功または失敗を示す状態コードを返します。

可能なリターン コードには、次のものが含まれますが、これらに限定されません。

リターン コード 説明
STATUS_SUCCESS
関数は成功しました。
STATUS_BUFFER_TOO_SMALL
pcbBuffer パラメーターで指定されたサイズは、すべてのデータを保持するのに十分な大きさではありません。
STATUS_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
STATUS_NOT_FOUND
指定されたすべての条件を満たすプロバイダーが見つかりませんでした。

注釈

BCryptResolveProviders は、ユーザー モードまたはカーネル モードから呼び出すことができます。 カーネル モードの呼び出し元はPASSIVE_LEVEL IRQL で実行されている必要があります。

要件

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