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 |