BCryptDuplicateHash-Funktion (bcrypt.h)
Die BCryptDuplicateHash--Funktion dupliziert ein vorhandenes Hash- oder Message Authentication Code (MAC)-Objekt. Das duplizierte Objekt enthält alle Zustands- und Daten, die im ursprünglichen Objekt am Punkt der Duplizierung enthalten sind.
Syntax
NTSTATUS BCryptDuplicateHash(
[in] BCRYPT_HASH_HANDLE hHash,
[out] BCRYPT_HASH_HANDLE *phNewHash,
[out] PUCHAR pbHashObject,
[in] ULONG cbHashObject,
[in] ULONG dwFlags
);
Parameter
[in] hHash
Das Handle des hash- oder MAC-Objekts, das dupliziert werden soll.
[out] phNewHash
Ein Zeiger auf einen BCRYPT_HASH_HANDLE Wert, der das Handle empfängt, das das doppelte Hash- oder MAC-Objekt darstellt.
[out] pbHashObject
Ein Zeiger auf einen Puffer, der das doppelte Hash- oder MAC-Objekt empfängt. Der cbHashObject Parameter enthält die Größe dieses Puffers. Die erforderliche Größe dieses Puffers kann durch Aufrufen der BCryptGetProperty--Funktion abgerufen werden, um die BCRYPT_OBJECT_LENGTH-Eigenschaft abzurufen. Dadurch wird die Größe des Hashobjekts für den angegebenen Algorithmus bereitgestellt.
Wenn das duplizierte Hashhandle freigegeben wird, geben Sie diesen Speicher frei.
[in] cbHashObject
Die Größe des pbHashObject- Puffers in Bytes.
[in] dwFlags
Eine Reihe von Flags, die das Verhalten dieser Funktion ändern. Derzeit sind keine Flags definiert, daher sollte dieser Parameter null sein.
Rückgabewert
Gibt einen Statuscode zurück, der den Erfolg oder Fehler der Funktion angibt.
Mögliche Rückgabecodes umfassen, aber nicht beschränkt auf Folgendes.
Rückgabecode | Beschreibung |
---|---|
|
Die Funktion war erfolgreich. |
|
Die Größe des vom cbHashObject Parameter angegebenen Hashobjekts ist nicht groß genug, um das Hashobjekt aufzunehmen. |
|
Das Hashhandle im hHash Parameter ist ungültig. |
|
Mindestens ein Parameter ist ungültig. |
Bemerkungen
Diese Funktion ist nützlich, wenn Sie einen Hash oder MAC über einen Block allgemeiner Daten berechnen. Nachdem die allgemeinen Daten verarbeitet wurden, kann das Hash- oder MAC-Objekt dupliziert werden, und dann können die eindeutigen Daten den einzelnen Objekten hinzugefügt werden.
Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptDuplicateHash entweder über den Benutzermodus oder den Kernelmodus aufgerufen werden. Kernelmodusaufrufer können entweder PASSIVE_LEVELIRQL- oder DISPATCH_LEVEL IRQL ausgeführt werden. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEList, muss das im hHash Parameter bereitgestellte Handle von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wird, der mithilfe des BCRYPT_PROV_DISPATCH-Flags geöffnet wurde, und alle Zeiger, die an den BCryptDestroyKey-Funktion übergeben wurden, müssen auf nicht seitenseitigen (oder gesperrten) Speicher verweisen.
Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.lib, das Teil des Driver Development Kit (DDK) ist. Windows Server 2008 und Windows Vista: Verwenden Sie Ksecdd.lib, um diese Funktion im Kernelmodus aufzurufen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | bcrypt.h |
Library | Bcrypt.lib |
DLL- | Bcrypt.dll |