Funzione RtlSecureZeroMemory2 (wdm.h)
La funzione RtlSecureZeroMemory2 è un wrapper pratico intorno a RtlFillVolatileMemory ed è identico a RtlZeroVolatileMemory.
Sintassi
volatile void * RtlSecureZeroMemory2(
[out] volatile void *Destination,
[in] size_t Length
);
Parametri
[out] Destination
Puntatore all'indirizzo iniziale del blocco di memoria da riempire con zeri.
[in] Length
Dimensione del blocco di memoria da riempire con zeri, in byte.
Valore restituito
Restituisce il valore di Destination.
Commenti
La funzione RtlSecureZeroMemory2 è un wrapper pratico intorno a RtlFillVolatileMemory ed è identico a RtlZeroVolatileMemory.
Per altre informazioni, vedere la sezione osservazioni di RtlFillVolatileMemory.
Nota
Questa funzione funziona su tutte le versioni di Windows, non solo sulla versione più recente. Per ottenere la dichiarazione di funzione dall'intestazione wdm.h, è necessario utilizzare la chiave WDK più recente. È necessaria anche la libreria (volatileaccessk.lib) dalla versione più recente di WDK. Tuttavia, il driver risultante verrà eseguito correttamente nelle versioni precedenti di Windows.
Esempio
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));
Requisiti
Requisito | Valore |
---|---|
Intestazione | wdm.h (include Wdm.h) |
Libreria | volatileaccessk.lib (modalità kernel), volatileaccessu.lib (modalità utente) |