驱动开发函数详解之Wdm
驱动开发函数详解之Wdm
前言
- IRP(I/O Request Package) == 输入输出请求包
上层应用程序需要访问底层输入输出设备时,发出I/O请求,系统会把这些请求转化为IRP数据,不同的IRP会启动I/O设备驱动中对应的派遣函数。 - #pragma PAGEDCODE 将例程分配在分页内存中
1.PAGED_CODE_LOCKED(Wdm.h)
该宏断言:当前正在运行的代码节可分页,且在运行之前必须已锁定到内存中。
返回:VOID
可分页代码必须遵循某些限制 (如 IRQL < = APC_LEVEL) ,除非已将其锁定到位。
**必须锁定就位才能正常工作的可分页例程
**首先应该调用 PAGED_CODE_LOCKED。
2.PAGED_CODE(Wdm.h)
该宏确保:调用方的线程在 IRQL (足够低、允许分页)上运行。
3.锁定可分页代码或数据
许多内核模式的驱动程序没必要一直驻留在内存中,除非打开它们管理的设备;
另一种如:系统代码、应用程序代码或系统分页文件的磁盘的驱动程序必须始终驻留在内存中。
锁定:偶尔使用的设备,在使用时,通过在内存中锁定代码把该部分指定为可分页
。
- 将可分页代码隔离到一个命名部分&#x
驱动开发函数详解之Wdm相关推荐
- 15、Windows驱动开发技术详解笔记(11) 基本概念
9.Windows驱动程序的入口函数规定为_DriverEntry@8,所以用C++编写时要用extern. 驱动程序中,不能使用编译器运行时函数,甚至C语言中的malloc,C++的new函数都不能 ...
- 《Windows驱动开发技术详解》学习笔记
Abstract 如果推荐 Windows 驱动开发的入门书,我强烈推荐<Windows驱动开发技术详解>.但是由于成书的时间较早,该书中提到的很多工具和环境都已不可用或找不到,而本文 ...
- c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]
Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...
- 9、Windows驱动开发技术详解笔记(5) 基本语法回顾
5.在驱动中获取系统时间 1)获取启动毫秒数 在ring3 我们可以通过一个GetTickCount 函数来获得自系统启动开始的毫秒数,在ring0也有一个与之对应的KeQueryTickCount ...
- 《Windows驱动开发技术详解》读书笔记(一)
首先需要安装DDK,这里我选择Microsoft Windows Server 2003 SP1 DDK Windows驱动分成两类,一类是不支持即插即用的NT式驱动,一类是支持即插即用的WDM驱动. ...
- 字符设备驱动开发流程详解
字符驱动相关概念解析 一.驱动初始化 1.1分配设备描述结构 1.2初始化设备描述结构 1.3.注册设备描述结构 1.4.硬件初始化 二.实现设备操作 2.1open 2.2read 2.3.writ ...
- Linux内核开发函数详解
MKDEV 功能 将主.次设备号转换成dev_t类型 主设备号 major 次设备号 minor 头文件 定义在<linux/cdev.h>中的宏 MKDEV(int major,in ...
- 《Windows驱动开发技术详解》之HelloDDK
编写如下代码: 运行会报错: 这里的原因是有没有引用到的形参,需要添加如下代码即可: 记得在系统启动时按F8禁用掉数字签名: 将编译好的驱动拖入虚拟机,以管理员身份运行DbgView捕捉内核态输出数据 ...
- 《Windows驱动开发技术详解》之编程加载NT式驱动
之前我们加载驱动都是利用INSTDRV这个应用,其原理是在注册表中写入相应的字段,这一节我们手动编写代码去加载驱动,其原理类似: 设备驱动程序的动态加载主要由服务控制管理程序(Service Cont ...
最新文章
- 深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子
- win7怎么配置程序服务器错误日志文件,win7怎么配置程序服务器
- UWA官方Demo新增《小米超神》,全面揭秘重度手游的性能表现!
- junit4X系列--Builder、Request与JUnitCore
- 使用kibana和elasticsearch日志实时绘制图表
- CnCiswumWN
- 【求职英语】一些英语面试题整理
- mysql开启全局日志_mysql开启全局日志,通过每秒sql语句执行次数分析系统性能瓶颈...
- java根据ip获取经纬度城市地址
- 笨方法学python 习题31
- PIP卸载升级与安装不成功
- 最新服务器处理器天梯,服务器cpu天梯图2020 至强处理器天梯排名
- java审批工作流,值得一读!
- 学计算机的女生选择公务员还是考研,女生本科毕业!考研好,还是考公务员更好?...
- 招聘:赴微软工作SharePoint技术专家(V-,北京)
- 5.1劳动节|致敬每一位数字安全劳动者
- python 绘制折线图与柱状图
- 【PyTorch】高级神经网络结构
- 街道大动土,断网一周,学习计划照旧
- vue 前端中如何改变图标大小
热门文章
- 加拿大约克大学计算机本科学费,加拿大约克大学学费
- Redis禁用Config命令后SpringBoot启动报错:ERR config is disabled command
- 【JAVA长虹键法】第二式 单例模式(23种设计模式)
- QQ、阿里旺旺聊天记录无法显示的解决方法
- Ubuntu20.04 配置安装运行 Dave (水下SLAM 仿真环境)
- 杰理之微信语音使用耳机录音下,录音出来的语音开头有1s左右的滋滋声【篇】
- [附源码]JAVA+ssm基于Java的小型电子病历系统(程序+Lw)
- java 刽子手图像代码_闲来的代码:无主之地前传 头像及皮肤包SE代码——刽子手威尔海姆...
- Java数组:稀疏数组
- python设置坐标轴刻度值字体大小,刻度值范围,标签大小