驱动程序是通过设备句柄来控制设备的,应用程序要控制设备,也需要获得设备句柄,然后使用驱动程序体提供的DeviceIoControl接口来控制设备。那么应用程序是如何获得设备句柄的呢?
通常流接口驱动程序会使用两个结构体,驱动上下文结构体和设备上下文结构体。设备句柄会保存在设备上下文结构体中,驱动上下文结构体会保存设备上下文结构体的地址。这样通过驱动上下文结构体就能够得到设备句柄。下面我定义一个驱动上下文指针dwDriverContext来说明这个指针是如何被传递的。
1、 在执行USBDeviceAttach的函数中,函数ActivateDevice用来激活流接口,它将dwDriverContext的值写入注册表中。
2、 当dwDriverContext被写入注册表后,设备管理器会调用Cam_Init 函数。Cam_Init 函数执行后会从注册表取得dwDriverContext的值。
3、 应用程序使用CreatFile这个API时,驱动程序中的Cam_Open函数会被调用,Cam_Open执行时会获得Cam_Init 函数的到的dwDriverContext。CreatFile会得到Cam_Open返回的dwDriverContext。在应用程序中,dwDriverContext会以句柄的形式出现,这时应用程序就可以通过CreatFile返回的句柄来控制设备了。
4、 应用程序使用DeviceIoControl时会把CreatFile返回的句柄(其实就是dwDriverContext)传回给驱动程序的CAM_IOControl函数。
以上就是设备句柄在驱动程序与应用程序之间的传递过程。
分享到:
相关推荐
易语言取任意设备句柄源码,取任意设备句柄,取任意设备句柄_模块,释放设备句柄_模块,画图标_,取当前指针句柄_,取设备场景_,释放设备场景_
驱动保护进程 句柄降权 杀软自保 游戏破图标技术实现代码
用自带的手机USB驱动,用Window句柄获取驱动安装的按钮,实现自动安装
<br>说明: 压缩包中的“MySYS.sys”文件为测试驱动程序,支持加载、启动、停止、卸载驱动等功能,可以使用“Dbgview”工具查看驱动输出的提示信息。 -------------------------------------------------...
易语言取任意设备句柄源码。@易语言源码分享站。
易语言源码易语言取任意设备句柄源码.rar
查看句柄查看句柄查看句柄查看句柄查看句柄查看句柄
找了好久才找到的,用LabVIEW编写的,可以获取窗口句柄的一个函数,很好用
通过窗口句柄获得IWebBrowser2和IHTMLDocument2接口,里面是源代码,分享给大家
2012最好的 金鹰句柄搜索 他结合闪动句柄 为一身
游戏外挂 多开用的上 mutex 互斥体 game dll
VC中获取窗口句柄的各种方法
里面有窗口资源句柄的遍历 你们可以拿去用了 互相学习
Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...
窗口句柄获取及API的调用: .版本 2 .程序集 窗口程序集1 .子程序 _按钮_点击按钮_被单击 .局部变量 父窗口句柄, 整数型 .局部变量 编辑框窗口句柄, 整数型 .局部变量 按钮窗口句柄, 整数型 .局部变量 临时文本, ...
本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...
c# 句柄类库 .net操作句柄.自动生成查找句柄的类.很强悍
通过窗口标题获取句柄 import win32gui hld = win32gui.FindWindow(None,uAdobe Acrobat) #返回窗口标题为Adobe Acrobat的句柄 通过父窗口句柄获取子句柄 #parent为父窗口句柄id def get_child_windows(parent):...
资源介绍:通过句柄操作创建,发送文本消息,发送消息,禁止,可视,取标题, 取窗口风格,取窗口扩展风格,取当前句柄,取父句柄,取类名,取内容,取上一个句柄,取下一个句柄,取子句柄,通过标题创建,通标题...