다음을 통해 공유


파일 시스템 필터 확인

사용 유효성 검사

필터 검증 도구는 미니 필터 드라이버에서 다음 사용의 유효성을 검사합니다.

  • 매개 변수 및 호출 컨텍스트의 올바른 사용
  • 사전 작업 및 사후 콜백 루틴에서 반환 값 수정
  • 콜백 데이터의 매개 변수에 대한 일관되고 일관된 변경 내용

필터 관리자 개체 추적

필터 검증 도구는 다음 필터 관리자 개체를 추적합니다.

  • 필터 컨텍스트(스트림 컨텍스트, 파일 컨텍스트 등)
  • 콜백 데이터 구조
  • 대기 중인 작업 항목
  • NameInformation 구조체
  • 파일 개체
  • 개체 필터링
  • 인스턴스 개체
  • 볼륨 개체

필터 컨텍스트 및 이름 정보 구조와 같은 참조 개수 구조의 경우 필터 검증 도구는 참조 수가 유출된 것으로 보이는 경우 필터 드라이버를 언로드할 때 디버거에 침입합니다. !fltkd 디버거 확장을 사용하여 유출된 구조를 찾는 방법에 대한 지침을 출력합니다.

필터 검증 도구 위반

필터 검증 도구가 위반을 감지하면 위반을 설명하는 메시지를 디버거에 출력합니다. 대부분의 위반의 경우 실행을 중지하고 사용자에게 몇 가지 작업을 수행하라는 메시지가 표시됩니다. 예시:

FILTER VERIFIER ERROR: A filter returned an unknown pre-operation callback status.
(Filter = FFFFAC04A21CD8A0 (MyFilter), Status = 0xbaadf00d)
Break, ignore, zap or remove ?

계속하려면 4개의 한 글자 명령 중 하나를 입력합니다.

  • B또는 b 중단의 경우: 추가 조사를 수행할 수 있는 디버거로 중단됩니다.
  • I또는 i 무시: 실행을 다시 시작합니다. 이 위반이 다시 발생하면 필터 검증 도구가 위반 메시지를 디버거에 출력하고 실행을 중지하고 프롬프트를 표시합니다.
  • Z또는 z Zap의 경우: 실행을 다시 시작합니다. 이 위반이 다시 발생하면 필터 검증 도구가 디버거에 위반 메시지를 출력하지만 실행을 중지하지는 않습니다.
  • R또는 r 제거: 실행을 다시 시작합니다. 이 위반이 다시 발생하면 필터 검증 도구는 위반 메시지를 인쇄하지 않으며 실행을 중단하지 않습니다.

참고 항목

컴파일러 최적화를 사용하도록 설정된 드라이버에서 필터 검증 도구를 사용하는 경우 코드에서 누수 원인을 찾을 수 없는 경우에도 필터가 하나 이상의 리소스에 대한 참조를 유출했다고 일관되게 주장하는 필터 검증 도구 오류가 발생할 수 있습니다. 메시지는 다음과 유사한 텍스트로 시작됩니다.

FILTER VERIFIER ERROR: A filter (Filter = FFFFAC04A21CD8A0 (MyFilter)) leaked references to the following resources:

개체 추적이 동기화되지 않았음을 나타내는 메시지가 표시되면 다음과 같습니다.

FILTER VERIFIER WARNING: Filter manager verifier object tracking may be out of sync for the system

이 조건의 가장 일반적인 원인은 필터 검증 도구가 비상 호출 최적화로 인해 필터 관리자 API의 실제 호출자를 식별할 수 없다는 것입니다. 드라이버의 루틴이 필터 관리자 API를 마지막 줄로 호출할 때 발생할 수 있습니다. 예시:

void MyWorkItemCallback(PFLT_GENERIC_WORKITEM WorkItem,
                        PVOID Filter,
                        PVOID Context)
{
   // Do some stuff
   ...
   FltFreeGenericWorkItem(WorkItem);
}

이 문제가 발생했는지 확인하는 몇 가지 방법이 있습니다.

  1. 에 래핑하여 용의자 루틴의 최적화를 #pragma optimize("", off) ... #pragma optimize("", on)사용하지 않도록 설정합니다.
  2. 필터 관리자 API 호출이 루틴에서 마지막으로 수행되지 않도록 코드를 다시 정렬합니다.

이러한 옵션 중 하나를 시도한 후 오류가 더 이상 재현되지 않으면 가양성일 수 있습니다.

이 옵션 활성화

명령줄을 사용하여 하나 이상의 드라이버에 대한 파일 시스템 필터 확인 기능을 활성화할 verifier.exe 수 있습니다. 자세한 내용은 드라이버 검증 도구 옵션 선택을 참조 하세요.

참고 항목

Windows 빌드 25126 이전에는 확인을 위해 ntoskrnl이 선택된 동시에 하나 또는 미니 필터에서 파일 시스템 필터 확인을 사용하도록 설정하는 것이 지원되지 않습니다. 이렇게 하면 잘못된 검증 도구 오류가 발생할 수 있습니다.

이 문제를 방지하려면 빌드 25126 이후 Windows 버전을 확인하거나 업그레이드할 구성 요소 목록에 ntoskrnl을 포함하지 마세요.

필터 검증 도구를 시작하는 권장 방법은 특수 풀 및 풀 추적과 같은 추가 유용한 기능을 제공하기 때문에 /standard 옵션을 verifier.exe사용하는 것입니다.

verifier.exe /standard /driver MyFilter.sys

미니 필터 드라이버가 필터 관리자에 등록되면 확인이 시작됩니다.

  • Windows 11 이상 버전에서 필터 검증 도구만 사용하도록 설정하여 최소 필터 검증 도구 검사를 사용하도록 설정하려면 드라이버 검증 도구(verifier.exe)에서 I/O 확인파일 시스템 필터 확인 옵션을 사용하도록 설정합니다. 예시:

    verifier.exe /ruleclasses 5 37 /driver MyFilter.sys
    
  • Windows 10 및 이전 버전의 Windows에서 필터 검증 도구만 사용하도록 설정하여 최소 필터 검증 도구 검사를 사용하도록 설정하려면 미니 필터 드라이버의 이름을 지정하고 드라이버 검증 도구(verifier.exe)에서 I/O 확인 옵션을 사용하도록 설정합니다. 예시:

    verifier.exe /flags 0x10 /driver MyFilter.sys