윈도우 8.1 64비트, 윈도우 10 인사이더 프리뷰 64비트 이상의 운영체제에서 발생하는 현상입니다. ( 윈도우 7 SP1 32비트 및 64비트 이하는 해당 현상이 발생하지 않음 )
inf를 통해서 SetupDiCallClassInstaller 설치 된 드라이버가 %systemroot%\system32\drivers 에 설치가 되는데 이 파일을 새로운 드라이버 파일 ( sys ) 로 교체하고 재부팅을 하게 되면 새로운 드라이버가 메모리에 올라올 것이라고 생각했으나 실제로는 이전의 드라이버 파일로 자동 복구 되는 현상을 발견하였습니다.
이렇게 되는 이유는 PNP 드라이버 설치 시 윈도우 비스타 이상부터 드라이버 패키지를 설치 시 드라이버 스토어라는 저장 공간 ( %systemroot%\System32\DriverStore\FileRepository ) 에 드라이버 패키지 파일들이 저장되게 되는데 해당 경로에 파일을 읽어와서 원본 파일로 복구하게 됩니다.
아무래도 새로운 드라이버 보호 시스템이 윈도우 8.1에서 추가 된 것으로 보입니다.
만약 PNP 드라이버 파일만 교체하는 방식으로 드라이버를 업데이트하는 방식을 사용하려면 추가적인 코드가 필요할꺼 같네요. 참고로 DriverPackageUninstall 함수를 사용하면 드라이버 스토어에서 드라이버 패키지만 삭제되는게 아니라 드라이버가 언인스톨되므로 이런식으로 하면 안됩니다.
드라이버 스토어에 대한 자세한 참고 링크
https://msdn.microsoft.com/en-us/library/windows/hardware/ff544868(v=vs.85).aspx
http://www.verboon.info/2010/12/inside-the-windows-7-driver-store/
DIFx ( 드라이버 인스톨 프레임 워크 ) 를 통한 드라이버 패키지를 드라이버 스토어에 설치하는 함수에 대한 참고 링크
https://msdn.microsoft.com/en-us/library/windows/hardware/ff543637(v=vs.85).aspx
'인터넷/IT > 프로그래밍' 카테고리의 다른 글
대칭형 멀티프로세싱 (SMP)와 비대칭형 멀티프로세싱 (ASMP) 간에 차이점 (0) | 2015.06.21 |
---|---|
무료 IT 및 프로그래밍 E-Book 다운로드 사이트 (0) | 2015.06.20 |
%SystemRoot% 와 같은 Expand 문자열을 실제 경로로 변경하는 코드 (0) | 2015.06.19 |
REG_EXPAND_SZ 타입에 대해서 (0) | 2015.06.18 |
error LNK2019: unresolved external symbol __imp__RegGetValueW@28 referenced in function 오류 해결방안 (0) | 2015.06.18 |
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.