다음을 통해 공유


드라이버에 대한 알림 만들기 및 닫기의 불균형 방지

경고

UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다.

보관된 UMDF 1 샘플은 Windows 11 버전 22H2 - 2022년 5월 드라이버 샘플 업데이트에서 찾을 수 있습니다.

자세한 내용은 UMDF를 사용하여 시작 참조하세요.

상위 UMDF 드라이버는 IWDFDeviceInitialize::AutoForwardCreateCleanupClose 메서드를 사용하여 프레임워크가 디바이스 스택의 다음 하위 드라이버에 create-file, cleanup-file 및 close-file 알림을 자동으로 전달하는 시기를 제어할 수 있습니다. 그러나 상위 드라이버가 자동ForwardCreateCleanupClose 를 파일별 수준이 아닌 디바이스 수준에서만 자동으로 전달하도록 설정하므로 전달은 디바이스의 모든 파일에 대해 동일해야 합니다. 프레임워크는 정리 파일 및 클로즈 파일 알림에 대해 이 전달 동작을 보장합니다. 위쪽 드라이버가 IQueueCallbackCreate::OnCreateFile 콜백 함수를 구현하는 경우 전달 동작이 모든 파일 만들기 요청에 대해 동일하고 정리 파일 및 클로즈 파일 알림의 전달 동작과 일치하는지 확인해야 합니다. 이렇게 하지 않으면 낮은 드라이버가 IQueueCallbackCreate::OnCreateFile 메서드 및 IFileCallbackCleanup::OnCleanupFileIFileCallbackClose::OnCloseFile 메서드에 대한 같지 않은 양의 호출을 받을 수 있습니다.

하위 드라이버가 같지 않은 양의 만들기 파일 및 닫기 파일 알림을 받지 못하도록 하려면 상위 드라이버가 IQueueCallbackCreate::OnCreateFile 콜백 함수에서 다음을 확인해야 합니다.

  • 전달 동작은 디바이스의 모든 파일에 대해 동일합니다.

  • 전달 동작은 IWDFDeviceInitialize::AutoForwardCreateCleanupClose의 플래그 매개 변수를 설정하는 방법과 일치합니다. 구체적인 요건은 다음과 같습니다.

    • 드라이버가 플래그를 WdfTrue로 설정하면 드라이버는 모든 만들기 파일 요청을 디바이스 스택 아래로 전달해야 합니다.
    • 드라이버가 플래그를 WdfFalse로 설정한 경우 드라이버는 스택 아래로 만들기 파일 요청을 전달해서는 안 됩니다.
    • 드라이버가 플래그를 WdfUseDefault 로 설정하고 다음을 수행합니다.
      • 드라이버가 함수 드라이버인 경우 스택 아래로 파일 만들기 요청을 전달해서는 안 됩니다.
      • 드라이버가 필터 드라이버인 경우 모든 만들기 파일 요청을 스택 아래로 전달해야 합니다.

드라이버가 만들기 파일 요청을 전달할 수 없는 경우 드라이버는 IWDFDevice::CreateWdfFile 메서드를 호출하여 새 WDF 파일을 만들어 하위 드라이버에 대한 새 만들기 파일 요청을 생성할 수 있습니다. 그런 다음 드라이버는 새로 생성된 create-file 요청의 결과(즉, CreateWdfFile의 결과)에 따라 원래 만들기 파일 요청을 완료할 수 있습니다.