Partager via


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

Voir aussi