Media Log

[Windows]에 해당되는 글 24

  1. h Windows Runtime 이야기 (1) 2014.12.05
  2. h 개발자를 위한 윈도우즈용 소프트웨어 총 모음. 2013.12.22
  3. h 윈도우즈 PE 파일의 구조 2013.03.24
  4. h 찰스 펫졸드는 죽지 않았다. Programming Windows 6판 2012.04.24
  5. h 쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 2012.04.06
  6. h SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (2) 2012.01.16
  7. h 위대한 해커들의 말말말 - 제프리 리처 2012.01.16
  8. h GetLastError 함수 사용의 흔한 실수 2012.01.13
  9. h NTFS에서 Sparse 파일을 만들기 (3) 2012.01.03
  10. h 16TB 크기의 파일을 만들어내려면 얼마나 오래 걸릴까? 2012.01.01
  11. h 레지스트리의 volatile 옵션 2011.09.27
  12. h 탭기능을 지원하는 무료 윈도탐색기 프로그램, Explorer++ (1) 2011.09.22
  13. h 알아두면 유용한 MoveFileEx 함수의 펜딩 옵션 2011.07.17
  14. h 윈도우 드라이버를 만들 때 알아야 할 기초적인 내용들 (2) 2011.05.23
  15. h Windows 시스템 프로그래밍 4판 -Johnson M. Hart 2011.03.06
  16. h PAGED_CODE 매크로 (6) 2011.02.27
  17. h 디렉터리의 읽기 전용 속성 (4) 2011.02.20
  18. h 프로세스 모니터 사용법 (6) 2011.01.14
  19. h 파일 조작 테스트를 위한 훌륭한 도구 소개 (4) 2010.12.27
  20. h 하위 디렉터리의 파일이 변경 되었는지 감지하는 법 (6) 2010.12.20
  21. h WinApi의 reserved 인자는 뭐하는 용도일까 2010.12.09
  22. h Cancel-Safe Queue를 이용하여 디바이스 드라이버에서 I/O를 취소하기 (2) 2010.10.25
  23. h Windows Internals 5th 한글판 출간 (2) 2010.07.13
  24. h Windows 시스템 실행파일의 구조와 원리 -이호동 저 2010.02.13

Windows Runtime 이야기

2014. 12. 5. 02:40 | Programming

아래 페이지로 포스팅 이전했습니다.

https://jeho.page/essay/2014/12/05/windows-runtime.html

 

Windows 유니버셜 앱 개발 경험담

꽤 오랫동안 윈도 프로그래밍에서 떨어져 살다가 윈도폰은 어떨지 궁금해서 문득 윈도폰 하나를 중고로 구입해본 적이 있었다. 그게 NT 커널이 올라가있는 윈도폰 8.0 이었다. 세컨드 폰으로 장

jeho.page

 

'Programming' 카테고리의 다른 글

TypeScript, 타입에 대한 고찰  (0) 2015.05.05
시니어 프로그래머  (2) 2015.02.03
Windows Runtime 이야기  (1) 2014.12.05
눈물나는 그래프  (2) 2014.08.25
방준영의 블로그  (0) 2014.06.06
프로그래머의 5가지 성향  (0) 2014.03.15
  1. 송병학 at 2014.12.05 08:57 [edit/del]

    서버 개발하시면서 윈도우폰까지 하시고 부지런하시네요. 좋은 글 감사합니다 ^^

    Reply

submit

Scott Hanselman 이라는 사람이 오래전 부터 그의 블로그에 좋은 윈도용 소프트웨어들을 소개해주어 유용하게 읽곤 했었는데, 오늘은 올린 글은 입이 떡 벌어질 만큼 특별히 잘 정리되어 있어서 소개를 하고 싶다.

나는 윈도를 떠나 산지 시간이 좀 흘러서 새로나온 (끝내줘보이는) 도구도 꽤나 보였고, 약간의 향수(?) 마저 느꼈다.

윈도우즈 프로그래머 혹은 윈도를 사용하는 프로그래머라면 꼭 읽어보고, 모르는 것들이 있었다면 하나씩 설치해서 연습해보면 세상 사는 게 좀 더 편해질 것이라 확신한다.

http://www.hanselman.com/blog/ScottHanselmans2014UltimateDeveloperAndPowerUsersToolListForWindows.aspx

