Função RtlZeroVolatileMemory (wdm.h)
A função RtlZeroVolatileMemory é um wrapper de conveniência em torno de RtlFillVolatileMemory.
Sintaxe
volatile void * RtlZeroVolatileMemory(
[out] volatile void *Destination,
[in] size_t Length
);
Parâmetros
[out] Destination
Um ponteiro para o endereço inicial do bloco de memória a ser preenchido com zeros.
[in] Length
O tamanho do bloco de memória a ser preenchido com zeros, em bytes.
Retornar valor
Retorna o valor de Destination.
Comentários
A função RtlZeroVolatileMemory é um wrapper de conveniência em torno de RtlFillVolatileMemory.
Para obter mais informações, consulte a seção de comentários de RtlFillVolatileMemory.
Observação
Essa função funciona em todas as versões do Windows, não apenas nas mais recentes. Você precisa consumir o WDK mais recente para obter a declaração de função do cabeçalho wdm.h. Você também precisa da biblioteca (volatileaccessk.lib) do WDK mais recente. No entanto, o driver resultante será executado corretamente em versões mais antigas do Windows.
Exemplo
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 the
// RtlSecureZeroMemory function.
RtlZeroVolatileMemory(&SensitiveData, sizeof(SensitiveData));
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | wdm.h (include Wdm.h) |
Biblioteca | volatileaccessk.lib (modo Kernel), volatileaccessu.lib (Modo de usuário) |