'Driver로딩'에 해당되는 글 1건

  1. 2008.12.03 드라이버 로딩
Programming/Kernel / Driver2008. 12. 3. 15:24

드라이버를 개발할 때 필요한 유틸리티 중에 하나가 바로 InstDrv.exe 라는 녀석입니다. 개발된 드라이버를 테스트 해볼 때 INI파일 없이 간단하게 드라이버를 설치하고 실행해볼수 있도록 해주는 유틸입니다.

  

사용자 삽입 이미지

위의 경로에 전체경로를 적어주고 Install 버튼을 누르면 드라이버가 설치가 되고 Start를 누르면 드라이버가 로딩이 됩니다. (DriverEntry 호출되는 시점이 여기입니다. ^^)

참 편리한 프로그램인데 한가지 불편한 점은 전체경로를 적는 것입니다. 요즘 같은 환경에 누가 전체경로를 타이핑하고 있나~ 라는 생각에 이 프로그램에 파일다이얼로그를 추가해서 마우스 클릭으로 파일을 선택할수 있도록 해보자는 생각으로 아래처럼 만들어 봤습니다.
 

사용자 삽입 이미지

 

기능은 똑같구요 에디트 옆에 버튼을 하나 두어서 파일다이얼로그를 띄어서 드라이버 파일을 선택할수 있도록 하였습니다. ^^  원래 유틸은 파일 크기가 30KB인데 파일다이얼로그와 about 창이 추가되어서 44KB로 크기가 조금 늘었습니다. 이정도야 조금 편리해 지는데 따른 coast 치고는 싼편이죠.. 이것말고도 프로그램 개발하는데 들어간 시간이 있었지만요.. ㅋ

앞으로 파일 전체 경로를 쓰는 번거로움이 조금 사라지면 개발시간은 충분히 보상되리라 생각됩니다. (반나절 정도 걸렸네요 ^^)

 

드라이버 개발시에 유용한 Device Tree라는 도구도 있습니다. 현재 컴퓨터에 로딩되어 있는 드라이버들의 목록을 보여주는 것인데, DDK를 설치하면 그안에 포함되어 있습니다.


사용자 삽입 이미지
 

 

새로 만든 InstDriver.exe를 가지고 드라이버 로딩 테스트를 하니까 위의 Device Tree에서 잘 보입니다.

 

참고로 드라이버를 설치하고 실행시키는 방법을 코드로 작성시에는 SCManager(스컴매니져)를 이용하여 서비스로 드라이버를 실행시켜주는 방법을 사용하였습니다. OpenSCManager(), OpenService(), StartService(), ControlService(), DeleteService() 등의 함수를 사용하였습니다.

 

두개의 파일을 모두 올려봅니다.


Posted by skensita