(42)驱动中使用全局变量
一、现象
我在编写驱动中发现,使用全局变量或static变量,它们的地址是会变的。
全局变量每次调用驱动函数都会重新初始化。
我试图在 IRP_MJ_DEVICE_CONTROL 处理函数中定义一个 static 变量,然后发现每次执行函数时,static变量的值都是0.于是我打印了变量的地址,发现确实每次调用都会变。
本文只是介绍了这种现象,背后的原因我不清楚,如果以后弄明白其中原因,我会在此补充。
二、替代方法
调用 IoCreateDevice 创建设备时,第二个参数是设备扩展内存的大小,传一个值进去,就会给设备分配一块非页面内存。
status = IoCreateDevice(gFileSpyDriverObject, //DriverObjectsizeof(FILESPY_DEVICE_EXTENSION), //DeviceExtensionSizeNULL, //DeviceNameDeviceObject->DeviceType, //DeviceType0, //DeviceCharacteristicsFALSE, //Exclusive&newDeviceObject); //DeviceObject
接下来在驱动的任何地方,都可以使用这块内存。
(42)驱动中使用全局变量相关推荐
- [转](42)驱动中使用全局变量
一.现象 我在编写驱动中发现,使用全局变量或static变量,它们的地址是会变的. 全局变量每次调用驱动函数都会重新初始化. 我试图在 IRP_MJ_DEVICE_CONTROL 处理函数中定义一个 ...
- Linux字符驱动中动态分配设备号与动态生成设备节点
在编写Linux内核驱动程序的时候,如果不动态生成设备号的话,需要自己手动分配设备号,有可能你分配的设备号会与已有设备号相同而产生冲突.因此推荐自动分配设备号.使用下面的函数: int alloc_c ...
- linux 设备驱动阻塞,详解Linux设备驱动中的阻塞与非阻塞
「阻塞与非阻塞定义」阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作.被挂起的进程进入sleep 状态,被从调度器的运行队列移走,直到等待的条件被满足. 非阻塞 ...
- 在JavaScript函数中定义全局变量
是否可以在JavaScript函数中定义全局变量? 我想在其他函数中使用trailimage变量(在makeObj函数中声明). <html xmlns="http://www.w3. ...
- Keyboard驱动中button中断的处理机制
Keyboard驱动中button中断的处理机制 ********************************LoongEmbedded************************ 作者:Lo ...
- linux 两个驱动 竞态,第7章 Linux设备驱动中的并发控制之一(并发与竞态)
本章导读 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态(竞争状态). Linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景. 7.1讲解了并 ...
- Windows编程—Windows驱动中定时器的使用
文章目录 Windows编程-Windows驱动中定时器的使用 前言 代码 简单版 升级版 程序效果 Windows编程-Windows驱动中定时器的使用 前言 定时器操作是应用编程中非常常见的操作, ...
- NAT在NDIS中间层驱动中的实现
1.概要 相信在IPv6的时代到来之前,NAT仍然是解决大多数人上网的主要途径,而且它在企业内网Intranet中也扮演着十分重要的角色. NAT的全称是Network Address Transla ...
- 【转帖】NAT在NDIS中间层驱动中的实现
1.概要 相信在IPv6的时代到来之前,NAT仍然是解决大多数人上网的主要途径,而且它在企业内网Intranet中也扮演着十分重要的角色. NAT的全称是Network Address ...
最新文章
- python面试题及答案-50道Python面试题集锦(附答案)
- [转]12种JavaScript MVC框架之比较
- 2020-12-14 Python PyCharm新建项目自动添加介绍和utf-8编码
- docker修改容器映射的端口_解密 Docker 挂载文件,宿主机修改后容器里文件没有修改...
- timm 视觉库中的 create_model 函数详解
- C++教程[又能学英文,又能学编程]
- java string 加密_java字符串加密解密
- 利用ajax,巧妙的sql语句组合,轻松做出不错的树型菜单
- MySQL group by语句用法
- 2022年3月26日 张量-外积
- 如何区分线性系统与时变系统
- 昆德拉访谈录(1984年2月)
- Python使用超级鹰识别验证码
- 当代计算机科学的先驱John Todd逝世
- 论项目管理中的量化管理
- 线性回归中常见的一些统计学术语(RSE RSS TSS ESS MSE RMSE R2 Pearson's r)
- python高精度乘法_洛谷P1919--A*B Problem升级版(NTT优化高精度乘法)
- 数据文件检验坏块的利器-dbv
- python快速排名seo代码_seo评价机制图(python快速排名seo)
- 使用 @Transactional 时常犯的N种错误
热门文章
- python引用类 魔法方法_Python 学习笔记 -- 类的魔法方法
- python datetime格式转换_分别用Excel和python进行日期格式转换成时间戳格式
- 光栅衍射主极大个数_光栅的分类及常规指标介绍
- Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略
- 成功解决OpenCV Error: Assertion failed (ssize.width 0 ssize.height 0) in cv::resize, file C:\proj
- Matlab:成功解决引用了已清除的变量 handles
- springMVC自定义方法属性解析器
- CentOS 安装MySQL rpm方式安装
- dockerfile centos+jdk+时区设置
- 带有权重的服务器SLB的实现