设备扩展(DEVICE_EXTENSION)是与设备对象相关的另一种重要的数据结构。可以用它来保存与特定设备关联的信息。设备扩展其实只是一个未分页的池,由驱动开发者来定义它的大小和内容。并由I/O管理器自动把它分配给设备对象,即设备对象的PVOID DeviceExtension字段。由于此结构是驱动开发者自定义的,所以必须要让系统知道需要给此结构预留多少空间,因此要把设备扩展结构的大小作为参数传递给IoCreateDevice函数。I/O管理器的IoCreateDevice函数将为设备对象和设备扩展对象在非分页内存池内申请内存。

驱动的设备对象中有一个字段是设备扩展
该设备扩展的大小是不固定的,依据在创建设备对象时给定的大小分配内存
例如:

typedef struct _DEVICE_EXTENSION {ULONG number;PDEVICE_OBJECT pDevice;UNICODE_STRING ustrDeviceName; //设备名称UNICODE_STRING ustrSymLinkName;   //符号链接名
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
//创建设备对象
status = IoCreateDevice(    pDriver,    //驱动对象的指针sizeof(DEVICE_EXTENSION),  //为扩展设备分配的字节数,扩展设备是自己定义的数据结构,可以当做全局变量使用&DeviceName,         //该设备的名字,通过设备名来区分不同的设备FILE_DEVICE_UNKNOWN,  //设备的类型FILE_DEVICE_SECURE_OPEN, //大多数的驱动设备设置为此值FALSE,   //设备对象是否独占设备,大多数情况设置为FALSE  不独占&pDeviceObj          //返回来的设备对象指针);(PDEVICE

设备扩展(DEVICE_EXTENSION)相关推荐

  1. adrms移动设备扩展插件_如何在所有移动设备上扩展网站

    adrms移动设备扩展插件 我们大多数人都可以方便地访问互联网,上网购物,甚至使用我们的移动设备支付账单. 根据Forrester的一项研究, <数字商业势在必行> ,美国43%的银行客户 ...

  2. W806 SDIO 设备 扩展 荔枝派 V3s IO 使用

    全志V3s 不论焊接还是使用很方便,唯一缺点就是IO不够,偶然发现联德盛 W806 竟然自带SDIO 设备接口,当然肯定还有ESP32模块 也是带的(,这里并不适用),选择SDIO 优点是速度快,方便 ...

  3. Windows磁盘驱动基础教程

    本文讲述Windows磁盘驱动的主要结构功能与编写方法基础.本文描述的内容仅限于软件层面,并不与具体的硬件相关. 1.磁盘驱动基础 不少人把文件系统驱动和磁盘驱动混为一谈.实际上文件系统驱动应该与磁盘 ...

  4. 应用程序编程接口大全_应用程序编程接口101

    应用程序编程接口大全 Do apps like Uber, Pokémon Go and Zomato build their own maps to show where available car ...

  5. 程序员过失泄露代码违法吗_软件过失的23种模式

    程序员过失泄露代码违法吗 Ever since the Gang of Four came down from the mountaintop with their stone tablets, li ...

  6. 制作像UberEats和Deliveroo这样的移动应用程序需要多少钱

    Have you been into the food industry and planning to take your venture to the next level with on-dem ...

  7. [ZZ]Windows磁盘驱动基础教程

    本文讲述Windows磁盘驱动的主要结构功能与编写方法基础.本文描述的内容仅限于软件层面,并不与具体的硬件相关. 1.磁盘驱动基础 不少人把文件系统驱动和磁盘驱动混为一谈.实际上文件系统驱动应该与磁盘 ...

  8. 基于FileDisk介绍磁盘驱动程序

    搞了好久,怎么操作文件都总是进不去MJ_CREATE,没道理,所以找到一个好的资料分享一下,驱动界高人还是蛮多的,看懂这个代码,到时候自己写一个简化版的FILEDISK驱动玩玩,算是学了这么久驱动后的 ...

  9. Windows驱动开发 - 设备对象初步学习

    新建一个myhellodevice.c: 代码如下:makefile和sources如前文: #include <ntddk.h>#define NTDEVICE_NAME_STRING ...

最新文章

  1. P1223 排队接水
  2. 他考研3次,读博7年,英语极烂,却做出诺奖级成果,并获2020年度“菲列兹·伦敦奖”...
  3. SAP MM ME21N 创建委外采购PO报错 - Not possible to determine any components - 之对策
  4. Android Paint应用之自定义View实现进度条控件
  5. 共享文件夹的网络路径_Win10创建网络共享文件夹|设置局域网共享文件夹
  6. linux内存实验,LINUX编程-实验五 内存管理实验
  7. 新来的妹纸问我 AJAX 请求为什么不安全?没有回答出来。。。
  8. project设置6天工作制日历
  9. 安兔兔发布9月份Android性能榜:855霸榜,华为竟垫底
  10. xlsxwriter php,Xlsxwriter
  11. Python敏感词过滤DFA算法+免费附带敏感词库
  12. 最新QQ坦白说消息查看发送者
  13. qt自定义窗口标题栏
  14. 使用cp命令提示:略过目录...
  15. 一起学习log4cxx
  16. R语言中的Wilcoxon符号秩检验与配对学生t检验
  17. 计算机视觉、模式识别、机器学习常用牛人主页链接
  18. Python 医学知识图谱问答系统(一),建立医学知识图谱,基于neo4j知识图谱的医学问答体系
  19. Excel 2010 SQL应用116 分组统计之GROUP BY续
  20. 享元模式--大量的飞龙

热门文章

  1. it系统应急响应流程图_各类突发事件应急处置流程图,速看!
  2. 红米4刷linux,极客精神,国外大神将红米Note 7刷上了Ubuntu
  3. Word修改默认英文字体为Times New Roman
  4. 什么是嵌入式服务器?为什么使用嵌入式服务器?
  5. 放大器指标:1db压缩点
  6. 一元二次方程虚根求法java_请问怎么用C语言求一元二次方程的虚根
  7. ready和onload的区别
  8. 宽带连不上网原因及解决办法
  9. MATLAB之Nyquist图和Bode图
  10. 解决4K屏电脑显示问题