BCryptHashDataFn
コールバックシグネチャ
NTSTATUS BCryptHashDataFn(
BCRYPT_HASH_HANDLE hHash,
BYTE* pbInput,
DWORD cbInput,
DWORD dwFlags
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| hHash | BCRYPT_HASH_HANDLE | 操作の実行に使用するハッシュまたは MAC オブジェクトのハンドルです。このハンドルは、BCryptCreateHash 関数または BCryptDuplicateHash 関数を呼び出して取得します。 |
| pbInput | BYTE* | 処理するデータを格納したバッファーへのポインターです。cbInput パラメーターには、このバッファー内のバイト数を指定します。この関数は、このバッファーの内容を変更しません。 |
| cbInput | DWORD | pbInput バッファーのサイズ (バイト単位) です。 |
| dwFlags | DWORD | この関数の動作を変更するフラグのセットです。現在定義されているフラグはないため、このパラメーターはゼロにする必要があります。 |
公式ドキュメント
BCryptHashData 関数は、進行中の暗号ハッシュまたは メッセージ認証コード (MAC) の計算にデータを追加します。
戻り値
関数の成功または失敗を示すステータスコードを返します。
返される可能性のあるコードには、次のものが含まれます (これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| STATUS_SUCCESS | 関数は成功しました。 |
| STATUS_INVALID_PARAMETER | 1 つ以上のパラメーターが無効です。 |
| STATUS_INVALID_HANDLE | hHash パラメーターのハンドルが無効です。BCryptFinishHash 関数を呼び出した後は、そのハンドルを再利用できません。ただし、BCRYPT_HASH_REUSABLE_FLAG フラグを指定して作成されたハンドルは例外です。 |
解説(Remarks)
複数のバッファーをハッシュまたは MAC にまとめるには、この関数を複数回呼び出し、そのつど異なるバッファーを渡します。これは、それらのバッファーを 1 つのバッファーに連結して 1 回だけハッシュまたは MAC を計算するのと機能的には同等ですが、データがメモリ上で自然に連続していない場合には、このほうが便利なことが多くあります。
ハッシュまたは MAC の値を取得するには、BCryptFinishHash 関数を呼び出します。BCryptFinishHash 関数を呼び出した後は、hHash ハンドルを再利用できません。ただし、BCRYPT_HASH_REUSABLE_FLAG フラグを指定して作成されたハンドルは例外です。
サポートされているアルゴリズムプロバイダーを使用する場合、BCryptHashData はユーザーモードとカーネルモードのどちらからでも呼び出せます。カーネルモードの呼び出し元は、PASSIVE_LEVEL IRQL と DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hAlgorithm パラメーターに指定するハンドルは BCRYPT_PROV_DISPATCH フラグを使用して開かれている必要があり、BCryptHashData 関数に渡すポインターはすべてページング不可 (またはロックされた) メモリを参照している必要があります。
この関数をカーネルモードで呼び出すには、Driver Development Kit (DDK) に含まれる Cng.lib を使用します。Windows Server 2008 および Windows Vista: この関数をカーネルモードで呼び出すには、Ksecdd.lib を使用します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)