Windows Driver Samples剖析之Echo(四)

本文详细解析了Windows KMDF Echo驱动的AutoAsyn部分,介绍了DriverEntry、EchoEvtDeviceAdd、EchoDeviceCreate、EchoEvtDeviceSelfManagedIoStart等关键函数的作用和流程。内容涵盖了设备对象创建、队列操作和驱动启动、暂停的处理机制。
摘要由CSDN通过智能技术生成

        本文主要讲解kmdf echo工程的AutoAsyn模块,它是一个自动同步的(支持异步调用的)driver。其中,AutoAsyn —— Auto Asynchronous。

一、文件结构

        它主要包括8个文件:echo.inx —— 用于生成INF文件,public.h —— 与应用程序共享的头文件,传递GUID和IOCTL CODE。

driver.h和driver.c,驱动框架代码,包括入口函数等,device.h和device.c,设备管理代码等,queue.h和queue.c,处理应用层发来的请求的代码。

        从文件结构可以看出,该驱动不包含trace相关代码,不支持TPP,不能使用traceview来观察它的log。但是,它提供了”KdPrint“函数打印的log,后续我将开启debugview来捕获它的log。

        Readme文件中的描述如下:

Driver.h, Driver.c —— DriverEntry and Events on the Driver Object.
Device.h, Device.c —— Events on the Device Object.
Queue.h, Queue.c —— Contains Events on the I/O Queue Objects.
Echo.inx —— File that describes the installation of this driver. The build process converts this into an INF file.


二、代码讲解(Code Tour)

1,DriverEntry

        它是整个驱动程序的入口函数,相当于win32的main()函数。它是驱动被加载后系统调用的第一个回调例程,因此,它需要进行一些初始化的操作和指定其他入口点,如”EvtDevice“和”DriverUnload“。

        其中,最重要的是初始化DriverObject 。参考它的注释:

        DriverObject - represents the instance of the function driver that is loaded into memory. DriverEntry must initialize members of DriverObject before it returns to the caller. DriverObject is allocated by the system before the driver is loaded, and it is released by the system after the system unloads the function driver from memory.

        系统只是为DriverObject 分配了一块内存(无类型信息),真正的内容填充,需要在DriverEntry完成。在KMDF框架中,DriverObject 也是其中的一类对象,它也有config和attribute,也需要有Wdf***Create函数创建。在kmdf echo工程中,主要是为它配置config和调create:

    WDF_DRIVER_CONFIG_INIT(&
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路径下的示例代码和资源文件可以为开发人员提供学习和参考,帮助他们更快速地掌握无线局域网驱动程序的开发技术。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值