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
입력에서 다음 레코드 읽기의 레코드 형식 필터를 지정하고 출력에서 반환되는 레코드 형식을 지정하는 포인터입니다.
클라이언트는 다음 레코드 형식을 지정할 수 있습니다.
값 | 의미 |
---|---|
|
사용자 데이터 레코드만 읽습니다. |
|
다시 시작 레코드만 읽습니다. |
|
모든 다시 시작 및 데이터 레코드를 읽습니다. |
[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를 호출합니다.
다음 목록에서는 가능한 오류 코드를 식별합니다.
설명
ReadNextLogRecord가 ERROR_IO_PENDING 상태 코드와 함께 를 반환하는 경우 클라이언트는 GetOverlappedResult 또는 동기화 대기 함수 중 하나를 사용하여 겹치는 I/O 작업의 지연 완료와 실행을 동기화해야 합니다. 자세한 내용은 동기화 및 겹치는 입력 및 출력을 참조하세요.
ReadNextLogRecord가 비동기적으로 완료되면 요청된 레코드는 디스크에서 읽지만 *ppvReadBuffer의 포인터로 확인되지 않습니다. 레코드에 대한 유효한 포인터를 가져오려면 클라이언트가 ReadNextLogRecord 를 두 번째로 호출해야 합니다.
CLFS 읽기 컨텍스트는 한 번에 둘 이상의 비동기 읽기로 전달되어서는 안 되며, ERROR_READ 함수가 실패합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | clfsw32.h |
라이브러리 | Clfsw32.lib |
DLL | Clfsw32.dll |