submit


Portable Executable Structure이미지 출처 https://code.google.com/p/corkami/wiki/PE101

엄청나게 잘 정리된 그림을 발견했다. 아름답지 아니한가.

submit

한 때 윈도우 프로그래밍의 교과서로 불리우던 찰스 펫졸드의 Programming Windows 가 6판이 되어 돌아온다. 추가되는 내용은 윈도8의 메트로 앱개발.


아직 정식 책이 나오려면 많이 기다려야 하기 때문에 매트로앱에 대한 내용만을 담아서 전자책으로 10$에 파는 이벤트를 진행 한다고 한다. 5월 17일 ~ 5월 31일 사이에만 살 수 있다.


더 자세한 내용은 그의 블로그에서.

http://www.charlespetzold.com/blog/2012/04/2-4-6-8-10.html

submit

submit
  1. win32API공부학생 at 2013.12.31 20:56 [edit/del]

    SetFilePointer함수의 리턴값을 잘못사용하고 있었네요ㅠㅜ 좋은정보감사합니다!

    Reply
  2. Kim at 2021.01.26 10:50 [edit/del]

    도움이 되엇습니다. 감사합니다.

    Reply

submit

윈도우즈를 잘 이해하기 위해서는 레지스트리와 친해져야 한다. - Jeffery RichterWindows via C/C++ 중에서

한 때 이 글을 읽고 레지스트리를 다루는 책을 도서관에서 몽땅 빌려서 읽었던 적이 있다. 어느 정도 숙달이 되어 레지스트리 에디터를 열면 빛의 속도로 트리를 탐색해 나갈 수 있었는데, 작년에 회사를 그만두고 2달여를 집에서 쉬다가 다시 새로운 회사에 들어갔을 때 나의 이 능력이 마법처럼 사라져 버렸다는 것을 깨닫게 되었다. 아쉬운 일이다.

submit

submit
  1. Favicon of http://blog.spowner.com BlogIcon spowner at 2012.01.06 13:29 [edit/del]

    유용한 정보 감사합니다

    Reply
  2. gcd at 2012.02.22 06:52 [edit/del]

    계속해서 좋은 글 감사합니다. 재미있게 읽고 있습니다.
    다른 포스트까지 읽으면서 느낀 점이지만, 구조체 정렬까지 고려해서 reserved 인수를 때려박는 MS가, 어째서 GetCompressedFileSize() 인터페이스를 왜 GetFileSize()처럼 해놨을까요? -_-;
    Ex 붙은 버전도 넣어주든가(..)

    Reply

submit
NTFS에서 만들 수 있는 단일 파일의 가장 큰 크기는? 16테라. 빙고.
그럼 NTFS 상에서 16 테라 바이트의 파일을 만들기 위해서는 얼마나 시간이 걸릴까?

답은 여기에 있다.

16TB 라는 숫자의 이미지가 머리 속에 잘 안그려져서 내 추정보다 훨씬 큰 기간이 나와버렸는데, 가만히 계산해보니 그렇게 놀라운 숫자도 아니다. 16TB라는 숫자를 너무 얕봤나보다.

submit

submit
윈도를 쓰면서 불편한 점 중 하나는 일을 하다보면 어느새 10개 20개씩 떠있는 윈도 탐새끼이다. 물론 GNOME의 노틸러스나 KDE의 이상한 탐색기보다는 너무 너무 잘 만들었다고 생각하지만. 

어쨌거나 얼마전에 오픈소스 뉴스를 보다가 Explorer++ 이라는 프로젝트를 발견했다.

http://www.explorerplusplus.com/software/images/screenshots/screenshot_2.png


토탈 커맨더라는 이 분야 최고의(?) 프로그램이 있지만 Explorer++는 오픈소스이고 완전히 자유롭게 쓸 수 있다는 점에서 차별점이 있다.
몇 일간 써봤는데, 그럭저럭 맘에 들어서(맘에 안드는 점들도 많지만) 이제는 Windows + E 키를 Explorer++로 매핑시켜 놓고 잘 사용하고 있다.

