Partager via


Fonction RtlFillNonVolatileMemory (ntddk.h)

La routine RtlFillNonVolatileMemory remplit la mémoire tampon de destination non volatile avec la valeur donnée.

Syntaxe

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

Paramètres

NvToken

Pointeur vers une structure opaque qui contient plus d’informations sur la région de mémoire non volatile retournée par RtlGetNonVolatileToken .

NvDestination

Pointeur vers la mémoire tampon de destination non volatile.

Size

Spécifie la longueur, en octets, de l’opération de remplissage.

Value

UCHAR contenant la valeur avec laquelle remplir la mémoire tampon de destination.

Flags

Valeur de type ULONG contenant un ou plusieurs des indicateurs suivants :

Indicateurs Signification
FILL_NV_MEMORY_FLAG_FLUSH Définissez la valeur fournie, puis videz la plage de destination. Sauf si FILL_NV_MEMORY_FLAG_NO_DRAIN est spécifié, le vidage est suivi d’un drain. Cet indicateur garantit que les données sont durables, même en cas de perte de courant du système.
FILL_NV_MEMORY_FLAG_NON_TEMPORAL Exécutez un memset non temporel lorsqu’il est disponible. Non temporelle signifie que la mise en cache des données n’est pas nécessaire. Si le processeur ne prend pas en charge les opérations non temporelles pour les plages inférieures à la taille du bus d’adresses, effectuez un memset standard suivi d’un vidage et d’un drainage. Si le processeur ignore complètement les déplacements non temporels, RtlSetNonVolatileMemory ne le remplace pas par le vidage et le drainage. Toutefois, si Windows n’a pas d’implémentation pour une architecture donnée (par exemple ARM64), remplacez-la par vidage et drainage.
FILL_NV_MEMORY_FLAG_PERSIST Vérifie que le memset est conservé en vidant ou en utilisant des déplacements non temporels. En règle générale, le système utilise l’approche la moins coûteuse pour conserver les données. Cet indicateur permet de s’assurer que les données sont durables, même en cas de perte de courant du système. Ignoré lorsque FILL_NV_MEMORY_FLAG_PERSIST est spécifié.
FILL_NV_MEMORY_FLAG_NO_DRAIN Indique à la routine de ne pas attendre la fin du vidage. Doit être spécifié conjointement avec FILL_NV_MEMORY_FLAG_FLUSH et sans FILL_NV_MEMORY_FLAG_PERSIST ni FILL_NV_MEMORY_FLAG_NON_TEMPORAL.

Valeur retournée

La routine retourne l’un des codes status :

Code de retour Description
STATUS_INVALID_PARAMETER
NvToken est un pointeur ou un jeton non valide.
STATUS_SUCCESS
La demande a abouti.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 version 1903
En-tête ntddk.h
IRQL DPC_LEVEL