CcInitializeCacheMap 함수(ntifs.h)
파일 시스템은 CcInitializeCacheMap 루틴을 호출하여 파일을 캐시합니다.
구문
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
매개 변수
[in] FileObject
파일의 파일 개체에 대한 포인터입니다.
[in] FileSizes
파일에 대한 AllocationSize, FileSize 및 ValidDataLength를 포함하는 CC_FILE_SIZES 구조체에 대한 포인터입니다. 이 구조는 다음과 같이 정의됩니다.
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
| 멤버 | 의미 |
|---|---|
| AllocationSize | 파일의 새 섹션 개체 크기입니다. 현재 섹션 크기보다 작거나 같은 경우 무시됩니다. |
| Filesize | 파일의 새 파일 크기입니다. |
| ValidDataLength | 파일에 대한 새 유효한 데이터 길이입니다. |
[in] PinAccess
파일에 CcPinXxx 루틴을 사용하는 경우 TRUE로 설정합니다.
[in] Callbacks
호출자가 제공한 미리 읽기 및 쓰기 숨김 콜백 루틴의 진입점을 포함하는 비페이지 풀에서 할당된 구조체에 대한 포인터입니다. 이 구조체와 해당 멤버는 다음과 같이 정의됩니다.
typedef struct _CACHE_MANAGER_CALLBACKS {
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
typedef
BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_LAZY_WRITE) (
IN PVOID Context
);
typedef
BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_READ_AHEAD) (
IN PVOID Context
);
[in] LazyWriteContext
콜백에 지정된 콜백 루틴에 전달할 컨텍스트 정보에 대한 포인터입니다.
반환 값
없음
설명
CcInitializeCacheMap 은 파일 데이터 캐싱에 필요한 데이터 구조를 만듭니다.
오류가 발생하면 CcInitializeCacheMap 은 특정 오류에 대한 상태 예외를 발생합니다. 예를 들어 풀 할당 오류가 발생하면 CcInitializeCacheMap 에서 STATUS_INSUFFICIENT_RESOURCES 예외가 발생합니다. 따라서 오류가 발생하는 경우 제어를 얻으려면 드라이버는 try-except 또는 try-finally 문에서 CcInitializeCacheMap에 대한 호출을 래핑해야 합니다.
데이터 캐싱을 사용하지 않도록 설정하여 파일을 만들지 않는 한 파일 시스템에서 CcInitializeCacheMap 을 호출하여 파일의 다른 캐시 관리자 루틴을 사용하기 전에 파일을 캐시해야 합니다. 대부분의 파일 시스템에서 파일 캐싱은 기본적으로 사용하도록 설정되어 있지만 파일 만들기 옵션에서 FILE_NO_INTERMEDIATE_BUFFERING 플래그를 TRUE 로 설정하여 사용하지 않도록 설정할 수 있습니다.
CcInitializeCacheMap을 호출한 후 파일 시스템은 CcSetAdditionalCacheAttributes를 호출하여 원하는 경우 미리 읽기 또는 쓰기 숨김을 사용하지 않도록 설정할 수 있습니다.
파일을 닫을 때 파일 캐싱을 지원하는 모든 파일 시스템은 파일이 캐시되었는지 여부에 관계없이 해당 파일에서 CcUninitializeCacheMap 을 호출해야 합니다. 캐싱을 사용하지 않도록 설정하여 파일을 만든 경우에도 파일 시스템은 여전히 CcUninitializeCacheMap을 호출해야 합니다.
CcIsFileCached 매크로는 파일이 캐시되는지 여부를 결정합니다.
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
매개 변수
FileObject[in] [in]
파일의 파일 개체에 대한 포인터입니다.
반환 값
파일이 캐시되면 TRUE 를 반환하고, 그렇지 않으면 FALSE 를 반환합니다.
요구 사항
| 대상 플랫폼 | 유니버설 |
| 헤더 | ntifs.h(Ntifs.h 포함) |
| 라이브러리 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기