CcCoherencyFlushAndPurgeCache 함수(ntifs.h)
CcCoherencyFlushAndPurgeCache 루틴은 캐시 일관성을 보장하기 위해 캐시를 플러시하거나 플러시 및 제거합니다.
구문
void CcCoherencyFlushAndPurgeCache(
[in] PSECTION_OBJECT_POINTERS SectionObjectPointer,
[in, optional] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[out] PIO_STATUS_BLOCK IoStatus,
[in, optional] ULONG Flags
);
매개 변수
[in] SectionObjectPointer
파일 개체의 섹션 개체 포인터를 포함하는 SECTION_OBJECT_POINTERS 구조체에 대한 포인터입니다.
[in, optional] FileOffset
플러시하거나 플러시 및 제거할 시작 바이트 오프셋을 지정하는 변수에 대한 포인터입니다.
[in] Length
FileOffset 부터 플러시하거나 플러시 및 제거할 데이터의 길이(바이트)입니다. NULL 포인터가 FileOffset 에 전달되면 이 매개 변수는 무시됩니다.
[out] IoStatus
최종 완료 상태 및 작업에 대한 정보를 수신하는 호출자가 할당한 IO_STATUS_BLOCK 구조체에 대한 포인터입니다.
[in, optional] Flags
작업을 수행하는 방법을 지정하는 다음 플래그의 비트 마스크입니다.
| 값 | 의미 |
|---|---|
| CC_FLUSH_AND_PURGE_NO_PURGE | 플러시하지만 캐시를 제거하지 않습니다. 이는 읽기 일관성 플러시에 유용합니다. |
| CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS | 시스템 사용을 위해 예약됨; 은 사용하지 않습니다. |
| CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN | 캐시 관리자 외부의 파일에 대한 매핑이 없는 경우 호출자는 프로세스 작업 집합을 트리밍하는 비용이 많이 드는 작업을 건너뛰기 위해 이 플래그를 설정할 수 있습니다. |
반환 값
없음
설명
데이터 손상을 방지하기 위해 사용자 매핑 보기를 무효화하기 때문에 명시적 플러시 및 제거 호출 시퀀스 대신 가능한 경우 CcCoherencyFlushAndPurgeCache 를 사용합니다. CcCoherencyFlushAndPurgeCache 는 캐시 일관성을 보장합니다. 따라서 이 함수를 통해서만 제거를 수행할 수 있는 옵션은 없습니다.
CcCoherencyFlushAndPurgeCache 를 호출하기 전에 파일을 독점적으로 획득해야 합니다.
FileOffset 및 Length 매개 변수를 사용하여 파일 내의 바이트 범위를 플러시하거나 플러시하고 제거할 수 있습니다. 또는 FileOffset 매개 변수에 NULL 포인터를 전달하는 경우 전체 파일을 플러시하거나 플러시하고 제거할 수 있습니다.
CcCoherencyFlushAndPurgeCache 에 대한 호출은 비동기(비차단) 작업이 아닌 동기(차단) 작업입니다.
STATUS_CACHE_PAGE_LOCKED IoStatus->상태 값은 페이지 무효화가 실패했음을 나타냅니다. Flags 매개 변수에서 CC_FLUSH_AND_PURGE_NO_PURGE 전달하더라도 페이지 무효화가 실패할 수 있습니다. STATUS_CACHE_PAGE_LOCKED 성공 상태입니다(즉, NT_SUCCESS 매크로를 사용하여 테스트하면 TRUE가 반환됨).
요구 사항
| 지원되는 최소 클라이언트 | Windows 7 이상에서 사용 가능 |
| 대상 플랫폼 | 유니버설 |
| 헤더 | ntifs.h(Ntifs.h, FltKernel.h 포함) |
| 라이브러리 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | PASSIVE_LEVEL |
추가 정보
피드백
다음에 대한 사용자 의견 제출 및 보기