![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows驱动开发
迪迦 • 奥特曼
C/C++ coder
展开
-
ReadFile WriteFile DO_DIRECT_IO 中的IRP操作
开头很重要的一句,我就在这里载坑了,kernel_address会直接与外面的buffer映射为同一部分,那么我们可以直接操这部分内存就行了。如果想保存,那直接保存kernel_address中的内容即可。kernel_address为外部内存对应的内核内存地址,实际上其实对应的为同一段物理地址Driver.h#pragma once// 用于包含ddk.h的头文件#ifdef __cplusplusextern "C"{#endif#include <ntddk.h&g原创 2022-03-21 22:06:33 · 577 阅读 · 0 评论 -
IRQL(多线程中断请求级别)
IRQLIRQL(Interrupt ReQuest Level)中断请求级别,什么是"中断"呢?中断就是硬件设备通过8259A中的中断控制器,向CPU发送的一个电信号,电信号表明中断控制码.CPU在收到电信号后就会停止正在执行的程序.识别控制码,根据中断码去中断向量表中找到对应的中断处理函数并执行,这时CUP就处于中断上下文中. 中断上下文就是系统代替硬件去做一些事情,进程上下文是系统代替进程做一些事情.进程上下文是可以睡眠的,但中断上下文不可以睡眠.中断又分为:外部中断和内部中断.由CPU内部引转载 2022-03-25 12:49:38 · 1984 阅读 · 0 评论 -
windows驱动编程中的DO_DIRECT_IO和DO_BUFFERED_IO的区别
这两种方式有什么区别?分别对应什么情况使用?DO_DIRECT_IO常用于传输大块的讲求速度的数据。从名称上也可以看出这是一种直接读写方式。DO_DIRECT_IO的效率较高(只需内存锁定即可),代价是牺牲物理内存。DO_DIRECT_IO主要用于使用DMA的底层驱动。Mass Storage也用。操作系统会将用户模式下的缓冲区锁住。然后操作系统将这段缓冲区在内核模式地址再次映射一遍。这样,用户模式的缓冲区和内核模式的缓冲区指向的是同一区域的物理内存。无论操作系统如何切换进程,内核模式地址都保持不变。转载 2022-03-22 11:07:04 · 598 阅读 · 0 评论 -
Win10(WIN7)开启或关闭测试模式
在WIN10上开发驱动,如果打开测式模式,那么驱动就可以不用签名就可以加载,方便我们的开发与测试。在命令行输入如下指令:Win10开启测试模式:bcdedit /set testsigning onwin10关闭测试模式bcdedit /set testsigning off所使用的系统版本:...转载 2022-03-17 16:38:25 · 1588 阅读 · 0 评论 -
Windows驱动开发错误:MSB8040 此项目需要缓解了Sprctre漏洞的库
VS2019编译WDK驱动时,出现如下错误:MSB8040 此项目需要缓解了Sprctre漏洞的库。从Visual Studio安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构哦安装它们。了解详细信息:http://aka.ms/Ofhn4c。解决方法:1、首先需要知道系统上安装的 MSVC 的最新版本。开始,打开“Visual Studio Installer”,进入“Visual Studio Installer”,点击Visual Studio Community 2019的“修转载 2022-02-22 14:34:03 · 3871 阅读 · 3 评论 -
Error 1275 - 此驱动程序被阻止加载
你可能在64位的机器上安装32位的驱动!!!换一个编译方式吧转载 2022-02-22 14:52:00 · 1373 阅读 · 0 评论 -
Windows驱动的Checked (chk)和Free(fre)区别
微软的驱动发布时一般有两个版本:chk和fre。chk表示Checked,fre表示Free。两者的区别在于,checked build有traces和asserts,而free build没有。简单而言,checked 就是debug,free就是release啦。转载 2022-02-23 10:22:34 · 544 阅读 · 0 评论