다음을 통해 공유


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 매개 변수를 사용하여 파일 내의 바이트 범위를 플러시하거나 플러시하고 제거할 수 있습니다. 또는 NULL 포인터를 FileOffset 매개 변수에 전달하는 경우 전체 파일을 플러시하거나 플러시하고 제거할 수 있습니다.

ccCoherencyFlushAndPurgeCache 호출은 비동기(비차단) 작업이 아니라 동기(차단) 작업입니다.

IoStatus->상태 값 STATUS_CACHE_PAGE_LOCKED은 페이지 무효화가 실패했음을 나타냅니다. 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