다음을 통해 공유


ReadNextLogRecord 함수(clfsw32.h)

ReadLogRecord 또는 ReadLogRestartArea 호출로 시작되는 시퀀스에서 다음 레코드를 읽습니다. ReadNextLogRecord를 반복적으로 사용하여 클라이언트는 로그에서 지정된 형식의 모든 레코드를 읽을 수 있습니다. 열거형의 방향은 읽기 시퀀스를 시작할 때 컨텍스트 모드를 지정하여 결정됩니다.

구문

CLFSUSER_API BOOL ReadNextLogRecord(
  [in, out]           PVOID             pvReadContext,
  [out]               PVOID             *ppvBuffer,
  [out]               PULONG            pcbBuffer,
  [in, out]           PCLFS_RECORD_TYPE peRecordType,
  [in, optional]      PCLFS_LSN         plsnUser,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PCLFS_LSN         plsnRecord,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

매개 변수

[in, out] pvReadContext

ReadLogRecord 또는 ReadLogRestartArea를 성공적으로 호출하는 동안 시스템이 할당하고 만드는 읽기 컨텍스트에 대한 포인터입니다.

함수가 작업 완료를 지연하는 경우 유효한 읽기 컨텍스트에 대한 포인터와 ERROR_IO_PENDING 오류 상태 반환합니다. 비동기 완료 처리에 대한 자세한 내용은 이 항목의 설명 섹션을 참조하세요.

[out] ppvBuffer

읽기 데이터에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

[out] pcbBuffer

ppvReadBuffer(바이트)로 반환되는 읽기 데이터의 크기를 수신하는 변수에 대한 포인터입니다.

[in, out] peRecordType

입력에서 다음 레코드 읽기의 레코드 형식 필터를 지정하고 출력에서 반환되는 레코드 형식을 지정하는 포인터입니다.

클라이언트는 다음 레코드 형식을 지정할 수 있습니다.

의미
ClfsDataRecord
사용자 데이터 레코드만 읽습니다.
ClfsRestartRecord
다시 시작 레코드만 읽습니다.
ClfsClientRecord
모든 다시 시작 및 데이터 레코드를 읽습니다.

[in, optional] plsnUser

다음 레코드를 읽거나, 이전 LSN을 읽거나, 다음 실행 취소 LSN을 읽는 대신 이 LSN(로그 시퀀스 번호)을 다음 LSN으로 읽도록 로그 클라이언트를 지정하는 CLFS_LSN 구조체 에 대한 포인터입니다.

이 매개 변수는 로그 클라이언트에 클라이언트 버퍼의 사용자 정의 LSN 체인을 통해 커서를 놓을 수 있는 기능을 제공합니다. 읽기 컨텍스트에서 보유한 현재 LSN에 대한 이 매개 변수의 관계는 ReadLogRecord 진입점에 지정된 컨텍스트 모드 ecxMode와 일치해야 합니다. 그렇지 않으면 ERROR_INVALID_PARAMETER 오류 코드가 반환됩니다.

[out] plsnUndoNext

실행 취소 레코드 체인에서 다음 레코드의 LSN을 수신하는 CLFS_LSN 구조체에 대한 포인터입니다.

[out] plsnPrevious

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

[out] plsnRecord

읽기 컨텍스트로 읽은 현재 레코드의 LSN을 수신하는 CLFS_LSN 구조체에 대한 포인터입니다.

[in, out, optional] pOverlapped

비동기 작업에 필요한 OVERLAPPED 구조체에 대한 포인터입니다.

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

반환 값

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

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

다음 목록에서는 가능한 오류 코드를 식별합니다.

설명

ReadNextLogRecordERROR_IO_PENDING 상태 코드와 함께 를 반환하는 경우 클라이언트는 GetOverlappedResult 또는 동기화 대기 함수 중 하나를 사용하여 겹치는 I/O 작업의 지연 완료와 실행을 동기화해야 합니다. 자세한 내용은 동기화 및 겹치는 입력 및 출력을 참조하세요.

ReadNextLogRecord가 비동기적으로 완료되면 요청된 레코드는 디스크에서 읽지만 *ppvReadBuffer의 포인터로 확인되지 않습니다. 레코드에 대한 유효한 포인터를 가져오려면 클라이언트가 ReadNextLogRecord 를 두 번째로 호출해야 합니다.

참고 CLFS(일반 로그 파일 시스템) 읽기 컨텍스트는 스레드로부터 안전하지 않습니다. 한 번에 둘 이상의 스레드에서 사용해서는 안 됩니다.

CLFS 읽기 컨텍스트는 한 번에 둘 이상의 비동기 읽기로 전달되어서는 안 되며, ERROR_READ 함수가 실패합니다.

 

요구 사항

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

추가 정보

CLFS_LSN

CLFS_RECORD_TYPE

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

OVERLAPPED

ReadLogRecord

ReadLogRestartArea

동기화 및 겹치는 입력 및 출력