Windows 10 WDF 드라이버의 새로운 기능

이 항목에서는 Windows 10 Windows WDF(드라이버 프레임워크) 드라이버의 새로운 기능과 향상된 기능을 요약합니다.

Windows Server 2022에는 KMDF(Kernel-Mode Driver Framework) 버전 1.33 및 UMDF(User-Mode Driver Framework) 버전 2.33이 포함되어 있습니다.

다음 프레임워크 버전을 사용하여 다음을 위한 드라이버를 빌드할 수 있습니다.

  • Windows 10(모든 SKU)
  • Windows Server 2022

버전 기록은 KMDF 버전 기록UMDF 버전 기록을 참조하세요. 언급된 경우를 제외하고 이 페이지의 UMDF 참조는 UMDF 버전 1에서 사용할 수 없는 버전 2 기능을 설명합니다.

Windows Server 2022용 WDF의 새로운 기능

KMDF 버전 기록UMDF 버전 기록을 참조하세요.

Windows 10용 WDF 버전 2004의 새로운 기능

KMDF 버전 기록UMDF 버전 기록을 참조하세요.

Windows 10용 WDF의 새로운 버전 1903

추가되거나 변경된 기능이 없습니다.

Windows 10, 버전 1809 대한 WDF의 새로운 기능

Windows 10용 WDF의 새로운 버전 1803

Windows 10용 WDF의 새로운 버전 1709

KMDF 버전 기록UMDF 버전 기록을 참조하세요.

Windows 10용 WDF의 새로운 버전 1703

Windows 10 버전 1703에서 WDF에는 다음과 같은 향상된 기능이 포함되어 있습니다.

  • 과도한 개체 생성을 감지하는 새 WDF 검증 도구 설정

    경우에 따라 프레임워크 개체가 잘못 부모가 되며 사용 후 삭제되지 않습니다. 이 기능을 사용하면 최대 개체 수와 이 임계값을 초과할 때 발생하는 작업을 지정할 수 있습니다.

    모니터링을 시작하려면 다음 레지스트리 값을 다음 아래에 추가합니다. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<driver service>\Parameters\wdf

    1. 임계값을 사용하여 ObjectLeakDetectionLimit 라는 DWORD 값을 추가합니다. ObjectsForLeakDetection 키에 설명된 형식의 최대 개체 수입니다.

    2. 확인할 각 형식 이름을 나열하는 ObjectsForLeakDetection 이라는 새 REG_MULTI_SZ 값을 추가합니다. 예를 들어 WDFDMATRANSACTION WDFDEVICE를 지정할 수 있습니다. 모든 핸들 형식을 지정하려면 문자열로 사용합니다 * .

    3. 이 임계값을 초과하여 디버그 중단 또는 버그 검사를 발생시킬지 여부를 제어하려면 DbgBreakOnError 키를 설정합니다.

      기본적으로 ObjectsForLeakDetection 키를 지정하지 않으면 프레임워크는 WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT 및 WDFDEVICE를 모니터링합니다.

      이 제한은 설치된 디바이스 수에 따라 크기가 조정되므로 드라이버가 세 개의 WDFDEVICE 개체를 만드는 경우 WDF 검증 도구 제한은 ObjectLeakDetectionLimit에 지정된 값의 3배입니다.

      WDFREQUEST를 지정하는 경우 검증 도구는 드라이버가 만드는 WDFREQUEST 개체만 계산합니다.

      이 기능은 현재 WDFMEMORY 개체 형식 추적을 지원하지 않습니다.

  • SleepStudy 도구는 KMDF 드라이버에 대한 정보를 제공합니다.

    SleepStudy 소프트웨어 도구는 KMDF 드라이버에서 시스템이 절전 모드로 들어가지 못하게 하는 전원 참조 수를 보고합니다. 자세한 내용은 최신 대기 SleepStudy를 참조하세요.

이 페이지의 나머지 부분에는 Windows 10 버전 1507에서 추가된 기능에 대해 설명합니다.