좋은 점
  • 탭 기능을 지원한다. 물론 껐다켜면 탭들이 모두 그대로 복원되므로 자주 사용하는 위치들을 탭으로 몽땅 띄워놓고 사용하면 된다.
  • 여러 인스턴스가 뜨지 않도록 할 수 있다. 프로그램을 한번 더 실행시켜도 새 탭만 하나 더 생긴다. 내가 가장 바랐던 기능이다.
  • 폴더 사이즈도 표시할 수 있다. NTFS는 폴더 크기에 대한 정보를 가지고 있지 않으므로 Explorer++이 뒤에서 열심히 돌면서 사이즈를 구해낸다. 나는 이 기능은 사용하지 않는다.
  • 파일 1개 짜리 프로그램이다. 나는 인스톨러로 설치안하고 바로 사용할 수 있는 이런 프로그램들이 너무 좋다.
  • 오픈 소스이다.

나쁜 점

  • 잘 뒤진다.
  • 안 예쁘다. 토탈 커맨더보다는 조금 더 나은 것 같기도 하지만.

근데 난 작명할 때 ++ 이란 말 좀 쓰지 말았으면 좋겠다. 발음하기도 어려운데다가 정말 촌스럽지 않은가?

  1. 예상영 at 2013.05.17 12:37 [edit/del]

    Windows + E 로 연결하는 것은 AutoHotKey 같은 것을 쓰신 건가요? 아니면 다른 프로그램 설치 없이 가능할까요?

    Reply

submit

submit
  1. 아저씨 at 2011.05.25 00:14 [edit/del]

    좋은 글 감사합니다.

    Reply
  2. 오곡 at 2013.07.09 18:09 [edit/del]

    WDM 의 핵심들 잘배우고 갑니다~!

    Reply

submit
Windows 시스템 프로그래밍 - 9점
Johnson M.Hart 지음, 류광 옮김/정보문화사

오래전부터 이 책이 좋은 책이라는 이야기를 많이 들었었는데, 여태까지 못보고 있다가 이번에 4판이 번역되어 나온 김에 하나 구입해서 며칠동안 재미있게 읽었다.

저자는 이 책을 리차드 스티븐스의 유명한 고전인 APUE에 대응하는 윈도우 버전이라고 말했지만 책을 읽는 내내 자꾸 비슷한 주제를 다루는 제프리 리처의 Windows via C/C++과 비교가 되는 것은 어쩔수가 없었다.

책 중간의 동기화 오브젝트를 다루는 부분에서는 이 책이 Windows via C/C++보다 훨씬 구체적이고 많은 실례들을 들어 설명을 하고 있으며(제프리보다 재밌게 설명하는 것은 아니지만) 그 이후에 나오는 소켓과 파이프, 윈도우즈 서비스 그리고 오브젝트 보안에 대한 내용들은 Windows via C/C++에서는 다루지 않는 내용이다.
맨 마지막 챕터에서 보안 디스크립터로 ACL을 조작하는 내용은 제프리의 책뿐 아니라 다른 책들에서도 쉽게 다루지 않는 보기 힘든 내용이다. 윈도의 파일들을 리눅스 스타일의 권한(rwx--로 관리되는)처럼 관리할 수 있게 하는 재미있고 실용적인 예제와 함께해서 더 좋았다.

간간히 유닉스 시스템과 비교해서 설명해주는 저자의 코멘트들 또한 이 책의 큰 장점이다.
부록에서는 윈도 API의 유닉스와 CRT 대안 함수들을 표로서 제공해주기도 한다.

제프리리처 책의 모든 챕터를 이제는 2-3번씩 읽어서 윈도우 시스템 프로그래밍에 대해 꽤 많이 알게 되었다고 생각했는데, 이 책을 읽으면서 아직도 많은 부분을 제대로 이해 못하고 있구나 하고 느꼈다. 속상한 일이다.

책에서 옮긴 단어중 신호, 일꾼쓰레드, 스택 위넘침 등은 약간 부자연스럽긴 하지만 내용을 이해하는데는 아무런 문제가 없었다. 하지만 딱 한가지 단어가 나를 힘들게 했는데 그것은 '회부' 라는 단어였다. 가상 메모리를 커밋한다고 할 때 바로 그 커밋을 뜻하는데, 잘 매치가 되지 않아서 머리 속으로 계속 Replace를 했다.

