Share via


파일 시스템 필터 확인

사용 유효성 검사

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

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

필터 관리자 개체 추적

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

  • 필터 컨텍스트(스트림 컨텍스트, 파일 컨텍스트 등)
  • 콜백 데이터 구조
  • 대기 중인 작업 항목
  • 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 또는 zZap의 경우: 실행을 다시 시작합니다. 이 위반이 다시 발생하면 필터 검증 도구가 위반 메시지를 디버거에 출력하지만 실행을 중단하지는 않습니다.
  • 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 수 있습니다. 자세한 내용은 드라이버 검증 도구 옵션 선택을 참조하세요.

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

verifier.exe /standard /driver MyFilter.sys

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

  • Windows 11 이상 버전의 Windows에서 필터 검증 도구만 사용하도록 설정 필터 검증 도구 검사의 최소 집합을 사용하도록 설정하려면 드라이버 검증 도구(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