chapter 4.7: WDF的device和driver支持
来源:互联网 发布:淘宝满包邮怎么设置 编辑:程序博客网 时间:2024/05/23 13:50
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
- chapter 4.7: WDF的device和driver支持
- chapter 7.2: WDF的PnP和Power管理支持
- [linux device driver] Chapter 03:IS_ERR的理解
- [linux device driver] Chapter 14:kobject_init的理解
- [linux device driver] Chapter 03:以scull_load为引,详解Bash的位置参数和内部参数
- [linux device driver] Chapter 03:从scull_load学习小括号,中括号,和大括号的区别
- chapter 3.7-8: WDF验证、跟踪及调试支持&WDF版本支持
- WDM WDF支持的操作系统
- [linux device driver] Chapter 03:scullc_open理解
- vf的device和driver的匹配
- platform device和driver之间的关系
- bus,device和driver
- phy device 和 driver
- [linux device driver]Chapter 03:Scull_load中涉及到的群组权限之staff\wheel
- [linux device driver]Chapter 03:scull_load中涉及到的bash命令 exit
- [linux device driver] Chapter 03:字符设备注册学习
- [linux device driver] Chapter 03:make输出重定向
- [linux device driver] Chapter 04:Magic SysRq Key
- 数据结构第一周小结
- SGU 318 Grants
- 线性系统的自适应控制
- 自制Android仿制《百人碰碰车》做老虎机记录日志
- 推荐几个优秀的网页网站模版网站
- chapter 4.7: WDF的device和driver支持
- 循环赛日程表-分治法
- 复数与矩阵,一个有趣的东西
- java运算符
- module初始化顺序导致的AKM8963C 磁传感器probe失败
- 利用遗传算法解决TSP问题
- hdu 1878 欧拉回路【并查集入门】
- oracle 自增长列
- 纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)