KMDF 및 UMDF 드라이버 설치 문제 해결

프레임워크의 공동 설치 관리자는 디버깅 메시지를 만듭니다. 디버거에서 이러한 메시지를 볼 수 있습니다.

또한 공동 설치 관리자는 디버깅 메시지를 설치 작업 로그 (%windir%\setupact.log) 파일에 씁니다. 설치 작업 로그에는 공동 설치 관리자의 버전과 드라이버의 INF 파일에 지정된 드라이버가 포함됩니다. 이러한 항목이 예상대로인지 확인해야 합니다.

KMDF 설치 검사

설치 작업 로그의 다음 출력은 KMDF 드라이버를 성공적으로 설치한 결과입니다.

WdfCoInstaller: DIF_INSTALLDEVICE: Pre-Processing
WdfCoInstaller: ReadComponents:  WdfSection for Driver Service ECHO using KMDF lib version Major 0x1, minor 0x9 
WdfCoInstaller: DIF_INSTALLDEVICE: Coinstaller version: 1.9.7100
WdfCoInstaller: DIF_INSTALLDEVICE: KMDF in-memory version: 1.9.7100
WdfCoInstaller: DIF_INSTALLDEVICE: KMDF on-disk version: 1.9.7100
WdfCoInstaller: Service Wdf01000 is running
WdfCoInstaller: DIF_INSTALLDEVICE: Update is not required. The on-disk KMDF version is newer than or same as the version of the coinstaller
WdfCoInstaller: DIF_INSTALLDEVICE: Post-Processing

위의 시나리오에서는 디스크 내 버전 및 메모리 내 프레임워크 버전이 동일한 버전의 공동 설치 관리자인 KMDF 1.9이므로 업데이트가 필요하지 않았습니다.

실패한 설치에 대해 자세히 설명한 다음 출력을 고려합니다.

WdfCoInstaller: ReadComponents:  WdfSection for Driver Service ECHO using KMDF lib version Major 0x1, minor 0x9  
WdfCoInstaller: DIF_INSTALLDEVICE: Coinstaller version: 1.9.7100
WdfCoInstaller: DIF_INSTALLDEVICE: KMDF in-memory version: 1.7.6000
WdfCoInstaller: DIF_INSTALLDEVICE: KMDF on-disk version: 1.7.6000
WdfCoInstaller: Service Wdf01000 is running
WdfCoInstaller: DIF_INSTALLDEVICE: Reboot is required, because the in-memory KMDF version is older than the coinstaller's version.
WdfCoInstaller: DIF_INSTALLDEVICE: Update is required, because the on-disk KMDF version is older than the coinstaller
WdfCoInstaller: VerifyMSRoot: exit: error(0) The operation completed successfully.
WdfCoInstaller: Invoking "D:\Windows\system32\wusa.exe "D:\Windows\Temp\WdfTemp\Microsoft Kernel-Mode Driver Framework Install-v1.9-Vista.msu" /quiet /norestart".
WdfCoInstaller: The update process returned error code :error(265) <no error text>. 
WdfCoInstaller: For additional information please look at the log files %windir%\windowsupdate.log and %windir%\Logs\CBS\CBS.log

이 시나리오에서는 메모리 내 버전과 KMDF 런타임의 디스크 내 버전이 공동 설치 관리자 버전보다 오래되었기 때문에 업데이트와 재부팅이 모두 필요했습니다. 그러나 업데이트에 실패했습니다. 공동 설치 관리자는 오류에 대한 자세한 정보를 찾을 수 있는 추가 로그 파일을 가리킵니다.

KMDF 드라이버의 동적 바인딩과 관련된 오류에 대해 시스템 이벤트 로그를 런타임 라이브러리에 검사 수도 있습니다. 이러한 오류는 시스템 이벤트 로그에 Wdf<MajorVersionNumber><MinorVersionNumber> 항목을 생성할 수 있습니다. 이 경우 컴퓨터를 다시 부팅합니다. %windir%\system32\drivers 폴더에서 Wdf<MajorVersionNumberMinorVersionNumber>><.sys 삭제하여 KMDF 런타임을 강제로 다시 설치할 수도 있습니다.

