Freigeben über


ZeroModeMemory-Funktion (usermode_accessors.h)

The ZeroModeMemory function fills a memory region with zeros, based on the specified processor mode.

Syntax

VOID ZeroModeMemory(
  VOID            *Destination,
  SIZE_T          Length,
  KPROCESSOR_MODE Mode
);

Parameters

Destination

[out] Ein Zeiger auf die Startadresse des Speicherblocks auf Null.

Length

[in] Die Anzahl der Bytes bis 0.

Mode

[in] Der Prozessormodus, der bestimmt, wie der Speicherzugriff ausgeführt wird. Mode can be one of the following values.

Value Meaning
KernelMode Destination points to kernel-mode memory. The function performs a direct memory zero operation with memory_order_relaxed semantics.
UserMode Destination points to user-mode memory. The function raises an exception if Destination doesn't point to user-mode memory; otherwise it performs a zero operation at the specified address with memory_order_relaxed semantics.

Return value

None

Remarks

Diese Funktion bietet eine sichere Möglichkeit, einen Speicherbereich auf null zu stellen, wobei der vom angegebenen Prozessormodus festgelegte Mechanismus null ist. Dies ermöglicht flexible Speichervorgänge, die sich an verschiedene Ausführungskontexte anpassen können, während Speicherblöcke auf Null initialisiert werden.

When Mode is KernelMode:

  • The function performs a volatile zero operation using memory_order_relaxed semantics.

  • Die Funktion wird nicht als compilerintern erkannt, sodass der Compiler den Aufruf nie entfernt (entweder vollständig oder durch eine entsprechende Abfolge von Anweisungen ersetzen).

  • Wenn der Aufruf zurückgegeben wird, wurde der Puffer mit Nullen überschrieben. This function's memory accesses to the Destination will only be performed within the function (for example, the compiler can't move memory accesses out of this function).

  • Die Funktion kann nicht ausgerichtete Speicherzugriffe ausführen, wenn die Plattform dies zulässt.

  • Die Funktion kann mehr als einmal im Rahmen des Null-Vorgangs auf Speicherspeicherorte zugreifen.

Die Funktion löst eine strukturierte Ausnahme aus, wenn der Nullvorgang fehlschlägt, z. B. wenn die Zieladresse für den angegebenen Modus ungültig ist oder nicht auf sie zugegriffen werden kann.

Diese Funktion wird niemals vom Compiler optimiert, oder der Compiler erstellt zusätzlichen Zugriff auf diesen Speicherspeicherort, bevor die Funktion aufgerufen wird oder nachdem die Funktion zurückgegeben wird (es sei denn, der Quellcode führt diese Zugriffe explizit aus).

Diese Funktion funktioniert auf allen Versionen von Windows, nicht nur auf dem neuesten. You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. Der resultierende Treiber wird jedoch in älteren Versionen von Windows einwandfrei ausgeführt.

Requirements

Requirement Value
Mindestens unterstützter Client See Remarks
Header usermode_accessors.h
Library umaccess.lib
IRQL Kleiner oder gleich APC_LEVEL

See also

ZeroUserMemory

SetModeMemory

FillModeMemory

CopyToMode