티스토리 뷰

 

 

 

여러분 안녕하십니까...

몰아서 골을 시원하게 때려 박는 호날두와 같이

몰아서 포스팅을 시원하게 때려 박는 삽날두 삽잡이입니다.

 

 


 

푸하하... 호날두가 골을 몰아넣는다는 식의 뉘앙스가 기분 나쁘시다면 죄송합니다...

참고로 저는 호날두를 매우 좋아합니다...

맨유시절 맨유와 첼시의 그 경쟁구도는... 캬~ 하지만 전 첼시팬... 허허...

 

아무튼!

아무것도 모르는 삽날두님께서는

윈도우 커널 디버깅에 멋도 모르고 뛰어 들었답니다...

뭐 머리가 백지이니... 하나하나 무식하게 접근할 때마다 모르는 것들이 하나하나 생겨서...

그때 그때마다 찾아보고 있습니다.

나쁘지 않습니다. 하하..

 

이번에 알아볼 것은 IRP... 그러니까 I/O Request Packet 입니다.

Window Driver에서 핵심중에 하나라고 합니다.

(어느 하나 중요하지 않은게 없기는 한데... 하하하...)

 

우선... I/O... Input Ouput 이겠죠? 뭔가 들어갔다 나왔다하는 느낌을 줍니다.

MSDN을 살펴보죠!

 


 

흠...

대부분의 요청은 Device Driver에서 보내고...

요것들은 I/O Request Packet (편의상 IRP라고 하겠습니다.) 의 형태를 가지나봅니다...

음... 그러니까...

쉽게말하자면, 요청을 할 때 IRP라는 데이터 구조체가 왔다리 갔다리 한다는 뜻입니다.

 

IRP 덩어리는 드라이버가 할일을 담고 있습니다.

말이 간단하지, 드라이버가 하는 일이 간단할까요 ㅎㅎㅎ anyway ! (이열)

 

그렇다면, 이 덩어리 친구는 그냥 땅에서 샘솟았을까요?

아닙니다... I/O Manager에 의해서 생성되는데요,

 

I/O Manager란 말그대로 입출력을 관리해주는 친구겠죠.

아.. 오랜만에 생각나네요... 여러분 Kernel은 뭐다? 서버다!

(이게 뭐냐... 싶으시다면... 예전 포스팅들을 참조해주세요...)

User 모드라는 고갱님의 요청을 Kernel이 받고 요청에 대한 서비스를 해줘야죠!

자... KernelI/O Manager에게 고갱님의 요구를 해결하도록 지시합니다.

그리고 그 I/O ManagerDriver에게 요구사항을 전달하고 결과를 전달 받죠...

 


I/O Stack에 저장되어 있는 구조체를 직접 드라이버에게 전달하는 것은 비효율적입니다.

그렇기에 I/O Manager

I/O Stack을 참조할 수 있는 IRP라는 데이터 덩어리를 생성하는거죠...

I/O Manager는 Driver에게 IRP를 가리키는 포인터 값을 던져주기만 한다면,

결국에는 I/O Stack에 저장되있는 구조체까지 찾아오게되어서

요구사항에 대한 정보들을 읽어낼 수 있게 됩니다.

 

그렇다면 이놈의 IRP는 어떻게 생겨먹었는지 확인해보도록 하겠습니다.

 


 

허허... 거참... 많이들 채워넣으셨네... 해당 설명들은 추후 하도록 하겠습니다.

(무책임한 말씀이지만, MSDN에 설명이 있긴 합니다... 영어라는게 함정...) 

 

제가 지금... 좀 졸려서... 죄송합니다...

추후 추가하면서 IRP가 드라이버에 전달되는 과정이나,

이와 관려된 Device Stack도 설명하도록 하겠습니다.

 

 

 

[참고 자료]

 

http://karunakar-engineer.blogspot.kr/2012/01/io-request-packet.html <-- IRP 구조설명

http://cafe.naver.com/totallab/1104 <-- IRP에 대한 정의 및 구조 설명

http://cafe.naver.com/totallab/book58749/1329 <-- I/O Manager 설명 및 IRP 설명

http://msdn.microsoft.com/en-us/library/windows/hardware/hh439638(v=vs.85).aspx <-- IRP에 대한 MSDN 정의

 

[구글 키워드]

I/O Manager

IRP (I/O Request Packet)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함