次の方法で共有


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 アルゴリズム識別子 のいずれか、または別の登録済みアルゴリズムの識別子です。 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_LEVELIRQLで実行されている必要があります。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー bcrypt.h
ライブラリ Bcrypt.lib
DLL Bcrypt.dll