다음을 통해 공유


WDK(Windows 드라이버 키트) 알려진 문제

이 항목에서는 WDK와 관련된 알려진 문제에 대해 자세히 설명합니다.

Windows 11 버전 24H2용 WDK

프로비전 후 다시 시작

프로비전 및 배포 후 대상 컴퓨터는 배포 단계 후에 다시 시작되지 않습니다.

ARM64 WDK 드라이버 SxS 지원

Windows 11 버전 24H2 키트와 Windows 11 버전 22H2 키트가 모두 ARM64 컴퓨터에 설치되면 TargetPlatformVersion이 Windows 11로 설정된 ARM64용 KMDF 드라이버를 빌드하면 버전 22H2가 WdfDriverEntry.lib(stub.obj) : error LNK2001: unresolved external symbol실패합니다.

WDK 확장 설치 실패

Visual Studio 버전 17.11.0 이상을 사용하는 경우 WDK 설치에서 설치 확장 확인란의 선택을 취소합니다.

Windows 11 버전 22H2용 WDK

시작 시 서비스 오류

2022년 5월과 8월 사이에 원래 Windows 11 버전 22H2 WDK(버전 10.0.22621.1)를 설치한 경우 WDK로 Visual Studio를 시작할 때 다음 오류 메시지가 표시될 수 있습니다.

패키지가 Microsoft.Windows.Tools.WinIDE.Debugger.DebuggerPackage, DebuggerPackage, Version=10.0.0.0, Culture=neutral, PublicKeyToken=null 제대로 로드되지 않았습니다.

이 문제는 WDK 버전 10.0.22621.382에서 해결되었습니다. WDK를 제거한 다음 Windows 드라이버 키트 다운로드의 지침을 사용하여 최신 WDK를 다시 설치할 수 있습니다.

Visual Studio 내의 디버거가 작동하지 않음

Windows 11 버전 22H2 WDK(10.0.22621.382)와 함께 Visual Studio 2022 버전 17.2.0 및 17.3을 사용하는 경우 Visual Studio 인터페이스 내에서 드라이버를 디버그할 수 없습니다. 이 문제를 해결하려면 다음 중 하나를 수행합니다. Visual Studio를 17.4.1 이상으로 업데이트하거나, WinDbg로 디버그하거나, 17.2.0 이전 버전의 Visual Studio를 사용합니다. 다음 오류 메시지는 이 문제와 관련이 있습니다.

UI에서 QueryBuildManagerBusyEx를 호출해야 합니다.

WDF 재배포 가능 공동 설치 관리자가 작동하지 않음

이 릴리스부터 WDF 재배포 가능 공동 설치 관리자는 더 이상 지원되지 않습니다. 특히 Windows 11, 버전 22H2 WDK 및 이전 WDK가 모두 있는 컴퓨터에서 WDF 1.11 드라이버를 빌드할 때 WDF 코인스탈러를 찾을 수 없기 때문에 msbuild가 실패합니다.

이 문제를 해결하려면 Windows 11 버전 22H2 WDK를 설치하기 전에 폴더 \Program files (x86)\windows kit\10\redist\wdf 를 백업하고 나중에 복원합니다. 또는 Windows 11 버전 22H2 WDK를 이미 설치한 경우 별도의 컴퓨터에 WDK 8 재배포 가능 구성 요소에 MSI 파일을 설치하고 위의 폴더에 폴더를 복사 redist 합니다. 자세한 내용은 재배포 가능 프레임워크 구성 요소를 참조 하세요.

Windows 10 버전 2004용 WDK

ExAllocatePoolZero, ExAllocatePoolQuotaZero 및 ExAllocatePoolPriorityZero 함수의 문제 해결됨

2020년 5월, OSR 은 풀 할당 자동 제로화에 대한 새로운 하위 수준 지원에서 Windows 10 버전 1909를 실행하는 시스템에서 할당이 0으로 초기화되지 않을 수 있는 문제가 있음을 발견했습니다. 이제 Windows 10용 WDK, 버전 2004 및 12월 16일 Windows 10 버전 2004용 EWDK(Enterprise WDK)의 보안 새로 고침으로 수정되었습니다. Microsoft는 보안 새로 고침을 활용하고 Visual Studio 빌드 도구 16.7을 포함하도록 EWDK를 업데이트했습니다. Microsoft는 모든 드라이버 개발자가 원래 SDK 및 WDK(버전 2004)를 제거하고 새로 고침 SDK 및 WDK 또는 EWDK를 설치하는 것이 좋습니다.

