RtlFillNonVolatileMemory 함수(ntddk.h)

RtlFillNonVolatileMemory 루틴은 비휘발성 대상 버퍼를 지정된 값으로 채웁니다.

구문

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

매개 변수

NvToken

RtlGetNonVolatileToken이 반환한 비휘발성 메모리 영역에 대한 자세한 정보가 있는 불투명 구조체에 대한 포인터입니다.

NvDestination

비휘발성 대상 버퍼에 대한 포인터입니다.

Size

채우기 작업의 길이(바이트)를 지정합니다.

Value

대상 버퍼를 채울 값을 포함하는 UCHAR입니다.

Flags

다음 플래그 중 하나 이상을 포함하는 ULONG 형식의 값입니다.

플래그 의미
FILL_NV_MEMORY_FLAG_FLUSH 제공된 값을 설정한 다음 대상 범위를 플러시합니다. FILL_NV_MEMORY_FLAG_NO_DRAIN 지정하지 않으면 플러시 뒤에 드레이닝이 잇습니다. 이 플래그는 시스템 전원이 손실된 경우에도 데이터가 지속되도록 합니다.
FILL_NV_MEMORY_FLAG_NON_TEMPORAL 사용 가능한 경우 임시가 아닌 memset을 수행합니다. 비 임시는 데이터 캐싱이 필요하지 않음을 의미합니다. 프로세서가 주소 버스 크기보다 작은 범위에 대해 비 임시 연산을 지원하지 않는 경우 일반 memset을 수행한 다음 플러시 및 드레인을 수행합니다. 프로세서가 비 임시 이동을 모두 무시하는 경우 RtlSetNonVolatileMemory는 이를 플러시 및 드레이닝으로 대체하지 않습니다. 그러나 Windows가 지정된 아키텍처(예: ARM64)에 대한 구현을 수행하지 않은 경우 이를 플러시 및 드레이닝으로 대체합니다.
FILL_NV_MEMORY_FLAG_PERSIST 플러시하거나 비 임시 이동을 사용하여 memset이 유지되는지 확인합니다. 일반적으로 시스템은 데이터를 유지하기 위해 비용이 가장 적게 드는 접근 방식을 사용합니다. 이 플래그는 시스템 전원이 손실된 경우에도 데이터가 내구성이 있는지 확인합니다. FILL_NV_MEMORY_FLAG_PERSIST 지정하면 무시됩니다.
FILL_NV_MEMORY_FLAG_NO_DRAIN 플러시 완료를 기다리지 않도록 루틴에 지시합니다. FILL_NV_MEMORY_FLAG_PERSIST 또는 FILL_NV_MEMORY_FLAG_NON_TEMPORAL 없이 FILL_NV_MEMORY_FLAG_FLUSH 함께 지정해야 합니다.

반환 값

루틴은 상태 코드 중 하나를 반환합니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
NvToken 이 잘못된 포인터 또는 토큰입니다.
STATUS_SUCCESS
요청이 성공했습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1903
머리글 ntddk.h
IRQL DPC_LEVEL