다음을 통해 공유


CcFastCopyRead 함수(ntifs.h)

CcFastCopyRead 루틴은 캐시된 파일에서 메모리의 버퍼로 빠른 복사본 읽기를 수행합니다.

통사론

void CcFastCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  ULONG            FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            PageCount,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

매개 변수

[in] FileObject

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

[in] FileOffset

캐시된 파일 내에서 바이트 오프셋을 시작합니다.

[in] Length

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

[in] PageCount

읽기로 확장되는 페이지 수입니다.

[out] Buffer

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

[out] IoStatus

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

반환 값

없음

발언

CcFastCopyReadCcCopyRead빠른 버전입니다. 다음과 CcCopyRead 다릅니다.

  • FileOffset PLARGE_INTEGER 아닌 ULONG입니다.

  • wait 매개 변수에 없습니다. 호출자는 모든 데이터가 복사될 때까지 대기 상태를 입력할 수 있어야 합니다.

  • CcFastCopyRead 읽기 작업이 성공했는지 여부를 나타내는 BOOLEAN을 반환하지 않습니다.

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

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

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

요구 사항

요구
대상 플랫폼 보편적
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

참고 항목

CcCopyRead

ccInitializeCacheMap

ccReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity