Windows Driver

[Windows Driver] Choosing a driver model

하루삼십만원 2020. 11. 14. 09:36
반응형

작성하려는 Driver에 따라 어떤 Driver model을 선택해야 하는지를 알아 보자.

 

Choosing a driver model

 

Microsoft Windowsdriver를 작성하기 위해 다양한 driver model을 제공한다. 가장 좋은 driver model을 선택하는 전략은 당신이 계획하고 있는 driver가 어떤 type인지와 연관이 있다. 아래와 같은 옵션이 있다.

Device function driver

Device filter driver

Software driver

File system filter driver

File system driver

 

Choosing a driver model for a device function driver

 

Hardware device를 설계할 때, 처음으로 고려되야 할 것 중 하나가 function Driver를 작성할 것인지 여부이다.

 

Driver 전체를 만드는 것을 피할 수 있는가? 만약, function driver를 작성해야 한다면 최적의 model은 무엇인가? 이것에 대답을 하기 위해서는 “Device and driver technologies” 문서를 보고 당신의 device가 어느 것에 적합한지를 정해야 한다. 부분적인 기술에 대한 문서를 보고 function driver가 필요한지를 결정하라. 그리고 어떤 driver model이 가능한지 학습해라.

 

개별 기술 중 일부는 Minidriver models을 가지고 있다. Minidriver model에서 device driver2가지 부분으로 이뤄져 있다. 하나는 일반적인 task들을 처리하는 것이고 다른 하나는 device specific한 task들을 처리하는 것이다. 일반적으로 Microsoftgeneral Driver를 만들고 장치 제조업체는 device-specificDriver를 만든다. Device specificDriver는 다양한 이름이 있는데 대부분 접두사로 mini를 사용한다.

 

· Display miniport driver

· Audio miniport driver

· Battery miniclass driver

· Bluetooth protocol driver

· HID minidriver

· WIA minidriver

· NDIS miniport driver

· Storage miniport driver

· Streaming minidriver

 

“Device and driver technologies” 문서에 나열된 모든 기술이 전용 Minidriver 모델을 가지고 있는 것은 아니다. 특정 기술 문서에서는 KMDF(Kernel-Mode Driver Framework)를 다른 기술 문서에서는 UMDF(User-Mode Driver Framework) 사용을 권장할 수 있다. 특정 device 기술에 맞는 문서를 먼저 확인하는 것이 중요하다. Device 기술이 minidriver model을 갖고 있으면 minidriver model을 사용해라. 그렇지 않을 경우 UMDF, KMDF 또는 WDM을 사용할지 여부에 대한 기술 설명서의 조언을 따라야 한다.

 

Choosing a driver model for a device filter driver

 

여러 개의 Driver들이 하나의 I/O request(: device에서 data를 읽는 것)에 관여하는 일은 빈번하게 발생한다. driver들은 stack에 층으로 이뤄져 있고, stack을 시각화 하는 일반적인 방법은 첫 번째 driver를 상단에 마지막 driver를 하단에 두는 것이다. stack은 하나의 driver를 가지고 있고 filter driver들도 가지고 있다.

 

Devicefilter driver를 만들려고 할 경우, “Device and driver technologies”에서 기술한 기술 리스트에서 당신의 device가 어디에 적합한지 확인해라. 특정 device 기술 문서에서 선택한 filter driver model에 대한 guidance가 있는지를 확인해라. Device 기술에 대한 문서가 이러한 guidance를 제공하지 않을 경우 UMDF 사용을 먼저 검토해라. 당신이 만들고자 하는 Filter driverUMDF에서는 접근이 불가능한 data 구조에 접근해야 할 경우, KMDF사용을 고려해라. 극히 드물게 KMDF로도 접근할 수 없는 data 구조에 접근해야 할 경우, WDM을 사용한다.

 

Choosing a driver model for a software driver

 

Device와 연결되지 않은 DriverSoftware driver라고 한다. Software driverkernel mode에서 동작이 가능하기 때문에 유용하다. Protected 운영체제 system data에 접근할 수 있기 때문이다.

 

Software driver의 경우 2가지 옵션은 KMDFlegacy Windows NT driver model이다. KMDFlegacy Windows NT model 둘 다 driver를 작성할 때 PnP와 전원 관리에 대해 신경 쓰지 않아도 된다. Driver의 주요 task에만 신경 쓰면 된다.

 

KMDF를 사용하면 framework에서 PnP와 전원 관리를 처리해 줌으로 PnP와 전원 관리에 관해 신경 쓸 필요가 없다. Legacy Windows NT model에서도 kernel-mode servicePnP 및 전원 관리와 완전히 독립된 환경에서 작동하므로 PnP 및 전원 관리에 대해 걱정할 필요가 없다.

 

KMDF사용을 추천한다. 특히 익숙한 사용자라면 더더욱 KMDF 사용해야 한다. PnP와 전원 관리를 완전히 독립시키길 원할 때는 legacy Windows NT model을 사용한다. Power transition 또는 전원 event를 인지하는 software driver를 작성해야 한다면, legacy Windows NT model을 사용할 수 없고, KMDF를 사용해야 한다.

 

Note. 드물게 PnP나 Power event를 인지하는 Software driver 작성이 필요할 경우, 그리고 KMDF를 통해서도 data에 접근하지 못하는 data에 접근이 필요할 경우, WDM을 사용한다.

 

docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/choosing-a-driver-model

반응형