Partager via


Fonction SecureZeroMemory2

La fonction SecureZeroMemory2 remplit un bloc de mémoire avec des zéros d’une manière totalement sécurisée.

Important

Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Paramètres

Paramètre Destination [out]

Pointeur vers l’adresse de début du bloc de mémoire à remplir avec des zéros.

Paramètre Length [in]

Taille du bloc de mémoire à remplir avec des zéros, exprimée en octets.

Syntaxe

volatile void*
  SecureZeroMemory2 (
    _Out_writes_bytes_all_(Length) volatile void* Destination,
    SIZE_T Length
  );

Notes

Cette API est un wrapper pratique autour de FillVolatileMemory et est identique à ZeroVolatileMemory. Consultez les remarques de FillVolatileMemory pour obtenir plus d’informations.

Remarque

Cette fonction fonctionne sur toutes les versions de Windows, pas seulement sur la dernière. Vous devez utiliser le Kit de développement logiciel (SDK) le plus récent pour obtenir la déclaration de fonction de l’en-tête winbase.h. Vous avez également besoin de la bibliothèque (volatileaccessu.lib) du Kit de développement logiciel (SDK) le plus récent. Cependant, le fichier binaire résultant s’exécutera correctement sur les versions antérieures de Windows.

Exemple

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));

Spécifications

Client minimal pris en charge : Version d’évaluation Windows 11 Insider à déterminer

En-tête : winbase.h (inclut Winbase.h)

Bibliothèque en mode noyau : volatileaccessk.lib

Bibliothèque en mode utilisateur : volatileaccessu.lib

Voir aussi