VS2005로 Driver개발하기. (VS설정 방법)

VS2005로 Driver개발하기. (VS설정 방법)
-이 문서는 http://www.hollistech.com/Resources/ddkbuild/ddkbuild.htm 에 기반한 내용입니다.

1. DdkBuild를 다운받는다. (google.co.kr에서 검색하여 다운받도록 하자.)



화면 캡처: 2008-02-16, 오전 11:11
버전에 따라 '크기'가 다를지도 모르지만, 어쨌든 기본적으로 'ddkbuild.bat'파일이 포함되어 있다.

2. Vs(정확히는 VC)가 설치된 디렉터리에 ddkbuild.bat파일을 복사해 주도록 한다.



화면 캡처: 2008-02-16, 오전 11:13
위와 같이 복사해 주었다.

3. 윈도우에 환경변수를 설정해 주도록 한다. (reboot이 필요함.)



화면 캡처: 2008-02-16, 오전 11:15
본인은 XPBASE로 설정해 놓았다. (설정했다면, reboot을 하도록 하자.)
참고 -
For the W2K DDK the environment variable is W2KBASE, and the flag is -W2K.
For the XP DDK the environment variable is XPBASE, and the flag is -XP.
For the Windows 2003 Server  and W2K3SP1 DDK the environment variable is WNETBASE, and the flag is -WNET.
For the LDK (Longhorn Beta build 4051) the environment variable is WLHBASE and the flag is -WLH
시스템 등록정보는 '내 컴퓨터'의 '속성'을 보면 알 수 있다.

4. VC++의 Makefile Project를 생성하도록 하자.



화면 캡처: 2008-02-16, 오전 11:22
모두 알다시피, location은 '빈칸'이 있어서는 안 된다.

5. 다음의 화면 갈무리를 따라 설정을 set 해주도록 한다.



화면 캡처: 2008-02-16, 오전 11:26
Output 은 신경 쓰지 않도록 하자. (아무런 쓸모가 없다- .-;)
3번째 순서의 참고를 참조하도록 하자. (…. and the flag is -XP)
※ Release Configuration Settings 에서는 checked를 free로 바꿔주도록 하자.

6. 간단한 hellodriver를 작성하고(인터넷 찾아보면 간단히 나오므로, 여기서는 생략한다), 컴파일(F7) 해 보도록 하자.



화면 캡처: 2008-02-16, 오전 11:36
아무런 파일도 컴파일 되지 않았다. (0 files compiled - …)
왜일까? 좌측의 '솔루션 익스플로러'를 보면, 단지 HelloDriver.c 파일만 있을 뿐이다.
드라이버를 컴파일하기 위해서는 MAKEFILE과 SOURCES가 필요하다.

7. MAKEFILE과 SOURCES를 추가한 후, 컴파일 한 모습.



화면 캡처: 2008-02-16, 오전 11:40
MAKEFILE과 SOURCES은 확장자가 없는 파일이다. 또한 가능하다면, 파일명을 대문자로 주도록 하자.
(개인적인 경험으로는 파일명을 소문자로 해도 큰 문제는 없었다.)
한 개의 파일이 컴파일 되었다고 한다. (1 file compiled …)

8. 해당 디렉터리에 가서 보면, 컴파일 된 드라이버 파일(.sys)가 생성된 것을 확인할 수 있다.



화면 캡처: 2008-02-16, 오전 11:44
HelloWorld.sys 라는 드라이버 파일이 생성되었다.

9. Options ##자동 완성####################################################################



화면 캡처: 2008-02-16, 오전 11:46
VS 는 기본적으로 자동 완성을 지원한다는 것을 대부분의 사람들은 잘 알고 있을 것이다.
보통, 구조체 변수는 . Or ->를 입력하면, Field를 보여준다. 하지만, 자동완성이 안될 것이다.
위 화면 갈무리는 'pDriverObject->' 를 했는데, 자동 완성이 안되는 당황스러운 모습이다. ( '')a

10. 자동완성을 위해 Include Search Path를 등록해 주자.



화면 캡처: 2008-02-16, 오전 11:51
Project 메뉴 -> 'XXX Properties.. Alt+F7' -> NMake -> Include Search Path -> ddk, api를 search path에 등록한다.
(필요하다면, ddk, api이외의 디렉토리를 추가해도 된다.)

11. 자동완성이 되는 모습.


화면 캡처: 2008-02-16, 오전 11:54
된다!

12. Options ##PREFast#####################################################################



화면 캡처: 2008-02-16, 오전 11:58
Build 메뉴 -> Configuration Manager.. -> Active solution configuration()
위의 화면 갈무리를 따라서 생성하도록 하자.

13. PREFast를 사용하도록 하자.



화면 캡처: 2008-02-16, 오후 12:01
Configuration이 !Active(PreFast)인 것에 주의!
Build Command Line / Rebuild All Command Line을 위 화면 갈무리에 맞춰 변경하도록 한다.

14. PREFast를 적용한 결과.



화면 캡처: 2008-02-16, 오후 12:05
Output화면에 PREfast 어쩌고 하는 내용이 있다. 또한, PREfast Defect Log 다이얼로그 박스가 떠서 경고를 알려준다.
(근데, 이 녀석을 왜 쓰는 거지…-.-?;)

덧글

댓글 입력 영역