BCryptGenRandomFn
コールバックシグネチャ
NTSTATUS BCryptGenRandomFn(
BCRYPT_ALG_HANDLE hAlgorithm,
BYTE* pbBuffer,
DWORD cbBuffer,
DWORD dwFlags
);パラメーター
| フィールド | 型 | 説明 | ||||||
|---|---|---|---|---|---|---|---|---|
| hAlgorithm | BCRYPT_ALG_HANDLE | BCryptOpenAlgorithmProvider 関数を使用して作成されたアルゴリズムプロバイダーのハンドルです。プロバイダーの作成時に指定されたアルゴリズムは、乱数ジェネレーターインターフェイスをサポートしている必要があります。 | ||||||
| pbBuffer | BYTE* | 乱数を受け取るバッファーのアドレスです。このバッファーのサイズは、cbBuffer パラメーターで指定します。 | ||||||
| cbBuffer | DWORD | pbBuffer バッファーのサイズ (バイト単位) です。 | ||||||
| dwFlags | DWORD | この関数の動作を変更するフラグのセットです。このパラメーターには、0 または次の値を指定できます。
|
公式ドキュメント
BCryptGenRandom 関数は、乱数を生成します。
戻り値
関数の成功または失敗を示すステータスコードを返します。
返される可能性のあるコードには、次のものが含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| 関数は成功しました。 | |
| hAlgorithm パラメーターのハンドルが無効です。 | |
| 1 つ以上のパラメーターが無効です。 |
解説(Remarks)
既定の乱数プロバイダーは、NIST SP800-90 標準、特にその標準の CTR_DRBG の部分に準拠した乱数生成アルゴリズムを実装しています。
Windows Vista: Windows Vista with Service Pack 1 (SP1) より前では、既定の乱数プロバイダーは FIPS 186-2 標準に準拠した乱数生成アルゴリズムを実装しています。
サポートされているアルゴリズムプロバイダーを使用する場合、BCryptGenRandom はユーザーモードとカーネルモードのどちらからでも呼び出せます。カーネルモードの呼び出し元は、PASSIVE_LEVEL IRQL と DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hAlgorithm パラメーターに渡すハンドルは BCRYPT_PROV_DISPATCH フラグを使用して開かれている必要があり、BCryptGenRandom 関数に渡すポインターはページング不可 (またはロックされた) メモリを参照している必要があります。Windows Vista: Microsoft プロバイダーは DISPATCH_LEVEL での呼び出しをサポートしていません。
この関数をカーネルモードで呼び出すには、Driver Development Kit (DDK) に含まれる Cng.lib を使用します。Windows Server 2008 および Windows Vista: この関数をカーネルモードで呼び出すには、Ksecdd.lib を使用します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)