완전한 보안 솔루션이 준비되었는지 확인하기 위해 11월에 Windows 10 버전 1909용 OS 수정이 릴리스되었으므로 보안 문제로 만든 드라이버가 있는 경우 OS가 보호됩니다.

업데이트된 WDK/EWDK를 다운로드하는 것 외에도 모든 드라이버는 기본적으로 0 메모리를 반환하는 새 풀 제로 DDI를 사용하도록 모든 커널 할당을 전환하는 것이 좋습니다. 이렇게 하면 드라이버 보안 및 안정성이 향상됩니다. 이러한 전환을 돕기 위해 Microsoft는 Windows 10 WDK 버전 20236 이상에서 사용할 수 있는 정적 드라이버 검증 도구 규칙을 만들었습니다. 규칙은 이전 풀 할당 DDI가 사용되는 드라이버의 소스 코드에 있는 모든 인스턴스를 식별하고, 더 안전한 새 DDI로 바꾸는 것이 좋습니다. 이 규칙은 WDM, WDF 및 NDIS 기반 드라이버에 적용됩니다.

WDK를 설치하면 WDK 1903에서 볼 수 있듯이 모든 C++ 프로젝트에 대한 Spectre 완화가 더 이상 활성화되지 않습니다.

WDK 설치는 기본적으로 모든 드라이버에 대해 Spectre 완화를 사용하도록 설정하지만 더 이상 모든 C++ 프로젝트에 사용할 수 없습니다.

'대상 '10.0.19041.0'에 해당하는 WDK를 찾을 수 없습니다.' 오류

WDK 10.0.19041.0에서 [Windows SDK 버전]을 '10.0(최신 설치된 버전)'으로 선택하면 SDK 버전이 설치된 경우에도 "대상 버전 '10.0.19041.0'에 해당하는 WDK를 찾을 수 없습니다." 오류가 발생합니다.

해결 방법: 드라이버 프로젝트의 속성 페이지(구성 속성 >일반)에서 Windows SDK 버전을 $(LatestTargetPlatformVersion)로 설정합니다. 이 옵션을 선택할 수 없는 경우 부모 또는 프로젝트 기본값에서 상속하는 옵션을 선택합니다.

서버에서 실행되는 EWDK 및 SDV에는 .NET 요구 사항이 있습니다.

EWDK에서 정적 드라이버 검증 도구를 실행하려면 .Net Framework 4.7.2가 필요합니다. 시스템의 Windows 버전에 따라 .NET이 설치되거나 설치될 수 있지만 사용하도록 설정해야 하거나 설치되지 않을 수 있습니다. 설치된 .NET 버전 또는 .NET 설치 상태에 대한 자세한 내용은 .NET Framework 버전 및 종속성을 검토 하세요.

System.IO.FileNotFoundException으로 DVL 생성 실패

DVL(드라이버 확인 로그)을 만들려고 하면 다음 오류가 표시됩니다.

Unhandled Exception: System.IO.FileNotFoundException: 
Could not load file or assembly 
'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
or one of its dependencies. 
The system cannot find the file specified.

명령줄 및 GUI 환경 모두에서 발생할 수 있습니다. 이 문제는 이후 버전의 WDK에서 해결되었으며 Windows Insider Preview WDK에서 확인할 수 있습니다. 아쉽게도 현재 버전에 대한 해결 방법이 없습니다.

VS가 설치되지 않은 경우 EWDK에서 SDV가 실패합니다.

SDV는 Visual Studio의 일부로 VCRUNTIME140D.dll 종속됩니다. 따라서 VS가 설치되지 않은 컴퓨터에서 EWDK를 실행하면 실패합니다. 이 문제를 해결하려면 컴퓨터에 Visual Studio를 설치합니다.

WDK 테스트 탐색기를 사용할 때 드라이버 검증 도구가 사용/사용하지 않도록 설정되지 않음

WDK 테스트 탐색기를 사용하여 디바이스 기본 테스트를 실행할 때 드라이버 검증 도구가 활성화/비활성화되지 않습니다.

