CcCopyRead 함수(ntifs.h)

CcCopyRead 루틴은 캐시된 파일에서 사용자 버퍼로 데이터를 복사합니다.

구문

BOOLEAN CcCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  BOOLEAN          Wait,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

매개 변수

[in] FileObject

데이터를 읽을 캐시된 파일의 파일 개체에 대한 포인터입니다.

[in] FileOffset

캐시된 파일 내의 시작 바이트 오프셋을 지정하는 변수에 대한 포인터입니다.

[in] Length

읽을 데이터의 길이(바이트)입니다.

[in] Wait

모든 데이터가 복사될 때까지 호출자를 대기 상태로 전환할 수 있으면 TRUE 로 설정하고, 그렇지 않으면 FALSE 로 설정합니다.

[out] Buffer

데이터를 복사할 버퍼에 대한 포인터입니다.

[out] IoStatus

최종 완성 상태 및 작업에 대한 정보를 수신하는 호출자가 할당한 구조체에 대한 포인터입니다. 모든 데이터가 성공적으로 복사되지 않은 경우 IoStatus.Information 에는 복사된 실제 바이트 수가 포함됩니다.

반환 값

데이터가 성공적으로 복사되면 CcCopyRead 루틴이 TRUE 를 반환하고, 그렇지 않으면 FALSE 를 반환합니다.

설명

WaitTRUE이면 CcCopyRead가 복사 요청을 완료하고 TRUE를 반환하도록 보장됩니다. 캐시된 파일의 필수 페이지가 이미 메모리에 상주하는 경우 데이터가 즉시 복사되고 차단이 발생하지 않습니다. 필요한 페이지가 상주하지 않으면 모든 필수 페이지가 상주하고 데이터를 복사할 수 있을 때까지 호출자가 대기 상태가 됩니다.

WaitFALSE이면 CcCopyRead는 차단을 거부하고 캐시된 파일의 필수 페이지가 메모리에 아직 없는 경우 FALSE를 반환합니다.

FileOffsetLength 는 캐시된 파일의 크기보다 작거나 같아야 합니다. 그렇지 않으면 어설션 오류가 발생합니다.

오류가 발생하면 CcCopyRead는 해당 특정 오류에 대한 상태 예외를 발생합니다. 예를 들어 풀 할당 오류가 발생하면 CcCopyRead는 STATUS_INSUFFICIENT_RESOURCES 예외를 발생합니다. I/O 오류가 발생하면 CcCopyRead는 I/O 오류의 상태 예외를 발생합니다. 따라서 오류가 발생하는 경우 제어하려면 드라이버는 try-except 또는 try-finally 문에서 CcCopyRead에 대한 호출을 래핑해야 합니다.

파일을 캐시하려면 CcInitializeCacheMap을 사용합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h, FltKernel.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

CcFastCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity