KMDF 드라이버를 UMDF 2 드라이버로 변환하는 방법(그 반대의 경우도 마찬가지)
이 항목에서는 KMDF(Kernel-Mode Driver Framework) 드라이버를 UMDF(User-Mode Driver Framework) 버전 2 드라이버로 변환하는 방법을 설명합니다.
Visual Studio를 사용한 드라이버 변환
KMDF에서 UMDF로 전환하는 경우 UMDF V2(사용자 모드 드라이버, 비어 있음) 프로젝트 템플릿을 사용하여 Visual Studio에서 빈 UMDF 프로젝트를 만듭니다. UMDF에서 KMDF로 전환하는 경우 커널 모드 드라이버, 빈 (KMDF) 프로젝트 템플릿을 사용하여 Visual Studio에서 빈 KMDF 프로젝트를 만듭니다.
Visual Studio는 지정된 프레임워크를 대상으로 하는 INF 파일과 함께 적절한 설정을 사용하여 빈 드라이버 프로젝트를 만듭니다.
이전 드라이버의 소스 코드 및 헤더 파일을 새 프로젝트로 복사합니다.
헤더 파일을 업데이트합니다. UMDF의 경우 Windows.h를 포함합니다. KMDF의 경우 Ntddk.h를 포함합니다. Wdf.h는 KMDF와 UMDF 모두에 공통적이므로 두 가지 유형의 드라이버에 모두 포함합니다.
필요에 따라 _KERNEL_MODE 전처리기 매크로를 사용하여 조건부로 올바른 시스템 헤더를 추가합니다.
#ifndef _KERNEL_MODE // This is a user-mode driver #include <windows.h> #else // This is a kernel-mode driver #include <ntddk.h> #define NTSTRSAFE_LIB #include <ntstrsafe.h> #endif // This is a common WDF header (for both KMDF and UMDF) #include <wdf.h>
소스 코드를 업데이트하여 대상 드라이버 모델에서 지원되지 않는 기능을 제거하거나 조건부로 컴파일합니다( _KERNEL_MODE 매크로 사용). 예를 들면 다음과 같습니다.
드라이버에서 WPP 추적을 사용하는 경우 WPP_INIT_TRACING 매크로를 업데이트합니다. 이 매크로는 사용자 모드 및 커널 모드에서 다른 매개 변수를 사용합니다.
WPP_INIT_TRACING ( DriverObject, RegistryPath ); // KMDF and UMDF 2 WPP_INIT_TRACING ( “<MyDriverNameString>” ); // UMDF 1
UMDF 2의 경우 Visual Studio에서 실행 중인 추적 레코더를 사용하도록 설정하는 방법에 설명된 대로 를 추가
WPP_MACRO_USE_KM_VERSION_FOR_UM=1
해야 합니다.ExAllocatePoolWithTag와 같은 WDM 루틴을 호출하는 KMDF 드라이버를 변환하는 경우 WdfMemoryCreate와 같은 해당 WDF 메서드로 바꿉니다. 마찬가지로 사용자 모드 함수를 호출하는 UMDF 드라이버를 변환하는 경우 해당 커널 모드 루틴으로 대체합니다.
일부 메서드는 KMDF에서만 지원되지만 다른 메서드는 UMDF에서만 지원됩니다. 모든 WDF(Windows 드라이버 프레임워크) 메서드 및 해당 프레임워크 적용 가능성 목록은 WDF 콜백 및 메서드 요약을 참조하세요.