焦点期刊
在线客服

著作编辑 著作编辑

咨询邮箱:568476783@qq.com

计算机论文

Win32应用程序介绍

时间:2021-12-05 11:05 所属分类:计算机论文 点击次数:

1.异步输入输出模式。
Win32应用程序首先调用CreateFile()功能来装载设备驱动。当函数被调用时,将倒数2/2参数设置为FI_ATTRIBUTE_NORMAL|FI_FLAG_OVERLAPPED,这意味着稍后可以重叠I/O操作。在成功创建了设备驱动程序文件之后,创建了一个没有信号、需要手动复位的事件,并将此事件传递到Overlapped类型的数据结构(比如Overlapped)。Overlapped随后作为参数传递给DeviceIoControl()函数。装置驱动程序会将这个I/O请求包(IRP)设置为挂起,并设置一个取消程序。假设目前的IRP团队为空,那么将该IRP发送给StartIo()例程;否则,将其放到IRP队列。在设备驱动程序完成这些工作之后,结束对DeviceIoControl()的处理,这样,Win32应用程序就可以返回DeviceIoControl(),而不必等待IRP完成处理。对返回值进行判别,获得对IRP的处理。假设当前IRP处于挂起状态,那么主程序首先完成其他工作,接下来,将调用WaitForSingleObject()或WaitForMultipleObject()功能,等待Overlapped中的事件变成有信号状态。当队列中的IRP出现时,设备驱动程序会被调用(IoCompleteRequest)函数。这个函数在Overlapped中将事件设置为信号状态。Win32应用程序可以立即响应该事件,退出等待状态,将事件恢复为无信号状态,然后调用GetOverlappedResult()
 
得到IRP处理结果的功能。
2.事件模式(WDM)
 
Win32应用程序从创建事件开始,然后将事件句柄传递到设备驱动程序,然后再创建一个辅助线程,等待事件的有信号状态,自己就会继续做其他事情。在设备驱动程序得到事件句柄之后,将其转化为能够使用的事件指针,并将其存放在以后使用。有了条件之后,设备驱动程序就会将事件设置为“有信号”状态,以便应用程序的次要线程立即知道这条消息,然后进行相应的处理。在此事件不再被设备驱动程序使用时,应取消其指针。
设备驱动是当今流行的Windows操作系统中控制硬件最底层的软件接口。向上端提供与硬件无关的用户界面,直接向下执行I/O、硬件中断、DMA、存储器存取等操作。该工具屏蔽了应用程序和硬件细节,使得软件不再依赖于硬件,并可以在多种不同平台间移植。该文介绍了5种设备驱动程序通知应用程序的方法,前3种主要是VxD,后2种主要是WDM。所有的五个方法都经过了实际测试。实验表明,它们均能实现设备驱动程序通知应用程序的目的。