Freigeben über


RtlFillNonVolatileMemory-Funktion (ntddk.h)

Die Routine RtlFillNonVolatileMemory füllt den nicht flüchtigen Zielpuffer mit dem angegebenen Wert aus.

Syntax

NTSYSAPI NTSTATUS RtlFillNonVolatileMemory(
  PVOID       NvToken,
  VOID        *NvDestination,
  SIZE_T      Size,
  const UCHAR Value,
  ULONG       Flags
);

Parameter

NvToken

Ein Zeiger auf eine undurchsichtige Struktur, die weitere Informationen zum nicht flüchtigen Speicherbereich enthält, den RtlGetNonVolatileToken zurückgegeben hat.

NvDestination

Ein Zeiger auf den nicht flüchtigen Zielpuffer.

Size

Gibt die Länge des Füllvorgangs in Bytes an.

Value

Eine UCHAR mit dem Wert, mit dem der Zielpuffer gefüllt werden soll.

Flags

Ein Wert vom Typ ULONG, der mindestens eines der folgenden Flags enthält:

Flags Bedeutung
FILL_NV_MEMORY_FLAG_FLUSH Legen Sie den angegebenen Wert fest, und leeren Sie dann den Zielbereich. Sofern nicht FILL_NV_MEMORY_FLAG_NO_DRAIN angegeben ist, folgt auf die Leerung ein Abfluss. Dieses Flag stellt sicher, dass die Daten auch im Falle eines Systemausfalls dauerhaft sind.
FILL_NV_MEMORY_FLAG_NON_TEMPORAL Führen Sie bei Verfügbarkeit ein nicht temporales Memset aus. Nicht temporal bedeutet, dass das Zwischenspeichern von Daten nicht erforderlich ist. Wenn der Prozessor keine nicht temporalen Vorgänge für Bereiche unterstützt, die kleiner als die Adressbusgröße sind, führen Sie ein reguläres Memset aus, gefolgt von "Flush" und "Drain". Wenn der Prozessor nicht temporale Verschiebungen vollständig ignoriert, ersetzt RtlSetNonVolatileMemory nicht durch Flush und Drain. Wenn Windows jedoch über keine Implementierung für eine bestimmte Architektur (z. B. ARM64) verfügt, ersetzen Sie sie durch "flush and drain".
FILL_NV_MEMORY_FLAG_PERSIST Stellt sicher, dass das Memset entweder durch Leeren oder nicht temporale Verschiebungen beibehalten wird. In der Regel verwendet das System den kostengünstigsten Ansatz, um die Daten beizubehalten. Dieses Flag stellt sicher, dass die Daten auch im Falle eines Systemausfalls dauerhaft sind. Wird ignoriert, wenn FILL_NV_MEMORY_FLAG_PERSIST angegeben wird.
FILL_NV_MEMORY_FLAG_NO_DRAIN Weist die Routine an, nicht auf den Abschluss der Leerung zu warten. Muss in Verbindung mit FILL_NV_MEMORY_FLAG_FLUSH und ohne FILL_NV_MEMORY_FLAG_PERSIST oder FILL_NV_MEMORY_FLAG_NON_TEMPORAL angegeben werden.

Rückgabewert

Die Routine gibt einen der status Codes zurück:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
NvToken ist ein ungültiger Zeiger oder ein ungültiges Token.
STATUS_SUCCESS
Die Anforderung wurde erfolgreich gesendet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1903
Kopfzeile ntddk.h
IRQL DPC_LEVEL