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 를 호출하기 전에 파일을 독점적으로 획득해야 합니다.

FileOffsetLength 매개 변수를 사용하여 파일 내의 바이트 범위를 플러시하거나 플러시하고 제거할 수 있습니다. 또는 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

추가 정보

CcFlushCache

CcPurgeCacheSection