Windows动程序模型Windows新特性.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows动程序模型Windows新特性

Windows 驱动程序模型: Windows 7 新特性 Eliyas Yakub 首席开发经理 US-Device Storage Technologies@Dev 议程 WDF 1.9支持的平台 用户模式驱动架构 UMDF 1.9 新特性 新的示例 内核模式驱动架构 KMDF 1.9新特性 新的示例 WDF在哪里? 附加资源和立即行动 之前的WDF 版本 KMDF 应用 应用效果很好 微软提供的驱动: ~50 第三方提供的驱动: ~300 UMDF 应用 应用正在增长 方向是正确的 更多的复杂堆栈 更多的核心使用场景 UMDF 1.9的变化 电源管理改进 问题: UMDF 驱动在空闲状态下不能自动掉电,被使用唤醒,或者唤醒系统 使用场景: 非USB总线驱动,USB驱动有着比WinUSB更加复杂的空闲和唤醒逻辑 解决方案: UMDF 1.9 支持空闲检测,支持Sx 到S0状态苏醒 IWDFDevice2::AssignS0IdleSettings() IWDFDevice2::AssignSxWakeSettings() IWDFDevice2::StopIdle() and ResumeIdle() 同WinUSB协同工作支持选择性挂起 USB 连续读取器 问题: 从USB 管道手动读取多个信息包是困难的 使用场景: USB驱动从整块或者不连续的管道读取流信息 解决方案: 增加USB连续读取器以支持UMDF IWDFUsbTargetPipe2::ConfigureContinuousReader() to configure Callback interfaces are IUsbTargetPipeContinuousReaderCallbackReadComplete and IUsbTargetPipeContinuousReaderCallbackReadersFailed 错误处理行为稍有不同 UMDF 在错误发生时只做通道重置,而不是设备重置(WinUSB 的限制) 请查看Fx2 驱动示例 虚拟串口支持 问题: 不能建立类似串口的UMDF驱动 使用场景: 映射一个新的设备给需要串口的客户端 解决方案: 添加一个虚拟串口示例,解决我们遇到的问题 新的UMDF支持 IWDFDevice2::CreateSymbolicLinkWithReferenceString() 允许一个驱动列举多个端口以消除 \\.\COM1 和\\.\COM2 之间的链接 支持IRP_MJ_QUERY_INFORMATION, SET_INFORMATION 和FLUSH_BUFFERS 新的 WDF_REQUEST_TYPEs 通过配置可以支持查询反馈和通过默认I/O接收 扩展了为遗留设备配置的注册表入口 扩展的注册表入口和写入权限 问题: UMDF 驱动以本地服务的方式运行所以对系统储存档的很多部分不能写入 属性存储接口只允许设备的硬件标识写入 使用场景 驱动需要在他们的软件或者设备接口标识中读写数据 像串口驱动需要在遗留设备硬件表中写入数据 (HKLM\HARDWARE\DEVICEMAP) 解决方案: IWDFPropertyStoreFactory 允许驱动建立属性存储接口 硬件,软件或者设备接口标识 遗留硬件表子键 直接I/O 问题: UMDF驱动的吞吐量由于缓冲复制,所以是被CPU的性能所限制的 使用场景: 驱动执行大数据量传输 解决方案: 支持直接 I/O 通过IWDFDeviceInitialize2::SetIoTypePreference() 可以允许读写和IOCTLs的独立性 在一个堆栈的驱动必须一致否则要回到老的模式 (因为直接传输增加了一个安全隐患) 缓冲请求一直都是缓冲模式 Driver 指定一个偏好, 而不是绝对切换 UMDF 将会决定每一个请求是复制还是直接映射缓冲区 DirectTransferThreshold 注册表项可以被修改 (每个设备) 只有整个页面被映射—在缓冲区开始和结束的部分页面还是被复制 支持内核模式终端 问题: UMDF 不能被放置在内核模式驱动之下或者从内核终端接收 解决方案: 驱动包可使用UmdfKernelModeClientPolicy INF 指令允许一个内核模式终端 支持 用户模式以上的驱动(在WUDFRd以上加载的驱动) 内核模块打开设备发送I/O 处理格式化的读/写/IOCTL IRPs 缓冲区必须模拟I/O manager 的存放地址—一个带有MDL的缓冲模式IOCTL不能正常工作 不支持内部IOCTLs 每个请求需要一个file-object 这种模式需要一个UM驱动在内核模式驱动之下 或者有经验的驱动开发者了解驱动的行为而且充分

文档评论(0)

yx118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档