Freigeben über


RtlSecureZeroMemory2-Funktion (wdm.h)

Die RtlSecureZeroMemory2-Funktion ist ein convenience wrapper um RtlFillVolatileMemory und ist identisch mit RtlZeroVolatileMemory.

Syntax

volatile void * RtlSecureZeroMemory2(
  [out] volatile void *Destination,
  [in]  size_t        Length
);

Parameter

[out] Destination

Ein Zeiger auf die Startadresse des Speicherblocks, der mit Nullen gefüllt werden soll.

[in] Length

Die Größe des Speicherblocks, der mit Nullen in Bytes gefüllt werden soll.

Rückgabewert

Gibt den Wert von Destination zurück.

Hinweise

Die RtlSecureZeroMemory2-Funktion ist ein convenience wrapper um RtlFillVolatileMemory und ist identisch mit RtlZeroVolatileMemory.

Weitere Informationen finden Sie im Abschnitt mit den Hinweisen von RtlFillVolatileMemory.

Hinweis

Diese Funktion funktioniert für alle Versionen von Windows, nicht nur für die neuesten Versionen. Sie müssen den neuesten WDK nutzen, um die Funktionsdeklaration aus dem wdm.h-Header abzurufen. Sie benötigen auch die Bibliothek (volatileaccessk.lib) aus dem neuesten WDK. Der resultierende Treiber wird jedoch unter älteren Versionen von Windows einwandfrei ausgeführt.

Beispiel

UCHAR SensitiveData[100];

// Imagine we temporarily store some sensitive cryptographic
// material in a buffer.

StoreCryptographicKey(&SensitiveData);

DoCryptographicOperation(&SensitiveData);

// Now that we are done using the sensitive data we want to
// erase it from the stack. We cannot call RtlFillMemory because
// if the compiler realizes that "SensitiveData" is not
// referenced again the compiler can remove the call to RtlFillMemory.
// Instead we can call RtlSecureZeroMemory2, RtlZeroVolatileMemory, or RtlFillVolatileMemory
// (the former two are convenience wrappers around the latter). These
// calls will not be optimized away by the compiler.
// Note that RtlSecureZeroMemory2 performs better than
// RtlSecureZeroMemory function.

RtlSecureZeroMemory2(&SensitiveData, sizeof(SensitiveData));

Anforderungen

Anforderung Wert
Header wdm.h (wdm.h einschließen)
Bibliothek volatileaccessk.lib (Kernelmodus), volatileaccessu.lib (Benutzermodus)

Weitere Informationen

RtlFillVolatileMemory

RtlZeroVolatileMemory