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 에는 복사된 실제 바이트 수가 포함됩니다.

반환 값

없음

설명

CcFastCopyRead 는 더 빠른 버전의 CcCopyRead입니다. 다음과 같은 측면에서 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