Função SecureZeroMemory2
A função SecureZeroMemory2 preenche um bloco de memória com zeros de uma forma garantidamente segura.
Importante
Algumas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.
Parâmetros
Destino do param [saída]
Um ponteiro para o endereço inicial do bloco de memória a ser preenchido com zeros.
Comprimento do param [entrada]
O tamanho do bloco de memória a ser preenchido com zeros, em bytes.
Sintaxe
volatile void*
SecureZeroMemory2 (
_Out_writes_bytes_all_(Length) volatile void* Destination,
SIZE_T Length
);
Comentários
Essa API é um wrapper de conveniência em torno de FillVolatileMemory e é idêntica a ZeroVolatileMemory. Veja os comentários de FillVolatileMemory para obter mais informações.
Observação
Esta função funciona em todas as versões do Windows, não apenas na mais recente. Você precisa consumir o SDK mais recente para obter a declaração de função do cabeçalho winbase.h
. Você também precisa da biblioteca (volatileaccessu.lib
) do SDK mais recente. No entanto, o binário resultante será executado bem 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 FillMemory because
// if the compiler realizes that "SensitiveData" is not
// referenced again the compiler can remove the call to FillMemory.
// Instead we can call SecureZeroMemory2, ZeroVolatileMemory, or FillVolatileMemory
// (the former two are convienence wrappers around the latter). These
// calls will not be optimized away by the compiler.
// Note that SecureZeroMemory2 performs better than the old
// SecureZeroMemory API.
SecureZeroMemory2(&SensitiveData, sizeof(SensitiveData));
Requisitos
Cliente mínimo suportado: Windows 11 Insider Preview Build TBD
Cabeçalho: winbase.h (incluir Winbase.h)
Biblioteca de modo kernel: volatileaccessk.lib
Biblioteca de modo de usuário: volatileaccessu.lib