해결 방법: 클라이언트 컴퓨터에서 이러한 지침에 따라 드라이버 검증 도구를 수동으로 사용하거나 사용하지 않도록 설정합니다.

Windows 10, 버전 2004 및 WDK Windows 10, 버전 1903 또는 버전 1803의 WDK 병렬 설치

두 버전의 키트가 동일한 PC에 설치되어 있는 경우 이전 버전에서는 '드라이버 배포' 기능이 작동하지 않습니다.

해결 방법: 드라이버 배포 기능이 필요한 경우 별도의 컴퓨터에서 1803을 사용합니다.

이제 WDTF(Windows Device Testing Framework) 테스트는 Windows 10 버전이 WDK와 일치하는 시스템에서만 실행됩니다.

Windows 10용 WDK 버전 1809에서는 이 버전의 Windows 10 버전 1809를 지원하기 위해 WDTF가 변경되었습니다. 그 효과는 WDTF가 더 이상 하위 수준 OS에서 실행되지 않는다는 것입니다. Windows 10 버전 2004용 WDK를 사용하여 변경이 계속됩니다.

하위 수준 테스트에 대한 대안

Windows 10 버전 1803용 WDK의 WDTF 테스트는 이전 Windows 버전에서 실행할 수 있습니다.

APIValidator

x86 arch 컴퓨터에서 APIValidator는 x64 이진 파일에 대해 실행할 수 없습니다. x86 컴퓨터 APIValidator에서 x64 드라이버를 빌드하는 경우 해제해야 합니다.

해결 방법:

  1. 드라이버 솔루션의 속성 페이지로 이동합니다.

  2. APIValidator를 선택한 다음 일반을 선택한 다음, 실행 ApiValidator를 예에서 아니요변경합니다.

Windows 7 시스템에서 실행되는 WDK에는 KB 3033929 필요합니다.

Windows 7을 실행하는 시스템에 WDK를 설치하기 전에 Microsoft 보안 권고 3033929(KB3033929)를 설치해야 합니다. KB3033929 Microsoft 다운로드 센터에서 다운로드할 수 있습니다.

WDK를 설치하면 추가 기능 구성 요소가 이미 설치되어 있다는 오류가 Visual Studio에서 생성됩니다.

WDK가 제거되었지만 Visual Studio용 WDK 드라이버 확장이 제거되지 않은 경우 이 오류 메시지를 볼 수 있습니다.

해결 방법: Visual Studio에서 확장 드롭다운 메뉴로 이동하여 확장 관리를 선택하고 Windows 드라이버 키트선택한 다음 제거를 클릭합니다.

FAQ

어떻게 할까요? 내가 가진 WDK 또는 EWDK 버전에 풀 할당 0에 대한 수정 사항이 포함되어 있는지 알 수 있습니까?

시스템 설정에서 프로그램 추가 또는 제거로 이동하여 Windows 드라이버 키트검색하고 버전을 기록해 둡니다. Windows 10용 원래 WDK 버전 2004에는 10.0.19041.1 버전이 있으며 새로 고친 WDK 버전은 EWDK의 경우 10.0.19041.685입니다. EWDK 환경이 시작되면 명령 창의 제목을 확인합니다. 새로 고친 버전에는 vb_release_svc_prod1.19041.685가 포함됩니다. 또한 환경 변수를 살펴볼 때 BuildLab 변수는 vb_release_svc_prod1.19041.685를 표시해야 합니다.

Windows SDK(소프트웨어 개발 키트)도 새로 고쳐졌나요? 이 기능도 필요합니까?

아니요, 그러나 새로 고친 Windows SDK(소프트웨어 개발 키트)에는 onecore.lib에 대한 수정 사항이 포함되어 있습니다. 또한 일반적으로 SDK와 WDK를 정렬된 상태로 유지하는 것이 좋습니다.

Windows 10 버전 2004용 WDK가 이미 설치된 경우 새로 고친 버전을 설치하기 전에 제거해야 하나요?

원래 2004 SDK 및 WDK가 있는 경우 이러한 SDK를 제거하고 보안 새로 고침 SDK 및 WDK를 설치하는 것이 좋습니다. 즉, 새로 고친 WDK가 원래 WDK 위에 설치되면 새로 고친 버전이 원본을 덮어쓰게 됩니다. 참고: 이 시나리오에서는 "프로그램 추가 또는 제거"에서 두 버전이 모두 나열됩니다.