다음을 통해 공유


ReadLogRestartArea 함수(clfsw32.h)

WriteLogRestartArea의 마샬링 영역과 연결된 로그에 성공적으로 기록된 마지막 다시 시작 영역을 반환합니다. 또한 함수는 호출자가 다시 시작 레코드의 로그를 통해 뒤로 또는 앞으로 커서를 놓을 수 있는 읽기 컨텍스트를 반환합니다.

이 읽기 컨텍스트는 ReadPreviousLogRestartArea를 호출하여 현재 영역 이전의 이전 다시 시작 영역을 검사할 때 유용합니다.

구문

CLFSUSER_API BOOL ReadLogRestartArea(
  [in]                PVOID        pvMarshal,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsn,
  [out]               PVOID        *ppvContext,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

매개 변수

[in] pvMarshal

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

[out] ppvRestartBuffer

로그 I/O 블록의 다시 시작 데이터에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

[out] pcbRestartBuffer

다시 시작 데이터의 양을 받는 변수에 대한 포인터입니다.

[out] plsn

다시 시작 영역의 LSN(로그 시퀀스 번호)을 수신하는 CLFS_LSN 구조체에 대한 포인터입니다.

[out] ppvContext

읽기에 성공하면 시스템이 할당한 읽기 컨텍스트에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

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

요청된 모든 로그 레코드를 가져온 후 클라이언트는 연결된 메모리를 해제하려면 읽기 컨텍스트를 TerminateReadLog 에 전달해야 합니다. 이렇게 하지 않으면 메모리가 누출됩니다.

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

[in, out, optional] pOverlapped

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

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

반환 값

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

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

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

설명

CreateLogMarshallingArea에서 지정한 로그 블록 크기가 전체 로그 블록을 보유할 만큼 크지 않으면 ERROR_LOG_BLOCK_INCOMPLETE 오류 메시지가 반환됩니다.

일반적으로 ReadLogRestartArea 는 크래시 후 또는 정상적인 종료 후에 클라이언트를 다시 시작하는 동안에만 사용됩니다.

로그에 다시 시작 영역이 없으면 코드 ERROR_LOG_NO_RESTARTReadLogRestartArea가 실패합니다.

ReadLogRestartAreaERROR_IO_PENDING 오류 코드와 함께 실패하면 ppvReadContext 매개 변수가 가리키는 변수에 유효한 읽기 컨텍스트에 대한 포인터가 배치됩니다.

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

ReadLogRestartArea가 비동기적으로 완료되면 요청된 다시 시작 영역이 디스크에서 읽혀지지만 유효한 포인터는 *ppvRestartBuffer에 배치되지 않습니다.

유효한 포인터를 가져오려면 클라이언트가 ReadLogRestartArea에서 반환된 읽기 컨텍스트 포인터를 전달하는 ReadPreviousLogRestartArea를 호출해야 합니다.

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

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

 

요구 사항

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

추가 정보

CLFS_LSN

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

CreateLogFile

OVERLAPPED

ReadPreviousLogRestartArea

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

WriteLogRestartArea