FSCTL_SET_PURGE_FAILURE_MODE IOCTL(ntifs.h)

Filter Manager는 FSCTL_SET_PURGE_FAILURE_MODE 제어 코드를 사용하여 데이터 검색을 위해 만든 섹션의 수명 동안 작업을 동기화합니다. 필터는 이 컨트롤 코드를 실행해서는 안 됩니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

SET_PURGE_FAILURE_MODE_INPUT 구조체입니다.

입력 버퍼 길이

크기(SET_PURGE_FAILURE_MODE_INPUT 바이트)입니다.

출력 버퍼

없음

출력 버퍼 길이

해당 없음

입력/출력 버퍼

없음

입력/출력 버퍼 길이

해당 없음

상태 블록

시스템에서 사용하도록 예약되었습니다.

설명

필터 관리자는 이 컨트롤 코드를 IRP_MJ_FILE_SYSTEM_CONTROL 호출과 함께 사용하여 섹션의 수명을 대괄호로 묶습니다. 이러한 호출은 파일 시스템(및 드물게 미니필터)이 캐시 관리자 캐시를 제거하지 못할 경우 다음과 같은 방식으로 동작하도록 지시하는 역할을 합니다.

SET_PURGE_FAILURE_MODE_ENABLED 집합으로 발급된 모든 FSCTL_SET_PURGE_FAILURE_MODE 대해 SET_PURGE_FAILURE_MODE_DISABLED 집합과 함께 FSCTL_SET_PURGE_FAILURE_MODE 발급됩니다. 미해결 SET_PURGE_FAILURE_MODE_ENABLED 있지만 Filter Manager는 특정 유형의 작업에 대한 특정 오류 상태에 다음과 같이 응답합니다(아래 표 참조).

• 작업 보류 중, 섹션 닫기(가능한 경우) • 오류를 발생시킨 미니필터 또는 파일 시스템에 작업을 다시 큐에 넣습니다.

그에 따라 응답하도록 필터 관리자를 트리거하기 위해 파일 시스템(또는 필터)은 다음과 같은 방법으로 섹션을 제거하지 못한 경우 응답합니다.

작업 필요한 반환 상태
IRP_MJ_CREATE(파괴적인 작업) STATUS_USER_MAPPED_FILE
IRP_MJ_WRITE(버퍼되지 않은 작업에만 해당) STATUS_PURGE_FAILED
IRP_MJ_SET_INFORMATION STATUS_PURGE_FAILED

이러한 상태는 미해결 SET_PURGE_FAILURE_MODE_ENABLED 있는 동안에만 반환되어야 합니다(분산 SET_PURGE_FAILURE_MODE_DISABLED 수신되지 않음). 다른 모든 경우에서 오류 상태는 애플리케이션에 반환됩니다.

다른 작업(instance 캐시된 쓰기의 경우)의 경우 파일 시스템(또는 필터)이 FSCTL_SET_PURGE_FAILURE_MODE 미해결 상태인 동안 섹션을 제거하지 못하면 미해결 FSCTL_SET_PURGE_FAILURE_MODE 수가 0으로 떨어질 때 작업을 보류하고 다시 발급해야 합니다. 파일 시스템(또는 필터)이 오류 상태(위에 나열된 항목 포함)를 반환하는 경우 해당 상태 애플리케이션에 반환됩니다.

오류 상태 필터 관리자 내에서 완전히 처리되며 실패한 작업의 다시 큐에 추가됩니다. 즉, 필터에 둘 다 표시되지 않으며 다음과 같은 중요한 의미가 있습니다.

  • 프로세스 모니터와 같은 파일 시스템 모니터링 도구는 이러한 작업을 보고하지 않습니다.
  • 다시 발급된 작업이 성공하려면 상위 필터를 포함해야 하는 경우 다시 큐에 추가된 작업이 실패합니다. 이 상황에서 필터 작성기는 이 두 번째 필터가 실패 상태 반환하도록 해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
머리글 ntifs.h

추가 정보

SET_PURGE_FAILURE_MODE_INPUT