DDK (Device Driver Development Kit)는
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에 해당한다.
오랜만에 할려니까 기억도 가물가물 하고 아무것도 생각이 안나서 네이버지식즐에 의존하였다....
'Programming > MFC' 카테고리의 다른 글
win32 dll (0) | 2008.05.28 |
---|---|
LNK2019: "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" (0) | 2008.05.17 |
솔루션에 16384 파일이 (0) | 2008.03.24 |
Visual Studio .Net 단축키 모음 (0) | 2008.02.26 |
BSTR CString conversions (0) | 2008.01.17 |