Media Log

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

    좋은 글 감사합니다.

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

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

    Reply

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 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 2011.01.05 23:15 [edit/del]

    너무 궁금했는데 이렇게 간단할 줄은 몰랐네요. ㅎㅎ 잘 배워 갑니다.

    Reply

submit

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

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

    Reply

submit
  1. 오곡 at 2012.11.26 11:04 [edit/del]

    좋은 내용 잘봤습니다 ^^

    Reply

submit
코드로 읽는 리눅스 디바이스 드라이버 - 8점
스리크슈난 벤카테스와란 지음, 박재호 옮김/에이콘출판
에이콘 출판사에서 코드로 읽는 리눅스 디바이스 드라이버라는 새 책이 출간되었다.
이 책의 원제는 Essential Linux Device Drivers이며 2008년도에 발매되었다.

나는 아마존에서 'device driver' 로 자주 검색을 해보는데 이 책은 언제나 1위로 검색이 되어서 잘 기억하고 있다.

리눅스건 윈도우건 디바이스 드라이버에 대한 책은 그렇게 많지 않은데다가 2000년대 초반, 심지어 90년대의 책들이 수두룩하다. 생각해보니 윈도우가 리눅스보다 더 심한 것 같다.
디바이스 드라이버 세계에서 2008이라는 숫자는 엄청난 최신 버전이므로 이런 책이 번역되어져 나왔다는 것은 참 반가운 일이 아닐 수 없다.

지금은 윈도우 드라이버만 만들고 있지만 앞으로 리눅스에서 드라이버를 개발하게 될지도 모르고, 언제나 그렇듯이 다른 플랫폼을 공부하는 것은 현재 플랫폼을 잘 이해하는데 큰 도움이 되기 때문에 이 책도 꼭 읽어볼 생각이다.

책 목차를 보면 상당히 방대한 부분을 다루고 있는데, 얼마나 자세한 내용인지는 모르겠다.
나는 FUSE를 통해 파일 시스템을 만드는 것에 특히 관심이 있는데 이런 내용은 없는 것 같아서 좀 아쉽긴 하다.

반가운 점이 또 하나 있는데 바로 책의 가격이다.
이 책의 정가는 35,000원인데, 나는 책의 가격과 출판사를 몇번이나 눈알을 왔다 갔다 하며 쳐다보았다.
에이콘의 책은 가격이 아주 비싼 편인데, 이제부터는 가격을 좀 낮게 책정하기로 결정한건지는 모르겠지만 어쨌거나 독자들에게는 좋은 일이다. 앞으로도 잘 부탁해요 에이콘. 크크.

오늘 아침에 잠시 조엘의 책을 읽는데 재밌는 내용이 있었다.
그가 인터뷰를 하거나 혹은 이력서를 읽을 때의 이야기이다.

나는 자바보다 한결 오래된 언어인 OCaml 로 작업한 사람을 보고 매우 감동 받은 적이 있다. 또 아득한 향수가 깃든 어셈블러나 디바이스 드라이버 또는 커널로 작업한 프로그램을 보면 비주얼 베이직이나 PHP로 작업한 것보다 한결 가슴이 뭉클해진다.

디바이스 드라이버를 만드는 사람들이나 공부하는 사람들에게 조금이나마 힘이되는 글 아닌가? 크크.

좋은 책을 번역해주신 역자께 감사한다.


  1. Favicon of http://jhrogue.blogspot.com BlogIcon jrogue at 2010.08.28 17:41 [edit/del]

    이벤트 당첨 선물을 보내드리려고 합니다. 우편물 받으실 주소를 jrogue 에뜨 쥐메일.com으로 보내주시면 감사하겠습니다. ;)

    - 박재호 올림

    Reply
  2. 익명 at 2010.09.01 17:35 [edit/del]

    비밀댓글입니다

    Reply
  3. Favicon of http://namoda.springnote.com BlogIcon 나모 at 2010.10.28 14:10 [edit/del]

    박재호님이 옮기신 책을 김재호님이 블로깅하셨군요. ^^

    Reply

submit

submit

블로그 이전했습니다.

https://jeho.page/programming/2010/04/25/device-driver-book.html

 

윈도우 디바이스 드라이버에 관한 최고의 책

출처: 알라딘

jeho.page

 

  1. 익명 at 2010.09.29 00:14 [edit/del]

    비밀댓글입니다

    Reply
  2. 익명 at 2011.01.07 12:14 [edit/del]

    비밀댓글입니다

    Reply
  3. 익명 at 2011.01.14 01:44 [edit/del]

    비밀댓글입니다

    Reply
  4. 익명 at 2012.08.27 20:27 [edit/del]

    비밀댓글입니다

    Reply

submit