WDF 소스 코드는 공개적으로 사용할 수 있습니다.

  • 이제 WDF 소스 코드는 GitHub 오픈 소스 사용할 수 있습니다. 이는 Windows 10 제공되는 WDF 런타임 라이브러리가 빌드된 것과 동일한 소스 코드입니다. 드라이버와 WDF 간의 상호 작용을 따를 수 있는 경우 드라이버를 보다 효과적으로 디버그할 수 있습니다. 에서 https://github.com/Microsoft/Windows-Driver-Frameworks다운로드합니다.

  • Windows 10 WDF에 대한 프라이빗 기호 파일은 이제 Microsoft Symbol Server를 통해 사용할 수 있습니다.

  • 이제 WDK(Windows 드라이버 키트) 10개 샘플도 GitHub 게시됩니다. 에서 https://github.com/Microsoft/Windows-Driver-Samples다운로드합니다.

프레임워크 코드의 자동 소스 수준 디버깅

WinDbg를 사용하여 Windows 10 WDF 드라이버를 디버그하는 경우 WinDbg는 Microsoft의 공용 GitHub 리포지토리에서 프레임워크 소스 코드를 자동으로 검색합니다. 이 기능을 사용하여 디버깅하는 동안 WDF 소스 코드를 단계별로 실행하고 소스 코드를 로컬 컴퓨터에 다운로드하지 않고 프레임워크 내부를 알아볼 수 있습니다. 자세한 내용은 WDF 소스 및 비디오로 디버깅: WDF 소스 코드를 사용하여 드라이버 디버깅을 참조하세요.

유니버설 드라이버 규정 준수

모든 WDF 드라이버 샘플 및 Visual Studio 드라이버 템플릿은 유니버설 Windows 드라이버 규격입니다.

모든 KMDF 및 UMDF 2 기능은 유니버설 Windows 드라이버 규격입니다.

UMDF 1 드라이버는 데스크톱 버전 및 이전 버전의 데스크톱 Windows 대한 Windows 10만 실행됩니다. UMDF 2의 범용 기능을 활용하고 싶으신가요? 이전 UMDF 1 드라이버를 포팅하는 방법을 알아보려면 UMDF 1에서 UMDF 2로 드라이버 포팅을 참조하세요.

디버깅 및 진단 기능

  • 모든 KMDF 및 UMDF 2 드라이버는 항상 사용 가능한 IFR(Inflight Trace Recorder)을 사용할 수 있습니다. 드라이버가 사용자 지정 추적을 제공하는 경우 드라이버 IFR 로그에는 추적 메시지가 포함됩니다. 새 드라이버 IFR 로그는 WDF가 각 드라이버에 대해 만드는 프레임워크 IFR 로그와 별개입니다.

    IFR을 쉽게 켤 수 있습니다. KMDF 및 UMDF 드라이버 에서 추적을 로깅 하고 실행 중인 추적 레코더를 사용하려면 IFR(Inflight Trace Recorder)을 참조하세요.

  • IFR은 페이지할 수 없는 메모리에서 WPP 추적의 순환 버퍼를 유지 관리합니다. 드라이버가 충돌하는 경우 로그는 크래시 덤프 파일에 자주 포함됩니다.

  • 드라이버 이진 파일에서 IFR을 켜면 IFR이 존재하고 드라이버의 수명 동안 실행됩니다. 명시적 추적 컬렉션 세션을 시작할 필요가 없습니다.

    • IFR 로그는 책임 있는 드라이버가 결정되지 않은 경우 또는 크래시가 호스트 시간 제한인 경우를 제외하고 미니덤프 파일에 포함됩니다.

    • 디버거가 연결된 경우 !wdfkd.wdflogdump를 실행하여 드라이버 및 프레임워크 IFR 로그 모두에 액세스할 수 있습니다.

    • 디버거가 연결되지 않은 경우에도 두 로그에 모두 액세스할 수 있습니다. 방법을 알아보려면 비디오: 디버거 없이 드라이버 IFR 로그에 액세스하는 방법을 참조하세요.

    • UMDF 드라이버를 디버깅할 때 다음을 실행하여 드라이버 로그와 프레임워크 로그를 병합할 수 있습니다. !wdfkd.wdflogdump<drivername.dll>-m

  • UMDF 로그(WudfTrace.etl) 및 덤프는 이제 %systemDrive%\LogFiles\Wudf 대신 %ProgramData%\Microsoft\WDF에 있습니다.

  • 새 디버거 명령: !wdfkd.wdfumtriage 는 시스템의 모든 UMDF 디바이스에 대한 커널 중심 보기를 제공합니다.

  • !analyze를 실행하여 UMDF 검증 도구 오류 또는 UMDF 처리되지 않은 예외를 조사할 수 있습니다. 이는 라이브 커널 디버깅뿐만 아니라 %ProgramData%\Microsoft\WDF에서 사용자 크래시 덤프 파일을 디버깅하는 데에도 작동합니다.

  • KMDF 및 UMDF 2에서는 디버거에서 전원 참조 사용량을 모니터링할 수 있습니다. 자세한 내용은 WDF에서 전원 참조 누수 디버깅을 참조하세요.

  • !wdfkd.wdfcrashdump를 사용하여 UMDF 2 드라이버에 대한 오류 정보를 표시할 수 있습니다. 자세한 내용은 !wdfkd.wdfcrashdump를 참조하세요.

