流微型驱动开发指南(六)

本文是流微型驱动开发指南的第六部分,主要介绍了Minidriver的初始化、调用和卸载过程。内容包括PnP管理器如何枚举硬件、I/O子系统加载Minidriver、DriverEntry例程的角色、StreamClassRegisterMinidriver函数的使用,以及流的打开、关闭、数据传输和控制请求的处理等关键步骤。
摘要由CSDN通过智能技术生成

六、Minidriver的控制流程
下面要介绍的这几步,一般都和Minidriver的初始化、调用和卸载密切相关。将要用到的命令和结构在DDK的其他章节均有详细描述。
Minidriver的初始化、调用和卸载的步骤如下:
1.PnP管理器枚举到Minidriver所支持的硬件适配器插入,然后PnP管理器通过检查注册表去解析所有相关的符号引用,并向I/O子系统发送请求。
2.I/O子系统加载Minidriver,然后调用Minidriver的DriverEntry例程,在此例程内将分配并初始化一个HW_INITIALIZATION_DATA结构。根据DriverEntry中的信息,创建一个文件对象(file object)。
3.Minidriver的DriverEntry例程接着会调用流类驱动(Stream Class Driver)的StreamClassRegisterMinidriver函数,并把HW_INITIALIZATION_DATA结构作为一个参数传给此函数。HW_INITIALIZATION_DATA结构提供了Minidriver中那些用来处理SRB的函数的地址。这样Minidriver就能相应来自Class Driver的SRB包了。
4.初始化期间,流类驱动(Stream Class Driver)会调用Minidriver中负责接收SRB的主收包函数。此函数由HW_INITIALIZATION_DATA的成员HwReceivePacket所指定。HwReceivePacket是一个函数指针,参见StrMiniReceiveDevicePacket)。调用时,Class Driver会把SRB_INITIALIZE_DEVICE命令放在SRB包的Command域中。Minidriver收到该SRB包后就会执行相应的对硬件适配器的初始化动作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值