부록에는 여러가지 I/O 방식들에 대한 성능 테스트가 나와 있다.
나는 블로그나 잡지 같은 곳에서 프로그램 성능 테스트를 해봤더니 결과가 어떻더라라고 하면 의심을 하고 잘 믿지 않는 편인데, 그것은 많은 사람들이 페이지 폴트나 캐시 등의 잡음을 고려하지 않고 테스트를 하기 때문이고, 또 그런 것들을 미리 알고 있다 하더라도 완벽히 잡음을 제거하기가 힘들기 때문이다.

책을 읽는 동안 이 책의 저자가 상당히 부지런하고 꼼꼼한 사람이라는 느낌을 받아서 벤치마크 결과에 대해 믿음도 가고 기대를 많이 하고 있었는데, 이 저자 역시 실수를 범해 누군가가 이미 벤치마크의 오류를 지적했었나보다.
아래 페이지에서 저자의 코멘트를 볼 수 있다.
http://jmhartsoftware.com/comments_updates.html
램이 1.5기가가 달린 윈도 XP가 페이지 폴트의 영향 때문에 성능이 몹시 떨어져서 나왔는데,  나중에 다시 테스트해서 올리겠다고 한다. 이런, XP하고 비스타의 I/O 성능 비교가 가장 궁금했는데.
어쨌거나 이것들을 다시 테스트 해보는 일은 엄청 귀찮을텐데 5판을 낼 때쯤에나 다시 해보지 않을까 걱정이 되기도 한다.

제프리 리처의 책이 더 이상 새 버전이 안나오는 것은 정말 아쉬운 일인데, 이 책은 5판도 6판도 계속 해서 쓰여졌으면 좋겠다.

submit

PAGED_CODE 매크로

2011. 2. 27. 19:09 | Programming

포스팅 이전

https://jeho.page/essay/2011/02/27/PAGED_CODE-%EB%A7%A4%ED%81%AC%EB%A1%9C.html

 

PAGED_CODE 매크로

PAGED_CODE 는 다음과 같이 생긴 간단한 매크로이다.

jeho.page

 

'Programming' 카테고리의 다른 글

_countof 매크로  (0) 2011.03.15
FIELD_OFFSET 매크로  (1) 2011.03.01
PAGED_CODE 매크로  (6) 2011.02.27
디렉터리의 읽기 전용 속성  (4) 2011.02.20
알쏭달쏭한 typedef  (9) 2011.01.04
하위 디렉터리의 파일이 변경 되었는지 감지하는 법  (6) 2010.12.20
  1. 오곡 at 2013.07.09 17:40 [edit/del]

    잘배우고 갑니다~!

    Reply
  2. 없다캐라 at 2014.02.11 17:50 [edit/del]

    저두 잘 배우고 갑니다. prama alloc 관련 검색을 해서 알게되어 왔는데 다른 글보다 이해하기 쉬웠습니다.

    Reply
  3. 알 수 없는 사용자 at 2014.12.05 14:53 [edit/del]

    안녕하세요,
    좋은 글 잘 읽고 있습니다. 감사합니당~
    그런데, 이해가 안돼서 질문드려요;;
    PAGED_CODE() 매크로를 써서 IRQL이 DISPATCH_LEVEL 이상이면 해당 코드가 페이지되어있든 안되어있든, 그리고 페이징 가능한 코드로 만들어져 있든 말든 무조건 크래시를 발생시키잖아요?(이것도 블루스크린으로 뜨나요?)
    그럼 메모리 절약을 위해서 해당 함수를 페이징 가능한 코드로 만들었다고 했을 때, 크래시가 일어나지 않고 다시 메모리로 로드 되도록 하려면 어떻게 해야하나요?
    현재, Driver Unload때만 섹션을 PAGE로 할당하고 나머지는 디폴트로(모두 Non Paged Area에 들어가게 되죠?) 만들고 돌려보니, NON_PAGED_AREA에서 PAGING됐다고 블루스크린이 뜹니다...ㅜ_ㅡ
    설마, 헤더파일과 소스파일을 여러개로 나눠서 작업하는거랑 관련이 있나요? 디바이스 드라이버는 전혀 생각지도 못한 부분에서 문제가 터지는 경우가 많아서 혹시나 싶어서 여쭤봅니다...;

    Reply
    • Favicon of https://benjaminlog.tistory.com BlogIcon 김재호 at 2014.12.05 15:37 신고 [edit/del]

      PAGED_CODE() 매크로를 써서 IRQL이 DISPATCH_LEVEL 이상이면 해당 코드가 페이지되어있든 안되어있든, 그리고 페이징 가능한 코드로 만들어져 있든 말든 무조건 크래시를 발생시키잖아요?(이것도 블루스크린으로 뜨나요?)

      -> 네 블루스크린이 발생합니다.

      그럼 메모리 절약을 위해서 해당 함수를 페이징 가능한 코드로 만들었다고 했을 때, 크래시가 일어나지 않고 다시 메모리로 로드 되도록 하려면 어떻게 해야하나요?

      질문을 잘 이해하지 못하겠지만, 원글에 써있는대로 함수를 페이징 가능한 코드로 만들었다면 해당 함수가 IRQL 이 디스패치 레벨보다 낮을 때만 불려야 합니다.
      pagefault in non paged area 라는 에러는 드라이버를 작성하면서 가장 흔히 볼수있는 오류이며, 위 규칙만 잘 지켰다고 해결되는 것은 아닐 껍니다. 동적으로 할당하는 메모리들을 페이지드 풀에 할당했는지도 다 꼼꼼하게 살펴봐야하는데, dump파일을 windbg 로 잘 분석해보시면 어디가 문제인지 찾으실 수 있을 겁니다.

    • 알 수 없는 사용자 at 2014.12.05 16:54 [edit/del]

      동적 메모리 할당할 때는 분명 NonPagedPool로 할당했는데... 아직 원인을 알 수 없네요. 메모리 할당부분을 주석처리 했더니 크래시가 나지 않는걸 보니 분명 메모리 할당부분에 문제가 있는것 같긴 한데, 아직 초보라 분석하려면 오래 걸릴것 같네요;;
      아무튼 답변 감사합니다. :)

  4. 고현정 at 2021.03.31 21:55 [edit/del]

    와 정말 너무 도움되는 글이었습니다.
    진짜 너무너무 감사드립니다.!!!
    드라이버 관련 글 하나씩 다 읽어볼거에요! 너무 유익합니다.ㅎㅎ

    Reply

