UMDF支持的设备
UMDF支持protocal-based or serial bus-based devices(USB device),32或64皆可:
1.Portable devices
2.USB devices,除了isochronous deivice
3.Auxiliary display,video devices
*主要是一些可以直接连接、网络连接、无线连接的设备,和software-only drivers
*不允许32位的UMDF/KMDF驱动安装在64位系统中(溢出和安全问题)
UMDF相对kernel driver的优势
1.环境简单,避免了由于IRQL、page fault和thread context产生的错误(独立地址空间)
2.系统稳定性:独立地址空间
3.安全风险降低:只有限制的权限(LocalService Account),防止denial-of-service攻击
*支持impersonation时,需要driver注册该功能,该功能会引起使用驱动的程序被代码注入
4.Windows API:可以调用除了支持UI的大部分API(小心调用外部程序和模块),WindowsAPI不支持asynchronous I/O model(调用耗时WindowsAPI导致驱动被长时间挂起)
*不支持UI原因:UMDF运行在session 0,和系统服务一起,所以不支持UI。若要支持UI,需要创建另一个模块
5.用户模式调试,且不用导致系统崩溃
6.C/C++编程,大多数情况用C++
UMDF限制
一定要使用内核驱动的情况:
1.硬件的直接访问,处理中断
2.Uninterrupted timing loops
3.对内核数据结构,内核内存的访问
*UMDF不能作为内核中的一个client
KMDF支持的设备
例外:一些miniport model支持的设备:Storport drivers
?WIA
选择正确的framework
只有在必要时采用kernel mode driver,如:
MP3播放器驱动使用了windows protable device model,所以可以使用UMDF
network adapter由于处理中断,使用DMA,必须使用KMDF
USB驱动被两个framework都支持,应考虑使用的服务来选择framework
*framework不支持file system driver或file system filter driver!使用file system kit