Windows Driver Samples剖析之Echo(六)

本文对比分析了Windows Driver Samples中的DriverSync和AutoSync驱动,重点探讨了两者在IO回调、DPC和取消例程同步方式的差异。DriverSync使用自定义spin lock进行同步,而AutoSync依赖框架的自动同步。同步机制涉及队列同步属性设置、spin lock的创建和使用,以及请求的取消所有权计数。
摘要由CSDN通过智能技术生成

        本文将讲解DriverSync驱动代码,并比较它与AutoSync的差异。


一、代码比较

        先借助BeyondCompare工具比较driversync和autosync工程,如下:



        从上图可知(主要观察颜色和中间一列):

1)driver.c文件的代码几乎相同,不同的是driversync的driver.h中多定义了一个Request_context结构体。

2)device.c文件的代码略有不同,driversync添加了对Request_Context的初始化,仅此而已。

3)queue.c文件中的代码差异比较大。回顾一下第一篇中的readme:

        In the AutoSync version of the sample, the queue is created with WdfSynchronizationScopeQueue so that I/O callbacks including cancel routine are synchronized with a queue-level lock. Since timer is parented to queue and by default timer objects are created with AutomaticSerialization set to **TRUE**, timer DPC callbacks will be serialized with EvtIoRead, EvtIoWrite and Cancel Routine.

        In the DriverSync version of the sample, the queue is created with WdfSynchronizationScopeNone, so that the framework does not provide any synchronization. The driver synchronizes the I/O callbacks, cancel routine and the timer DPC using a spinlock that it creates for this purp

windows-driver-samples-main\network\wlan\wdi是一个Windows驱动程序示例项目的路径。在这个路径下,包含了一些用于开发无线局域网驱动程序的示例代码和资源文件。这些示例代码可以帮助开发人员快速了解和学习如何使用Windows驱动程序接口(WDI)来开发无线局域网驱动程序。 WDI是Windows操作系统中用于与网络适配器通信的一组接口和驱动程序模型。通过WDI,开发人员可以编写符合Windows驱动程序模型(WDM)标准的驱动程序,实现与无线网络适配器的通信和控制。 在这个示例项目中,开发人员可以找到各种与无线局域网驱动程序开发相关的示例代码,例如Wi-Fi连接管理、扫描网络、配置安全设置、获取网络信息等。这些示例代码提供了一些基本的功能实现和接口调用的示范,可以帮助开发人员更快速地开发出符合WDI标准的无线局域网驱动程序。 除了示例代码外,这个路径下还可能包含一些文档、说明文件或者其他资源文件,用于帮助开发人员理解示例代码的作用和实现原理。开发人员可以通过仔细阅读这些文档和资源文件,更好地掌握WDI接口的使用方法和无线局域网驱动程序的开发技巧。 总之,windows-driver-samples-main\network\wlan\wdi路径下的示例代码和资源文件可以为开发人员提供学习和参考,帮助他们更快速地掌握无线局域网驱动程序的开发技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值