WinCE串口驱动分析
www.diybl.com 时间 : 2007-11-16 作者:佚名 编辑:本站 点击: [ 评论 ]
到这里MDD的主要函数都已经介绍过了,下面几个函数是在DeviceIOControl中用到的。这里顺便也来看一下:
ProcessExiting
该函数在IOCTL_PSL_NOTIFY命令的执行过程中被调用,之前的情景是使用驱动的进程在被取消的过程中,在这里主要是清除所有正在会话中的线程。以便直接kill掉该进程。
WaitCommEvent
事实上该函数为SerialAPI WaitCommEvent在驱动内的实现,其作用为阻塞线程直道某一固定的串口通告(事件消息)发生。在具体的实现中,是用WaitForSingleObject来实现阻塞。在进入阻塞之前,函数适用一个循环主体首先查询是否存在已有的通告与等待通告相符,若没有就等待下一次事件发生,待事件发生再次进行检查。如此循环达到阻塞的目的。
ApplyDCB
DCB数据结构是描述串行口波特率,流控制,奇偶效验等资料的载体。该函数是MDD设置DCB数据结构至驱动内部和硬件的手段,这里使用了大量的PDD操作来完成硬件设置。
总结:
在驱动实现方面,除去所谓Multi-Open的处理外,串口的MDD并没有什么特别的之处,在掌握了硬件行为和应用软件行为后很容易能读懂其间的代码。