DEVICE_EXTENSION设备扩展
来源:互联网 发布:女性脂溢脱发 知乎 编辑:程序博客网 时间:2024/06/03 12:54
设备扩展(DEVICE_EXTENSION)是与设备对象相关的另一种重要的数据结构。可以用它来保存与特定设备关联的信息。设备扩展其实只是一个未分页的池,由驱动开发者来定义它的大小和内容。并由I/O管理器自动把它分配给设备对象,即设备对象的PVOID DeviceExtension字段。由于此结构是驱动开发者自定义的,所以必须要让系统知道需要给此结构预留多少空间,因此要把设备扩展结构的大小作为参数传递给IoCreateDevice函数。I/O管理器的IoCreateDevice函数将为设备对象和设备扩展对象在非分页内存池内申请内存。设备扩展一般要包括设备对象的反向指针、设备状态或驱动程序环境信息等,它的布局类似于如下结构:typedef struct tagDEVICE_EXTENSION {PDEVICE_OBJECT DeviceObject; // device object this extension belongs toPDEVICE_OBJECT LowerDeviceObject; // next lower driver in same stackPDEVICE_OBJECT Pdo; // the PDOIO_REMOVE_LOCK RemoveLock; // removal control locking structureUNICODE_STRING devname; . . . . . . } DEVICE_EXTENSION, *PDEVICE_EXTENSION;设备扩展的内容依赖特定的驱动程序,应该根据驱动程序的需要来定义。 设备扩展主要用来维护设备状态信息、存储驱动程序使用的内核对象或系统资源(如自旋锁)、保存驱动程序需要的数据等。由于大多数的总线驱动、功能驱动和过滤器驱动都要工作在任意线程上下文,即任意线程都可能成为当前线程,所以,设备扩展是保存设备状态信息和数据的主要空间。 每一个实现了ISR的驱动程序都要存储中断对象(一种内核对象)指针,大部分的驱动程序把它们存储在设备扩展里。每一个标准的驱动程序函数在接收一个IRP时,同时接收到的还有一个指向申请该IO操作的设备对象的指针,此函数能够通过此指针访问到相应的设备扩展。 另外,上一层的设备扩展都保存一个指向下一层设备对象的指针(如上述结构中的PDEVICE_OBJECT LowerDeviceObject字段)作为调用IoCallDriver函数的参数。转自:http://blog.csdn.net/hazy/archive/2005/09/15/481705.aspx
- DEVICE_EXTENSION设备扩展
- 获取设备扩展指针
- 设置设备扩展
- 理解设备扩展
- 8.2.2 应用设备扩展
- WDM中的结构(4)---设备扩展
- 字符设备驱动程序的扩展操作
- 关于设备扩展(DeviceExtention)的作用
- WDM中的结构(4)---设备扩展
- Linux设备驱动程序:gnu make 扩展语法
- AIR面向iOS设备的原生扩展
- 用裸设备扩展oracle表空间
- NT驱动使用设备扩展的例子
- 使用智能设备扩展在 C# 中开发自定义控件
- LDD - Ch05-字符设备驱动程序的扩展操作(转载)
- 智能设备扩展、SQL Server CE 和我
- C#:USB设备枚举(七)WPF扩展方法
- 10大最实用的Raspberry Pi扩展设备推荐
- 反正切查询表+指南针资料翻译
- AspNet提示
- java 对象序列化要序列化那些内容
- 杂项 (linux )
- 【转帖】启动JVM client模式 与 server模式的区别
- DEVICE_EXTENSION设备扩展
- Java实现文件名过滤
- QTableView根据内容自动调整列宽行高
- 最简单设置Mdi容器背景图片方法
- Jsp页面传值的方法(转自http://jzgl-javaeye.iteye.com/blog/372349#)
- 从FCKeditor中提取的常用js方法
- DOS设备驱动程序开发
- PostgresSQL数据库配置参数中文说明
- JS中2个等号与3个等号的区别