메모장 입니다2
Windows] 드라이버 개발 - 6) IRP 본문
1.WDM 드라이버 실행 구조
1) 파일 스트림을 통해 IO 관리자에게 요청.
2) 연관된 디바이스 스택 검색
3) IRP 생성
4) 찾은 디바이스 스택의 첫 번째(TOP) 디바이스 오브젝트를 생성한 드라이버 검색.
5) IoCallDriver()를 호출하여 해당 드라이버(A)에게 IRP 전달.
6) 드라이버 A가 디바이스 스택 상의 다음 드라이버(B)를 찾음.
7-8) 드라이버 A가 IoCallDriver()를 호출하여 드라이버 B에게 IRP 전달.
9) 마지막 드라이버인 B가 IoCompleteRequest()를 호출하여,
IRP 처리가 완료되었음을 IO관리자에게 알림.
10) IO관리자가 IRP를 파괴.
11) 요청 결과를 응용프로그램에게 전달.
2.IRP 스텍 구조
*IRP는 스택구조로 처리된다*
3.IRP 스택 처리과정 - push
1) IO관리자가 IoCallDriver()로 IRP 요청을 넘김
2) IRP 요청이 스택에 push 되고 최상위에 있던 필터드라이버가 IRP 요청을 받아서 처리함
3) 최상위 필터드라이버가 IoSetCompletionRoutine()으로 콜백함수를 등록함. (IRP요청이 완료되어 되돌아올 때 처리됨)
4) 최상위 필터드라이버가 IoCallDriver()로 하위에 있는 클래스 드라이버에게 IRP 요청을 넘김
5) 같은 방식으로 버스 드라이버까지 요청이 전달되면서 처리됨
4.IRP 처리과정 - pop
*push할 때 등록되었던 completion 루틴 콜백함수가 실행됨*
5.IRP 스택 처리 함수
출처 - https://www.youtube.com/watch?v=6gIbmod6Dpo
'Study > Programming' 카테고리의 다른 글
Windows] SSDT 후킹 - 설명 (0) | 2017.03.17 |
---|---|
Windows] SSDT 후킹 - MDL 활용. (0) | 2017.03.16 |
Windows] 드라이버 개발 - 5) WDM 드라이버, 디바이스 스택 (0) | 2017.02.23 |
Windows] 드라이버 개발 - 4) 권한, 콜백함수 (1) | 2017.02.23 |
Windows] 드라이버 개발 - 3) windbg 기능, 커널 덤프 (0) | 2017.02.23 |