WDF 드라이버용 성능 추적 도구

Windows 성능 Toolkit(WPT)를 사용하여 지정된 KMDF 또는 UMDF 2 드라이버의 성능 데이터를 볼 수 있습니다. 추적을 사용하도록 설정하면 프레임워크는 I/O, PnP 및 Power 콜백 경로에 대한 ETW 이벤트를 생성합니다. 그런 다음, I/O 처리량 속도, CPU 사용률 및 콜백 성능을 보여 주는 WPA(Windows 성능 분석기)에서 그래프를 볼 수 있습니다. WPT는 Windows ADK(평가 및 배포 키트)에 포함되어 있습니다.

자세한 내용은 WDF와 함께 WPT(Windows Performance Toolkit) 사용을 참조하세요.

UMDF의 HID 드라이버에 대한 추가 지원

  • UMDF는 이제 HID 필터(HIDClass에 의해 열거됨) 및 미니 드라이버를 완전히 지원합니다. 기존 KMDF 드라이버를 포팅하거나 새 UMDF 2 필터를 작성하기만 하면 됩니다. 기능이 자동으로 사용하도록 설정됩니다.

  • ACPI로 열거된 UMDF HID 미니 드라이버는 선택적 일시 중단을 수행할 수 있습니다. 자세한 내용은 WDF HID 미니 드라이버 만들기를 참조하세요.

  • 이제 터치 및 마우스와 같은 짧은 대기 시간 입력 디바이스를 위해 HID 스택에 UMDF 드라이버를 설치할 수 있습니다. 입력 디바이스에 대한 드라이버는 UmdfHostPriority INF 지시문을 지정해야 합니다. 자세한 내용은 INF 파일에서 WDF 지시문 지정을 참조하세요.

GPIO 지원 디바이스에 대한 인터럽트 지원

UMDF는 더 이상 WinUSB를 필요로 하지 않습니다.

UMDF의 USB 드라이버에 대한 새로운 지원이 추가되었습니다. UMDF 2 USB 드라이버는 더 이상 WinUSB를 사용하지 않습니다. 새 기능을 사용하기 위해 드라이버는 UmdfDispatcher 지시문을 WinUSB 대신 NativeUSB로 설정합니다. INF 파일에서 WDF 지시문 지정을 참조하세요.

향상된 성능

  • UMDF 시스템 구성 요소는 디스크 공간을 적게 사용합니다.

  • KMDF 및 UMDF 드라이버는 페이징이 아닌 메모리를 적게 사용합니다.

  • 프레임워크 버전 검사가 향상되어 헤더/라이브러리 불일치가 줄어듭니다.

  • UMDF는 HID 전송에 대한 향상된 버퍼 매핑을 제공합니다.