Freigeben über


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
STATUS_SUCCESS
Die Funktion war erfolgreich.
STATUS_BUFFER_TOO_SMALL
Die Größe des vom cbHashObject Parameter angegebenen Hashobjekts ist nicht groß genug, um das Hashobjekt aufzunehmen.
STATUS_INVALID_HANDLE
Das Hashhandle im hHash Parameter ist ungültig.
STATUS_INVALID_PARAMETER
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