정보공간_1

[6기 대구 류지현] Window Device Driver #2 본문

IT 놀이터/Elite Member Tech & Talk

[6기 대구 류지현] Window Device Driver #2

알 수 없는 사용자 2014. 9. 12. 19:48

안녕하세요. 대구멤버십 21-1기 류지현입니다.

오늘 포스팅 주제는 Windows Device Driver중 File System Filter Driver입니다.


File System Driver

Windows에서는 Driver를 Device Driver와 Software Driver로 구분 할 수 있습니다.

Device Driver는 일반적으로 USB나 모니터등 특정한 장치가 동작하도록 기능을 수행하는 Driver입니다.

Software Driver는 Device Driver와 달리 특정 장치를 대상으로 기능을 수행하는 것이 아니라, 커널 내부의 보호된 자원에 접근하여 이와 관련된 작업을 수행하는 Driver를 의미 합니다.


위의 정의를 따르자면, File System Driver는 일반적으로 하드디스크와 같은 물리적인 저장 장치와 관련되어 있기 때문에 Device Driver로 착각 할 수 있지만, File System Driver는 Software Driver의 범주에 속하는 드라이버 이며, Windows에서는 하드디스크와 같은 저장 장치에 관련된 Driver로써 Storage Driver를 제공합니다.

아래 그림은 CD-ROM을 예로든 File System Driver와 Storage Driver의 Device Stack 입니다.



보시다 싶이 CD-ROM이라는 물리적 저장장치를 위한 Driver의 Device Stack 상단에 File System Driver의 Device Stack이 위치하는 것을 확인 할 수 있습니다.


Device Type

위의 그림을 보면 지난번 포스팅에서 언급했던 PDO(Physical Device Object), FDO(Functional Device Object), FilterDO (Filter Device Object)이외에 VDO(Volume Device Object)와 CDO(Control Device Object)라는 새로운 개념을 볼수 있습니다.

VDO와 CDO는 File System Driver에서 사용되는 Device Type으로 CDO의 경우에는 드라이버 마운트와 관련된 기능과 같은  Device Driver에서의 FDO와 유사한 역할을 수행하며, VDO는 File System으로 전달되는 Create, Read, Write등 대부분의 IRP(IO Request Packet)을 처리하는 역할을 수행합니다.


앞서 File System Driver의 개념와 File System Driver에서 사용되는 새로운 개념에 대해서 알아보았고, 지금 부터는 좀더 실제 File System Driver 작성에 필요한 내용에 대해서 알아 보도록 하겠습니다.


File System Driver의 종류

Windows환경에서 File System Driver는 크게 아래와 같이 3가지 종류로 나눌수 있는데 각각의 특징에 대해서 이해해야 자신의 기능에 적합한 Driver Model을 선택하는것이 바람직합니다.


1. File System Driver

2. File System Filter Driver

3. File System Mini-Filter Driver


첫번째 File System Driver는 파일 시스템의 전반적인 역할을 수행하는 Driver입니다.

하지만, 대부분의 File System Driver개발은 특정 기능을 위한 목적이 크기 때문에 File System Driver 전체를 구현할 필요성이 크지 않습니다. 그렇기 때문에 Windows에서 가장 권장하지 않는 모델입니다.

Filter Driver와 Mini-Filter Driver모델은 Windows에서 File System 관련 특정 기능구현을 위해 권장하는 모델로써 그중에서도 Mini-Filter Driver 모델을 가장 권장합니다. 그 이유는 Filter Manager와 같은 새로운 Model들의 사용으로 Driver 작성과 동작에서 여러가지 이점을 얻을 수 있기 때문입니다.


Filter Manager Model의 이점


1. 다양한 Load Order

2. 자유로운 Load, Unload

3. 필요한 동작만을 수행

4. 효율적인 Kernel Stack 관리

5. 적은 코드

6. 복잡성 감소

7. 보다 쉬운 루틴 추가

8. 다양한 플랫폼 지원

9. 유저모드 어플리케이션 지원



부연 설명을 하자면, Mini-Filter들은 Filter Manager Model에 등록되어 동작합니다. Filter Manager Model은 여러가지 기능중 하나로써 Mini-Filter의 Load Order를 관리하는데, 이때 기존에 일반적인 Driver에서 사용하는 Load Order이외에 Mini-Filter Driver를 위한 Load Order Group을 이용하여 Mini-Filter Driver의 Loading 시기와 위치를 결정합니다. 이를 통해서 개발자는 자신이 원하는 위치에 정확히 Driver를 위치 시킬 수 있고, 또한 기존 Filter Driver의 문제점 이었던 동적인 Load, Unload가 불가능 했던 점도 개선 되었습니다.

Mini-Filter는 Load시 자신이 처리할 루틴을 Filter Manager Model에 등록함으로써 Filter Manager는 실제로 IRP를 처리하는 Mini-Filter Driver에게만 요청을 전달하기 때문에 각각의 Mini-Filter Driver는 필요한 동작만을 수행 할 수 있으며, Kernel Stack 관리에서도 보다 효율적인 처리가 가능합니다.


그 외에도 WDM에서 WDF로 Driver 전환되면서 Filter Manager Model뿐만 아니라, 다양한 모델들이 추가되고, 기존에 사용되던 많은 API들이 랩핑되어 개발자가 보다 쉽게 여러가지 기능들을 구현 할 수 있도록 개선되었습니다.

위의 Filter Manager Model의 이점들은 이런 점들을 잘 보여주는 사례입니다.


이번 포스팅에서는 File System Driver의 개념과 File System Driver에서 사용되는 개념들에 대해서 주로 다루었습니다.

다음번 포스팅부터는 본격적으로 File System Driver 작성과 간단한 예제들을 통해서 File System Driver에 대해서 알아볼 예정입니다.


위 글은 아래 래퍼런스를 기반으로 작성되었습니다.

Reference

- [MSDN] : Device and Driver Technologies