Fonction ZeroDeviceMemory
La fonction ZeroDeviceMemory définit le contenu d’une mémoire tampon sur des zéros sans interférence des optimisations du compilateur dans les situations où le développeur doit également être sûr que des erreurs d’alignement ne seront pas générées lors de l’accès à la mémoire de l’appareil.
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]
Un pointeur vers l’adresse de début du bloc de mémoire à remplir avec des zéros.
Paramètre Length [in]
La taille du bloc de mémoire à remplir avec des zéros, exprimée en octets.
Syntaxe
volatile void*
ZeroDeviceMemory (
_Out_writes_bytes_all_(Length) volatile void* Destination,
SIZE_T Length
);
Notes
Cette API est un wrapper pratique autour de FillDeviceMemory. Pour plus d’informations, consultez les remarques de FillDeviceMemory.
Remarque
Cette fonction fonctionne sur toutes les versions de Windows, pas seulement sur la dernière. Vous devez utiliser le 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 SDK le plus récent. Cependant, le fichier binaire résultant s’exécutera correctement sur les versions antérieures de Windows.
Exemple
// In this scenario we are setting data on memory mapped
// as "device memory" (i.e. memory not backed by RAM) to the value zero. On
// some platforms like ARM64, device memory cannot tolerate
// memory accesses that are not naturally aligned (i.e. a 4-byte
// load must be 4-byte aligned). Functions like memset, FillMemory,
// and even FillVolatileMemory may perform unaligned memory accesses
// because it is typically faster to do this.
// To ensure only naturally aligned accesses happen, use FillDeviceMemory.
//
// ZeroDeviceMemory is an wrapper around FillDeviceMemory that sets the memory
// to zero.
ZeroDeviceMemory(DeviceMemoryBuffer, 100);
Spécifications
Client minimal pris en charge : Windows 11 Insider Preview Build TBD
En-tête : winbase.h (include Winbase.h)
Bibliothèque en mode noyau : volatileaccessk.lib
Bibliothèque en mode utilisateur : volatileaccessu.lib