SMALL
디바이스 스택
하나의 디바이스(하드웨어)를 관리하기 위해서는 디바이스를 관리하는 여러개의 드라이버가 필요하다.
그리고 각 드라이버들은 해당 디바이스의 관리를 위해서 각 디바이스에 자신의 디바이스 오브젝트를 생성한다.
그리고 여러개의 드라이버가 하나의 디바이스를 위해서 생성한 디바이스 오브젝트가 스택처럼 이루어지는데 해당 내용이 디바이스 스택이다.
디바이스 스택 형성 과정
- 버스 드라이버 —> 특정 디바이스를 발견 [가상으로 발견된 것 처럼 해도 됨]
- 버스 드라이버는 발견한 디바이스의 디바이스 오브젝트를 생성
- 버스드라이버는 I/O Manager (PnP관리자)에게 보고
- 시스템 레지스트리 확인해서 설지 정보 확인—> 이 장치가 이전에 설치 되었는지, 아니면 관련된 정보가 있는지 확인함
- 기능 드라이버(Function Driver) 호출
- 호출된 기능 드라이버는 해당 디바이스에 관여하겠다는 의미로 디바이스 스택에 디바이스 오브젝트 생성
- 이제 생성된 디바이스 오브젝트 끼리 연결성을 해줘야함.
그래서 AttachedDevice를 호출해서 연결시켜야함 - 만약에 레지스트리에 필터 드라이버의 존재가 있을 경우
FilterDriver를 호출 - 호출된 Filter 드라이버는 해당 디바이스에 관여하겠다는 의미로 디바이스 스택에 디바이스 오브젝트 생성
- 이제 생성된 디바이스 오브젝트 끼리 연결성을 해줘야함.
그래서 AttachedDevice를 호출해서 연결시켜야함
[출처] https://www.youtube.com/watch?v=1E5Y64CPH00
LIST
'reversing > Windows Driver' 카테고리의 다른 글
IRP, I/O Stack 관련 내용 정리 (0) | 2017.07.28 |
---|---|
Driver Object , Deivce Object 연관성 및 함수 정리 (0) | 2017.07.25 |
MDL(Memory Descriptor List) (0) | 2017.07.21 |
DPC (Deferred Procedure Calls) (0) | 2017.07.20 |
[PAE] Linear Address to Physical Address (0) | 2016.12.04 |