본문 바로가기

My Study/Programming&Theory

Visual Studio 2010 ddk 연동 (Window7)

ㅜㅜ사람들이 열심히 작성해놓은 문서들도 보면서 해결하려고 쌩쇼를 다 해봤지만..ㅠ 
MAKEFILE이 잘못되어.. 계속 컴파일 오류가 났었습니다.. -_-;; 어이가 없군요. 이것때문에 하루를 날린듯..ㅠ
저도 그냥 정리를 해보겠습니다.
==============================================================
보통 Visual Studio를 사용하지 않고 빌드할때는 WDK를 설치 후 cmd창에서 build를 사용해 .sys를 만들게 됩니다.
하지만 Visual Studio와 연동을 해놓으면 더욱 빠르고 편리하게 개발을 할 수 있습니다.

가장 먼저 해야될 일은 WDK를 설치하는 일이겠지요.
위 링크로 가셔서 다운받으면 됩니다.

다운받고 설치를 하시면 디폴트로 C:\WinDDK\7600.16385.1 경로에 설치가 되있을 것입니다.

그리고 또 필요한 파일이 있습니다.
MAKEFILE
SOURCES
ddkbuild.bat
세개의 파일이 필요합니다.
첨부 파일로 올려드렸습니다.
전.. 여기서도 삽질을 했는데 ddibuild.bat파일 버전을 낮을 것을 쓰고 있어서 win7에서 안돌아갔던 것입니다.
대부분 사람이들이 인터넷에 올린 것을 보니 Windows XP에서 했던 것만 올려놔서 그 .bat파일을 그대로 써버렸죠.
그리고 bat파일을 메모장이나 에디터로 열어서 수정해될 부분이 한군대 있습니다.


14번째 줄을 보시면 저기에 위 그림처럼 수정시켜주면 됩니다. 전 Windows7이라서 WIN7BASE를 했습니다.
다른 버전이라면 아래 링크가셔서 확인 후 자기 OS에 맞는 것으로 변경해주면 됩니다.

Windows7일 경우..

이제 그렇게 수정시키고 저장하셨으면 해당 파일을 VS설치 한 폴더에 넣어주시면 됩니다.
전 VS2010이므로 경로가 다음과 같이 됩니다.
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
위 경로 ddkbuild.bat파일을 넣어줍니다.

그리고 VS를 켜줍니다.


이제 새프로젝트를 만들어줍니다.

메이크파일로 만들어 주시고 이름은 아무거나 해주시면됩니다.
그리고 위치(경로)는 공백이 없도록 만들어주세요. 보통 디폴트로 있던 경로로 해버리면 공백이 있을 것입니다.
그러므로 위와 같이 공백이 없도록 다른 폴더를 지정해주세요.

그리고 확인을 눌러서 프로젝트를 만듭니다.

다음을 누르다보면 다음과 같은 화면이 나오는데 아래와 같이 셋팅하고 넘깁니다.





이것도 -WIN7 부분을 자기 OS에 맞는 것으로 변경해주시면 됩니다. Windows7은 위와 같이..


그리고 소스파일을 하나 만드시고 샘플 코드를 작성합니다.

그 후 VS2008까지는 VS의 도구 -> 옵션에서 VC++디렉터리를 들어갔지만
VS2010부터는 생성되는 모든 프로젝트 각각에 VC++디렉터리가 존재합니다.
그러므로 프로젝트 속성으로 들어가주세요.




위와 같이 포함 디렉터리와 라이브러리 디렉터리에 각각 경로에 있는 폴더를 추가시켜줍니다.
그러면 VS에서 ddk사용되는 구조체나 자료형을 인식하게 됩니다.

이제 마지막 작업이 남았는데 아까 위에 첨부파일에 있던 MAKEFILE과 SOURCES파일을 
소스코드 있는 폴더로 이동시켜주세요. ( 저한텐 driver.c 파일 있는 곳.. )

그리고 MAKEFILE은 그대로 놔두시고 SOURCES파일을 열어줍니다.

이렇게 4개가 있는데 가장 위에 TARGETNAME은 생성될 .sys이름입니다. 
그리고 4번째에 있는 SOURCES를 자기가 만든 소스파일 이름으로 바꿔주세요.

그리고 저장~!

이제 모든 준비는 끝났습니다.
F7을 눌러 컴파일을 해보겠습니다.

그러면 성공이 됬을 탠데 .sys생긴 위치는
프로젝트 폴더에서 objchk_win7_x86\i386로 가시면 .sys파일이 있을 것입니다. ( Debug 모드 )

'My Study > Programming&Theory' 카테고리의 다른 글

Driver Load, Unload  (0) 2010.10.17
Intel CPU의 영리함??  (5) 2010.10.09
Anti Dll Hijacking  (4) 2010.09.25
Create BSOD in usermode  (4) 2010.09.22
둘 중 큰수 찾는 정의 된 메크로  (0) 2010.09.01