본문 바로가기

reversing/Windows Driver

[Device Stack] 디바이스 스택

SMALL

디바이스 스택

하나의 디바이스(하드웨어)를 관리하기 위해서는  디바이스를 관리하는 여러개의 드라이버가 필요하다. 

그리고 각 드라이버들은 해당 디바이스의 관리를 위해서 각 디바이스에 자신의 디바이스 오브젝트를 생성한다.

그리고 여러개의 드라이버가 하나의 디바이스를 위해서 생성한 디바이스 오브젝트가 스택처럼 이루어지는데 해당 내용이 디바이스 스택이다.



디바이스 스택 형성 과정


                1. 버스 드라이버 —> 특정 디바이스를 발견 [가상으로 발견된 것 처럼 해도 됨]

                2. 버스 드라이버는 발견한 디바이스의 디바이스 오브젝트를 생성

                3. 버스드라이버는 I/O Manager (PnP관리자)에게 보고

                4. 시스템 레지스트리 확인해서 설지 정보 확인—> 이 장치가 이전에 설치 되었는지, 아니면 관련된 정보가 있는지 확인함

                5. 기능 드라이버(Function Driver) 호출

                6. 호출된 기능 드라이버는 해당 디바이스에 관여하겠다는 의미로 디바이스 스택에 디바이스 오브젝트 생성

                7. 이제 생성된 디바이스 오브젝트 끼리 연결성을 해줘야함.
                  그래서 AttachedDevice를 호출해서 연결시켜야함

                8. 만약에 레지스트리에 필터 드라이버의 존재가 있을 경우
                  FilterDriver를 호출

                9. 호출된 Filter 드라이버는 해당 디바이스에 관여하겠다는 의미로 디바이스 스택에 디바이스 오브젝트 생성

                10. 이제 생성된 디바이스 오브젝트 끼리 연결성을 해줘야함.
                  그래서 AttachedDevice를 호출해서 연결시켜야함



[출처] https://www.youtube.com/watch?v=1E5Y64CPH00

LIST