다음을 통해 공유


ReserveAndAppendLogAligned 함수(clfsw32.h)

로그 버퍼의 공간을 예약하거나 로그에 로그 레코드를 추가하거나 둘 다 추가합니다. 이 함수는 ReserveAndAppendLog 함수와 비슷하지만 ReserveAndAppendLogAligned 는 레코드의 쓰기 항목을 지정된 바이트 맞춤에 맞춥니다.

구문

CLFSUSER_API BOOL ReserveAndAppendLogAligned(
  [in]                PVOID             pvMarshal,
  [in, optional]      PCLFS_WRITE_ENTRY rgWriteEntries,
  [in]                ULONG             cWriteEntries,
  [in]                ULONG             cbEntryAlignment,
  [in, optional]      PCLFS_LSN         plsnUndoNext,
  [in, optional]      PCLFS_LSN         plsnPrevious,
  [in]                ULONG             cReserveRecords,
  [in, out, optional] LONGLONG []       rgcbReservation,
  [in]                ULONG             fFlags,
  [out, optional]     PCLFS_LSN         plsn,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

매개 변수

[in] pvMarshal

CreateLogMarshallingArea 함수를 사용하여 할당된 마샬링 컨텍스트에 대한 포인터입니다.

[in, optional] rgWriteEntries

하나의 레코드로 마샬링할 CLFS_WRITE_ENTRY 버퍼 배열에 대한 포인터입니다.

cWriteEntries 매개 변수가 0이면 이 매개 변수는 무시됩니다.

[in] cWriteEntries

rgWriteEntries 배열의 쓰기 항목 수입니다.

이 값이 0이 아닌 경우 rgWriteEntries 매개 변수에 버퍼를 지정해야 합니다.

[in] cbEntryAlignment

rgWriteEntries 매개 변수의 각 쓰기 항목에 대한 바이트 맞춤입니다.

간단한 연결에 대해 1(1)을 지정합니다. cbWriteEntryAlignment 매개 변수는 0이 아니어야 합니다.

[in, optional] plsnUndoNext

실행 취소 체인에서 다음 레코드의 LSN(로그 시퀀스 번호)을 지정하는 CLFS_LSN 구조체에 대한 포인터입니다.

[in, optional] plsnPrevious

이전 체인에서 이전 레코드의 LSN을 지정하는 CLFS_LSN 구조체에 대한 포인터입니다.

[in] cReserveRecords

rgcbReservation 배열의 레코드 크기 수입니다.

[in, out, optional] rgcbReservation

cReserveRecords 매개 변수가 지정하는 각 레코드의 예약 크기 배열에 대한 포인터입니다.

cReserveRecords 매개 변수가 0이면 이 매개 변수는 무시됩니다. 예약 크기가 음수이면 해당 크기의 예약이 해제됩니다.

필요한 오버헤드를 포함하여 각 레코드에 예약된 실제 공간은 성공적으로 완료될 때 개별 배열 요소에 반환됩니다. 이러한 값을 FreeReservedLog 함수에 전달하여 마샬링 영역에 예약된 공간을 조정할 수 있습니다.

[in] fFlags

이 함수의 동작을 지정하는 플래그입니다.

다음 값 중 하나 이상을 결합할 수 있습니다.

의미
CLFS_FLAG_FORCE_APPEND
이전에 실제 위치가 할당되지 않은 로그에 추가된 모든 레코드의 실제 위치를 할당합니다.

이러한 모든 레코드는 다른 마샬링 컨텍스트에서 읽을 수 있습니다.

CLFS_FLAG_FORCE_FLUSH
이전에 실제 위치가 할당되지 않은 로그에 추가된 모든 레코드의 실제 위치를 할당합니다.

이러한 모든 레코드는 다른 마샬링 컨텍스트에서 읽을 수 있습니다. 그런 다음 레코드가 디스크로 플러시됩니다.

CLFS_FLAG_NO_FLAGS
플래그를 할당하지 않습니다.
CLFS_FLAG_USE_RESERVATION
마샬링 영역에 예약된 공간을 사용하여 현재 레코드를 추가합니다.

[out, optional] plsn

추가된 레코드의 LSN을 수신하는 CLFS_LSN 구조체에 대한 포인터입니다.

[in, out, optional] pOverlapped

OVERLAPPED 구조에 대한 포인터입니다.

비동기 작업이 사용되지 않는 경우 이 매개 변수는 NULL 일 수 있습니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError 함수를 호출합니다. 다음 목록에서는 가능한 오류 코드를 식별합니다.

설명

ReserveAndAppendLogAligned 함수에서 반환되는 LSN이 반드시 사용되는 다음 LSN은 아닙니다. 반환되는 LSN은 다음 LSN의 추정치이며 fFlags 매개 변수로 지정된 플래그에 따라 달라집니다. 반환되는 LSN은 기본 꼬리를 이동할 때 사용할 수 있습니다. 이 LSN은 이 함수에 대한 다음 호출에 의해 무효화됩니다.

ReserveAndAppendLogAligned 함수가 ERROR_LOG_FILE_FULL 반환하는 경우 로그에 더 이상 공간이 없습니다. 이 문제는 다음 방법 중 하나로 해결할 수 있습니다.

  • 불필요한 예약을 해제합니다.
  • 기본 LSN 또는 로그 보관 꼬리 또는 둘 다로 이동하여 컨테이너를 재활용합니다.
  • 로그에 컨테이너를 추가합니다.
CLFS 관리 API는 전체 로그와 관련된 시나리오를 처리하는 방법도 제공합니다.

ReserveAndAppendLogAligned 함수가 유효한 겹치는 구조로 호출되고 로그 핸들이 겹치는 옵션을 사용하여 만들어진 경우 이 함수에 대한 호출이 오류 코드 ERROR_IO_PENDING 실패하면 ppvReadContext 매개 변수가 가리키는 변수에 유효한 읽기 컨텍스트에 대한 포인터가 배치됩니다.

로그 레코드 복사를 완료하려면 클라이언트는 먼저 GetOverlappedResult 함수 또는 동기화 대기 함수 중 하나를 사용하여 겹치는 I/O 작업의 지연된 완료와 실행을 동기화해야 합니다. 자세한 내용은 동기화 및 겹치는 입력 및 출력을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 clfsw32.h
라이브러리 Clfsw32.lib
DLL Clfsw32.dll

추가 정보

CLFS_LSN

CLFS_WRITE_ENTRY

일반적인 로그 파일 시스템 함수

OVERLAPPED