본문 바로가기

Programming/MFC

DDK 설치 및 Visual Studio 에서 컴파일하기

출처 가보기전엔 죽지마라 | 임씨
원문 http://blog.naver.com/sweetacid/10009408176


DDK (Device Driver Development Kit)는  
www.microsoft.com/hwdev 에서 무료로 다운로드 받을 수 있다. 예전에는 인터넷으로 다운로드가 가능했다가 한동안 25$ 정도의 배송료를 받고 시디로만 배송해줬는데 최근들어 DDK를 구하려고 봤더니 MS에서 DDK2003을 다운로드 할 수 있게 해주고 있더라.. DDK2003에는 DDK2000, XP , 2003 sp1 이 동봉되어 있으며 이를 설치하여 2000 빌드를 이용할 것이다.


vc++ 6.0에서는 2000빌드까지 가능하고 xp 빌드는 안된다고 하는데, 예전기억으로 xp ddk 를 설치해서도 무리없이 사용했던 기억이 난다.. 암튼.. 구관이 명관이라고 2000 빌드를 사용하기로 했다.


DDK를 설치하고 Driver Studio v3.1 (softice 4.3.1)을 설치하였다. 드라이버 스튜디오 같은 경우는

별다른 설정없이 일반적인 응용프로그램 까는 것과 동일하다.


DDK를 설치하고 에디터로 작업하여 드라이버를 빌드 할 수 있으나, 보다 편리한 작업환경을 위해

VC++ 6.0 빌드 환경을 구축하기로 하였다.


각각의 작업에 대한 의문점은 차차 알아보기로 하고 일단 환경을 먼저 구축하였다.


1 .DDK 인스톨이 끝나면 시작메뉴에서 Development Kits -> Windows 2000 DDK 0 -> Checked    Build Environment Console 창에서 build -cz를 실행한다.


2. VC에서 win32 application -> empty project를 생성하고 project setting을 한다. (alt + f7)


3. <<c/c++ tab>>

    [General Category]

    Debug info : Debug 모드는 (Program Database) Release 모드는 (None) 으로 설정.

    Optimizations : Debug 모드는 (Disable) Release 모드는 (Default) 로 각각 설정한다.


    [C++ Language Category]

    Enable exception handling 체크해제

   

    [Code Generation Category]

    Calling convetion : __stdcall 로 변경

   

    [Preprocessor category]

    Preprocessor definitions:

     (debug)CONDITION_HANDLING=1,DBG=1,DEVL=1,DRIVER,FPO=0,NDEBUG,NT_INST=0,NT_UP=1,RDRDBG,SRVDBG,
STD_CALL,WIN32,WIN32=100,WIN32_LEAN_AND_MEAN=1,WINNT=1,WINVER=0x0501,_DEBUG,_DLL=1,_IDWBUILD,
_MBCS,_NT1X_=100,_WIN32_IE=0x0600,_WIN32_WINNT=0x0501,_WINDOWS,_X86_=1,i386=1
   

     (release)

      Preprocessor definitions: CONDITION_HANDLING=1,DBG=0,DEVL=1,DRIVER,FPO=1,NDEBUG,NT_INST=0,NT_UP=1,
STD_CALL,WIN32,WIN32=100,WIN32_LEAN_AND_MEAN=1,WINNT=1,WINVER=0x0501,_DLL=1,_IDWBUILD,
_MBCS,_NT1X_=100,_WIN32_IE=0x0600,_WIN32_WINNT=0x0501,_WINDOWS,_X86_=1,i386=1


     Additional include directories: C:\WINDDK\2600\inc\w2k,C:\WINDDK\2600\inc\ddk\w2k,C:\WINDDK\2600
\inc\ddk\wdm\w2k,C:\WINDDK\2600\inc\crt

     Project options: /GZ 옵션 제거( /Gz가 아니라 /GZ 임)


    <<Link tab>>

    [General Category]

    Output file name : 확장자를 .sys로 변경한다.

   

    [Customize Category]

    Link incrementally 체크 해제


    [Input Category]

    Object/lubrary modules : ntoskrnl.lib hal.lib ntdll.lib

    (다른 문서에서는 wdm.lib만 포함된 것도 있음)

    Ignore all default libraries 체크

    Additional library path : DDK가 설치된 디렉토리\버전넘버\lib\w2k\i386

    (ex: c:\WINDDK\2600\lib\w2k\i386)

   

    [Output Category]

    Base Address : 0x10000

    Entry-point symbol : DriverEntry (DriverEntry@8도 무방)

   

    [Project Option]

    /subsystem:windows 옵션 제거, -driver -subsytem:NATIVE,5.00 옵션 추가

    (/subsystem:native 로 대체 가능)

   


마지막으로 VC메뉴바에서 tools -> options -> directories 로 가서 include files 와 library를 설정한다.

[include files ]
c:\winddk\inc
c:\winddk\inc\ddk
이 두개가 순서대로 가장 위에 위치하도록 하면 된다.


[library files]
c:\winddk\lib\i386
이건 순서에 상관 없다.
위와 같이 설정을 하고 c, c++ 프로젝트를 컴파일 하는 것과 동일하게 사용하면 된다.

프로젝트가 위치한 폴더를 보면 빌드별로 debug와 release가 위치하게 되며 각각 checked build와 release build에 해당한다.

오랜만에 할려니까 기억도 가물가물 하고 아무것도 생각이 안나서 네이버지식즐에 의존하였다....