CcSetFileSizesEx 함수(ntifs.h)

CcSetFileSizesEx 루틴은 크기가 변경된 캐시된 파일의 캐시 맵 및 섹션 개체를 업데이트합니다.

구문

NTSTATUS CcSetFileSizesEx(
  PFILE_OBJECT   FileObject,
  PCC_FILE_SIZES FileSizes
);

매개 변수

FileObject

[in] 캐시된 파일의 파일 개체에 대한 포인터입니다.

FileSizes

[in] 새 파일 크기 정보를 포함하는 CC_FILE_SIZES 구조체에 대한 포인터입니다.

반환 값

CcSetFileSizesEx 는 파일 크기가 성공적으로 변경된 경우 STATUS_SUCCESS 반환하고 제거가 필요한 경우 제거에 성공했습니다. 그렇지 않으면 STATUS_INSUFFICIENT_RESOURCES 같은 성공하지 못한 NSTATUS 코드를 반환하고 상태 예외를 발생시킬 수 있습니다.

오류 발생 상태 예외 발생과 관련하여 다음을 수행합니다.

  • 작업으로 인해 CcSetFileSizesEx 가 파일을 플러시 및/또는 제거하면 CcSetFileSizesEx 에서 오류가 발생하지 않습니다. 플러시 또는 제거 작업의 적절한 성공이 아닌 NTSTATUS 코드를 반환합니다.

  • 작업으로 인해 CcSetFileSizesEx 가 섹션을 확장하면 CcSetFileSizesEx 는 이 확장 중에 발생하는 모든 오류가 발생합니다.

설명

파일 시스템은 캐시된 파일에 대해 다음 중 하나를 변경할 때마다 CcSetFileSizesEx 를 호출하여 캐시 관리자 데이터 구조를 업데이트해야 합니다.

  • 할당 크기가 증가합니다.

  • 유효한 데이터 길이가 줄어듭니다.

  • 유효한 데이터 길이는 캐시되지 않은 I/O 작업으로 증가합니다.

  • 파일 크기가 증가하거나 감소합니다.

작업으로 인해 CcSetFileSizesEx가 섹션을 확장하고 오류가 발생하면 CcSetFileSizesEx는 특정 오류에 대한 상태 예외를 발생합니다. 예를 들어 풀 할당 오류가 발생하면 CcSetFileSizesEx 에서 STATUS_INSUFFICIENT_RESOURCES 예외가 발생합니다. 따라서 오류가 발생하는 경우 제어하려면 드라이버가 try-except 또는 try-finally 문에서 CcSetFileSizesEx에 대한 호출을 래핑해야 합니다.

파일 시스템은 캐시 맵이 유효하고 이 호출 기간 동안 그대로 유지되도록 해야 합니다.

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

캐시된 파일의 크기를 얻으려면 FileObjectCcGetFileSizePointer에 전달합니다.

요구 사항

요구 사항
헤더 ntifs.h

추가 정보

CcInitializeCacheMap

CcSetCacheFileSizes