Share via


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

Confira também