RtlFillNonVolatileMemory function (ntddk.h)
The routine RtlFillNonVolatileMemory fills the non-volatile destination buffer with the given value.
Syntax
NTSYSAPI NTSTATUS RtlFillNonVolatileMemory(
PVOID NvToken,
VOID *NvDestination,
SIZE_T Size,
const UCHAR Value,
ULONG Flags
);
Parameters
NvToken
A pointer to an opaque structure that has more information about the non-volatile memory region which RtlGetNonVolatileToken had returned.
NvDestination
A pointer to the non-volatile destination buffer.
Size
Specifies the length, in bytes, of the fill operation.
Value
A UCHAR containing the value with which to fill the destination buffer.
Flags
A value of type ULONG containing one or more of the following flags:
Flags | Meaning |
---|---|
FILL_NV_MEMORY_FLAG_FLUSH | Set the provided value, then flush the destination range. Unless FILL_NV_MEMORY_FLAG_NO_DRAIN is specified, the flush is followed by a drain. This flag ensures that the data is durable even in the event of system power loss. |
FILL_NV_MEMORY_FLAG_NON_TEMPORAL | Perform a non-temporal memset when available. Non-temporal means that data caching is not required. If the processor does not support non-temporal operations for ranges smaller than address bus size, perform a regular memset followed by flush and drain. If the processor ignores non-temporal moves altogether, RtlSetNonVolatileMemory doesn't replace it with flush and drain. However, if Windows doesn't haven an implementation for a given architecture (say ARM64), replace it with flush and drain. |
FILL_NV_MEMORY_FLAG_PERSIST | Makes sure that the memset is persisted either by flushing or using non-temporal moves. Typically, the system uses the approach that is least costly to persist the data. This flag makes sure that the data is durable even in case of system power loss. Ignored when FILL_NV_MEMORY_FLAG_PERSIST is specified. |
FILL_NV_MEMORY_FLAG_NO_DRAIN | Tells the routine not to wait for the flush to complete. Must be specified in conjunction with FILL_NV_MEMORY_FLAG_FLUSH and without FILL_NV_MEMORY_FLAG_PERSIST or FILL_NV_MEMORY_FLAG_NON_TEMPORAL. |
Return value
The routine returns one of the status codes:
Return code | Description |
---|---|
|
NvToken is an invalid pointer or token. |
|
The request was successful. |
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 10, version 1903 |
Header | ntddk.h |
IRQL | DPC_LEVEL |