UMDF 설치 검사

설치 작업 로그의 다음 출력은 성공적인 UMDF 드라이버 설치에 대해 설명합니다.

WudfUpdate: installing version (1,9,0,7100).
WudfUpdate: Checking for presence of previous UMDF installation.
WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfrd.sys version (1.9.0.7100)
WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfpf.sys version (1.9.0.7100)
WudfUpdate: Found binary %WINDIR%\system32\wudfhost.exe version (1.9.0.7100)
WudfUpdate: Found binary %WINDIR%\system32\wudfsvc.dll version (1.9.0.7100)
WudfUpdate: Found binary %WINDIR%\system32\wudfx.dll version (1.9.0.7100)
WudfUpdate: Found binary %WINDIR%\system32\wudfplatform.dll version (1.9.0.7100)
WudfUpdate: Found binary %WINDIR%\system32\wudfcoinstaller.dll version (1.9.0.7100)
WudfUpdate: UMDF installation is same as update. WudfUpdate: Loading configuration coinstaller from D:\Windows\system32\wudfcoinstaller.dll.
WudfCoInstaller: ReadWdfSection: Checking WdfSection [Echo_Install.NT.Wdf]
WudfCoInstaller: Configuring UMDF Service  WUDFEchoDriver.
WudfCoInstaller: Service WudfSvc is already running.
WudfCoInstaller: Final status: error(0) The operation completed successfully.

위의 시나리오에서는 런타임의 디스크 내 버전이 공동 설치 관리자 버전과 동일한 UMDF 1.9이므로 업데이트가 필요하지 않습니다.

실패한 설치에 대해 자세히 설명한 다음 출력을 고려합니다.

WudfUpdate: installing version (1,9,0,7100).
WudfUpdate: Checking for presence of previous UMDF installation.
WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfrd.sys version (1.5.0.6000)
WudfUpdate: Found binary %WINDIR%\system32\drivers\wudfpf.sys version (1.5.0.6000)
WudfUpdate: Found binary %WINDIR%\system32\wudfhost.exe version (1.5.0.6000)
WudfUpdate: Found binary %WINDIR%\system32\wudfsvc.dll version (1.5.0.6000)
WudfUpdate: Found binary %WINDIR%\system32\wudfx.dll version (1.5.0.6000)
WudfUpdate: Found binary %WINDIR%\system32\wudfplatform.dll version (1.5.0.6000)
WudfUpdate: Found binary %WINDIR%\system32\wudfcoinstaller.dll version (1.5.0.6000)
WudfUpdate: UMDF installation is older than current.
WudfUpdate: Locating resource stream WUDF_UPDATE_VISTA-RTM.
WudfUpdate: unpacking update from resource to Microsoft User-Mode Driver Framework Install-v1.9-Vista.msu.
WudfUpdate: Temporary path is D:\Windows\Temp\WDF7625.tmp.
WudfUpdate: Invoking update "%SYSTEMROOT%\system32\wusa.exe" with command line "D:\Windows\Temp\WDF7625.tmp\Microsoft User-Mode Driver Framework Install-v1.9-Vista.msu /quiet /norestart".
WudfUpdate: Waiting for update to terminate.
WudfUpdate: Update process returned 22.
WudfUpdate: update returned error 0x16 - error(22) The device does not recognize the command.
WudfUpdate: For additional information please look at the log files %windir%\windowsupdate.log and %windir%\Logs\CBS\CBS.log
WudfUpdate: Cleaning up update.
WudfUpdate: Error updating UMDF - error(22) The device does not recognize the command. Aborting installation.

이 시나리오에서는 UMDF 런타임의 디스크 내 버전이 공동 설치 관리자 버전보다 이전 버전이었습니다. 그러나 이 경우 업데이트에 실패했습니다. 공동 설치 관리자는 오류 원인에 대한 자세한 정보를 찾을 수 있는 추가 로그 파일을 가리킵니다.