submit
  1. 윈도우개발자 at 2011.02.20 15:37 [edit/del]

    오 그렇군요!
    말씀하신 것처럼 잘못 코딩한 적은 없었지만, 앞으로 잘 알고 있어야겠네요 ^_^;

    Reply
  2. 박태환 at 2011.02.23 13:53 [edit/del]

    재호씨 잘 지내시죠??블러그 잘 보고 갑니다. 가끔 놀러올께요^^

    Reply

submit
  1. Favicon of http://nyolong.egloos.com BlogIcon 뇨릉 at 2011.01.19 14:04 [edit/del]

    얼마전에 FileMon을 받으려더 Process Monitor와 통합이 되어서 저도 이툴 한번 써봤었는데요. ㅋ
    전 간단히 파일모니터하는데만 썼었는데 참 괜찮은 툴 같습니다 ^^

    Reply
    • Favicon of https://benjaminlog.tistory.com BlogIcon 김재호 at 2011.01.19 18:41 신고 [edit/del]

      네, 파일 모니터 할때 가장 많이 쓰죠. 정말 좋아요.
      FileMon은 소스 공개했는데 이거는 공개 안하더라고요. 앞으로도 안할 듯.

  2. BlogIcon tack at 2011.01.24 16:08 [edit/del]

    전 크롬을 사용중인데 이상하게 Highlight 기능 역시... 아래 그림이 안나오네요 :(
    헌데 Explorer.exe에 대한 내용이 원래 이렇게 많나요? ㅎㅎ

    Reply
    • Favicon of https://benjaminlog.tistory.com BlogIcon 김재호 at 2011.01.24 17:14 신고 [edit/del]

      에 정말요? 저도 크롬쓰는데 잘 나오는데.
      다른 장소에서도 잘 나오고요. 용량이 조금 크긴 한데 다른 문제가 있는건지 모르겠네요.

  3. Favicon of http://cchelf.tistory.com BlogIcon 휘릿즈 at 2012.06.26 20:18 [edit/del]

    잘보고갑니다^^

    Reply
  4. ㄱㄳㄳ at 2014.12.17 17:31 [edit/del]

    ㄳㄳ

    Reply

submit
  1. 재호님 팬 at 2010.12.29 12:14 [edit/del]

    재호님~ 파일시스템에 관심이 많으신거 같네요!
    저도 파일시스템에 관심있어요 ^^
    이병오님의 "윈도우 파일시스템" 책과 정명수님의 커널관련글 읽으면서 공부하고 있는데 좋은거 같습니다. 재호님도 화이팅! ^^

    Reply
    • Favicon of https://benjaminlog.tistory.com BlogIcon 김재호 at 2010.12.29 12:37 신고 [edit/del]

      윈도 파일시스템 책은 저도 가지고 있는데 정명수님 커널 관련글은 잘 모르겠어요. 혹시 글들 정리되어 있는 URL이 있으면 좀 가르쳐주세요.^^

  2. 재호님 팬 at 2010.12.29 20:19 [edit/del]

    이런 제가 센스가 없어서 ㅋㅋ
    www.swblog.net 입니다. 저도 마이크로소프트 잡지를 통해서 알게 되었구요~ 이분 글로 공부하고 있어요 ^^

    Reply

submit
  1. 재호님 팬 at 2010.12.29 12:11 [edit/del]

    재호님~ 소스코드 폰트색상이 굉장히 예쁘네요
    폰트 rgb 값좀 알려주시면 안되나요?

    Reply
  2. 오곡 at 2012.12.05 00:57 [edit/del]

    정말 좋은 내용 잘보고 갑니다 ㅠㅠ

    Reply
  3. at 2013.07.21 21:49 [edit/del]

    저기 비동기식으로 감시한다는게 무슨 뜻인가요?

    Reply
  4. Mr.K at 2014.06.26 11:37 [edit/del]

    감사합니다. 파일과 관련된 처리 하다가 찾았습니다. 유용할거 같네요

    Reply
  5. BlogIcon builder at 2017.05.12 10:51 [edit/del]

    안녕하세요. 궁금한 게 있어 덧글 남깁니다ㅠ
    cbBuffer = 1048576 초기화 이유가 따로 있나용?

    Reply

submit

submit
  1. 디바이스 드라이버 at 2010.10.25 12:44 [edit/del]

    우연히 찾게 되었는데 무척 좋은 글 잘 읽고 갑니다.^^

    Reply

submit
Windows Internals 제5판 - 10점
마크 러시노비치 외 지음, 안철수 연구소 기반기술팀 옮김/에이콘출판


악. 기다리고 기다리던 Windows Internals 5th가 드디어 번역본이 나왔다.

이 책을 처음 훑어 봤을 때는 데이빗과 마크 이 자식들이 대체 무슨 이야기를 하고 있는 건지, 왜 이 따위 얘기를 하는건지 아무것도 이해할 수가 없었다.

4판 서문에 저자들이 제프리리처에게 감사를 전하는 문구가 있는데 내용이 너무 웃긴다.

Thanks to our friend Jeffrey Richter, for writing the "What about .NET and WinFX" sidebar in Chapter1 and for continuing to remind us over many dinners together of his view on how few people should care about what we talk about in this book.

도대체 그런 주제로 책을 쓰면 몇 명이나 사보겠냐. Windows via C/C++ 을 이길수 있을 것 같아? 라고 밥먹는 중에 놀려대는 모습이 왠지 상상이 간다.

디바이스 드라이버를 만들어보면서 이 책의 내용들이 조금 더 잘 이해가 되기 시작했다. 그리고 특정 개발자들에게는 정말 중요한 내용이라는 것도 알았다.

내 실력이 부족한 것이 주 원인이었지만 기존 4판에서는 번역도 조금은 불만족스러웠고 잘못된 그림이나 오타 등도 많아서 답답했다.
그것보다 더 중요한 것은 비스타 이후 변경된 많은 내용들이 4판에는 없었다는 것인데, 그래서 5판이 빨리 번역되어 나오기를 간절히 기다려왔다.

실력있는 사람들이 작업한 만큼 많은 것을 배울 수 있을 것 같아서 가슴이 설렌다.
책 값이 조금 비싸긴 하지만, 뭐 좋은 책이니깐 이 정도 쯤이야.
  1. Favicon of http://namoda.springnote.com BlogIcon 나모 at 2010.10.28 14:15 [edit/del]

    지난 주에 교보에 들렸다가 이 책을 보고 바로 구입했습니다. 오늘 도착했는데 Windows via C/C++ 옆에 놔두니 다른 출판사의 책이지만 옆면은 비슷하네요. 둘 다 Microsoft Press 라서 그런가요?

    Reply

submit
Windows 시스템 실행파일의 구조와 원리 - 9점
이호동 지음/한빛미디어

이 책은 PE(Portable Executable)라고도 불리우는 윈도우즈 실행 파일의 내부 구조에 대해서 다룬다.
EXE, DLL, OCX, SYS, DRV 확장자들로 된 파일들이 모두 PE파일이다.

이런 PE 파일들이 실행되는 순간에 메모리에 어떻게 매핑되고 그 자료구조는 어떻게 구성되는지가 바로 이 책이 다루는 내용이다.

이 책을 읽기 전에 제프리리처의 Windows Via C/C++

13장 윈도우 메모리의 구조
14장 가상 메모리 살펴보기
17장 메모리 맵 파일
19장 DLL의 기본
20장 DLL의 고급 기법

위 장들을 읽어보는 것이 이 책을 이해하는데 많은 도움을 줄 것이다.

나는 처음에는 헥사코드를 하나씩 따라가면서 정독해서 읽었는데, 관련 구조체들이 다 비슷비슷 하게 구성되어 있어서 중간쯤 부터는 그런 부분들을 제껴가면서 조금 더 편하게 읽을 수 있었다.

개인적으로 DLL의 깊숙한 부분에 대해서 많은 것을 얻을 수 있어서 좋았고, 또 리소스에 대해서는 거의 아는 것이 없었는데, 이 부분을 많이 다루어 주어서 특히 좋았다.

이 책의 단점을 꼽자면, 그림이나 코드들이 보기에 너무 조잡하다는 것이다.
또한 느낌표나 말줄임표를 잔뜩 붙여놓은 문장들이 곳곳에서 보이는데, 이는 잘 정제되지 못한 글의 느낌을 받게 한다. 마치 인터넷에 써서 올렸던 글을 추려서 책으로 낸듯이 말이다.
저자는 프로그래머이지 글쟁이가 아니므로 이런 것들은 출판사에서 신경을 써준다면 좋을 것이다.

이 책과 비슷한 경우로 김상형의 Windows API 정복이라는 명서가 있는데, 나는 이 책을 국내에서 출판된 가장 잘 쓰여진 프로그래밍 책이라고 생각하지만, 책 안의 그림들은 저자의 깔끔한 글솜씨에 비해 조잡하게 느껴진다.
이 책은 가남사에서 출판되었다가 한빛미디어에서 개정되었는데, 그림들이나 표는 아마도 그대로 옮긴 것 같다.

저자가 그린 그림을 출판사에 제출하면 편집없이 그대로 실는 것 같은 느낌인데, 만약 정말 그러고 있다면 출판사에서 좀 더 다듬어서 주기를 바란다.
오라일리 같은 출판사에서 발행하는 책들은 그림이나 표가 참 보기 좋게 그려져있다. 그 책을 쓰는 저자들이 모두 미술에까지 일가견이 있어서 그런 것은 분명 아닐 것이다.

다음은 내가 출판사에 바라는 점들이다.
1. 모든 코드 조각은 회색 박스로 둘러싼다.
2. 코드 폰트는 고정폭 폰트를(기왕이면 프로그래머가 많이 쓰는) 사용한다.
3. 지저분한 그림이나 표는 예쁘게 다시 그린다.

쓰다보니 단점의 내용이 길어져 버렸는데, 이 것은 이 책만이 아니라 국내에서 출판되는 모든 프로그래밍 서적에 대한 내용이다.

이런 자잘한 단점을 제외하면 이 책은 읽을만한 가치가 있는 아주 훌륭한 책이다.
이런 지식을 얻기위해서, Matt Pietrek이 쓴 다음과 같은 글 들을 눈이 빠지게 읽어야 하는데
보기만해도 질려버린다.




이미 이 책의 저자가 이 문서들을 잘 읽어본 후에 우리들에게 한글로 쉽게 설명해주고 있으니 그저 고마울 뿐이다.

이 책이 개정판이 또 나올 것 같지는 않지만 혹시 개정된다면, 위에서 말한 부분들의 교정과 함께 64bit PE나 Managed PE에 대해서도 살짝 다루어주면 좋겠다.

submit