ZeroDeviceMemory-Funktion

Die ZeroDeviceMemory-Funktion legt den Inhalt eines Puffers ohne Störungen von Compileroptimierungen auf Nullen in Situationen fest, in denen der Entwickler zusätzlich sicherstellen muss, dass beim Zugriff auf Gerätespeicher keine Ausrichtungsfehler erzeugt werden.

Wichtig

Einige Informationen beziehen sich auf Vorabversionen, die vor der kommerziellen Freigabe grundlegend geändert werden können. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

Parameter

Parameterziel [out]

Ein Zeiger auf die Startadresse des Speicherblocks, der mit Nullen gefüllt werden soll.

Parameterlänge [in]

Die Größe des Speicherblocks in Bytes, der mit Nullen gefüllt werden soll.

Syntax

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

Hinweise

Diese API ist ein hilfreicher Wrapper um FillDeviceMemory. Weitere Informationen finden Sie in den Hinweisen von FillDeviceMemory.

Hinweis

Diese Funktion funktioniert nicht nur auf der neuesten Windows-Version, sondern auf allen Versionen. Sie müssen das neueste SDK verwenden, um die Funktionsdeklaration aus dem winbase.h-Header abzurufen. Außerdem benötigen Sie die Bibliothek (volatileaccessu.lib) aus dem neuesten SDK. Die resultierende Binärdatei wird jedoch in älteren Versionen von Windows problemlos ausgeführt.

Beispiel

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

Anforderungen

Unterstützte Mindestversion (Client): Windows 11 Insider Preview Build TBD

Header: winbase.h (Winbase.h eingeschlossen)

Kernelmodusbibliothek: volatileaccessk.lib

Benutzermodusbibliothek: volatileaccessu.lib

Siehe auch