ClfsWriteRestartArea 함수(wdm.h)

ClfsWriteRestartArea 루틴은 CLFS 스트림에 새 다시 시작 레코드를 원자적으로 추가하고, 다시 시작 레코드를 안정적인 스토리지로 플러시하고, 필요에 따라 스트림의 기본 LSN을 업데이트합니다.

구문

CLFSUSER_API NTSTATUS ClfsWriteRestartArea(
  [in, out]       PVOID     pvMarshalContext,
  [in]            PVOID     pvRestartBuffer,
  [in]            ULONG     cbRestartBuffer,
  [in, optional]  PCLFS_LSN plsnBase,
  [in]            ULONG     fFlags,
  [out, optional] PULONG    pcbWritten,
  [out, optional] PCLFS_LSN plsnNext
);

매개 변수

[in, out] pvMarshalContext

CLFS 스트림과 연결된 마샬링 영역을 나타내는 불투명 컨텍스트에 대한 포인터입니다. 호출자는 이전에 ClfsCreateMarshallingArea를 호출하여 이 포인터를 얻었습니다.

[in] pvRestartBuffer

다시 시작 레코드에 대한 데이터를 포함하는 버퍼에 대한 포인터입니다.

[in] cbRestartBuffer

pvRestartBuffer가 가리키는 버퍼의 크기(바이트)입니다. 다시 시작 데이터의 크기입니다.

[in, optional] plsnBase

스트림에 대한 새 기본 LSN을 지정하는 CLFS_LSN 구조체에 대한 포인터입니다. 이 매개 변수가 NULL이면 기본 LSN이 변경되지 않습니다.

[in] fFlags

이 매개 변수는 다음 값 중 하나여야 합니다.

의미
0 다시 시작 레코드는 I/O 블록의 새로 할당된 공간에 배치됩니다. 마샬링 영역의 예약된 레코드 수는 변경되지 않습니다.
CLFS_FLAG_USE_RESERVATION 다시 시작 레코드는 I/O 블록의 이전에 예약된 공간에 배치됩니다. 마샬링 영역의 예약된 레코드 수가 1씩 줄어듭니다.

[out, optional] pcbWritten

실제로 안정적인 스토리지에 강제로 적용된 바이트 수를 수신하는 ULONG 형식 변수에 대한 포인터입니다. 이 매개 변수는 NULL일 수 있습니다.

[out, optional] plsnNext

새로 작성된 다시 시작 레코드의 LSN을 수신하는 CLFS_LSN 구조체에 대한 포인터입니다.

반환 값

ClfsWriteRestartArea 는 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 Ntstatus.h에 정의된 오류 코드 중 하나를 반환합니다.

설명

일반적으로 ClfsWriteRestartArea는 클라이언트 검사점의 마지막 동작으로 호출됩니다.

ClfsWriteRestartArea는 스트림 및 로그 메타데이터의 플러시와 함께 현재 마샬링 영역에 있는 모든 레코드를 플러시하기 때문에 상대적으로 비용이 많이 드는 작업입니다.

한 번에 하나의 마샬링 영역만 사용하여 스트림에 데이터를 기록해야 합니다. 두 개의 마샬링 영역을 스트림에 쓰면 스트림이 손상될 수 있습니다.

스트림의 기본 LSN을 설정하려는 경우 ClfsAdvanceLogBase를 사용합니다. 이 경우 데이터를 안정적인 스토리지로 플러시할 필요는 없습니다.

CLFS 개념 및 용어에 대한 설명은 공통 로그 파일 시스템을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2003 R2, Windows Vista 및 이후 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 wdm.h(Wdm.h 포함)
라이브러리 Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

추가 정보

CLFS_LSN

ClfsAdvanceLogBase

ClfsCreateMarshallingArea

ClfsReadPreviousRestartArea

ClfsReadRestartArea