01. win32 App 타입으로 새로운 프로젝트를 생성
02. Project Setting
03. C/C++ Tab - General - Debug Info에서 Program Database로 설정한다.
04. C/C++ Tab - C++ Language에서 Enable exception handling에 체크를 없앤다.
05. C/C++ Tab - Code Ceneration에서 calling 방식을 __cdecl 에서 __stdcall로 변경해 준다.
06. C/C++ Tab - Preprocessor에서 기존에 있는 definition을 모두 지우고
DBG=1,_X86_,_WIN32_WINNT=0x500로 재 정의 해준다.
07. C/C++ Tab - Preprocessor - Additional include directory부분에 DDK include file이 있는 디렉토리를 지정해준다.
(예를 들어 필자의 경우 D:\WINDDK\2600\inc\ddk\wxp와 D:\WINDDK \2600\inc\wxp으로 지정하였다. )
08. C/C++ Tab - project option에서 /GZ 옵션을 제거한다.
(주의 : -Gz와 /GZ는 다른 옵션이다!)
09. Link Tab - Customize에서 Link incrementally의 체크를 없앤다.
10. Link Tab - General에서 Output file name의 확장자를 .exe에서 .sys로 바꿔준다.
11. Link Tab - Input에서 object/library module부분에 있는 라이브러리 파일 리스트를 모두 지우고
int64.lib ntoskrnl.lib hal.lib ntdll.lib로 바꿔준다. 그리고 ignore all default libraries의 체크박스를 체크한다.
12. Lint Tab - Input에서 Additional library path에 DDK 라이브러리 파일들이 위치한 디렉토리를 지정한다.
13. Link Tab - output에서 Base address, Entry-point symbol값을 각각 0x10000, DriverEntry로 지정한다.
14. Link Tab - project option에서 /subsystem:windows 옵션을 제거하고 -driver -subsystem: NATIVE,5.00 옵션을 추가한다.
위와 같이 셋팅을 하면 일단 디바이스 드라이버의 소스를 빌드할 수 있는 기본적인 셋팅은 끝납니다.
여기에 추가적으로 역시 프로젝트 셋팅 메뉴의 Custom Build Tab에서
Commands부분에 copy $(TargetPath) $(SystemRoot)\System32\Drivers\*.*
라고 적어주고
outputs부분에 $(SystemRoot)\System32\Drivers\$(TargetName)
라고 적어줍니다.
이것은 컴파일 및 빌드가 성공적으로 이루어 지면 자동으로 윈도우 디렉토리에 있는 System32\drivers디렉토리에
해당 .sys파일을 카피해주는 역활을 합니다.
나중에 다시 설명하겠지만 디바이스 드라이버 파일을 동작시키기 위해서는 어차피 위와 같은작업을 해줘야 하므로 이렇게 해놓는 것이 편합니다.
'개발언어 > c++' 카테고리의 다른 글
현재 실행되는 모든 프로세스의 동작 상태 체크하기 (0) | 2016.07.18 |
---|---|
템플릿 배열 사용하기 (0) | 2016.07.18 |
CString Format 문으로 원화 또는 달러 등과 같은 통화 단위로 표기 하기 (0) | 2016.07.18 |
가변적으로 부동솟수점 표현하기(소수점 자리수를 입력받은 만큼 보여주기) (0) | 2016.07.18 |
프로세스간의 간단한 통신 (0) | 2016.07.18 |