driver开发
文章平均质量分 76
Simple-Soft
VC 调试入门与提高
https://edu.youkuaiyun.com/course/detail/28915
Python PHP Windows Linux 内核 云计算
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Windows version
Building Drivers for Different Versions of Windowshttps://docs.microsoft.com/en-us/windows-hardware/drivers/develop/building-drivers-for-different-versions-of-windowsClient OS Server OSWindo...原创 2020-04-22 21:20:04 · 925 阅读 · 1 评论 -
IRQL Level
PASSIVE_LEVELAPC_LEVELDISPATCH_LEVELPage fault in PASSIVE_LEVELAPI IRQLMemory APIsExAllocatePoolWithTag &...原创 2020-04-22 21:19:17 · 368 阅读 · 0 评论 -
转载:谢谢原作者:块设备驱动实战基础篇三 (BIO请求回调机制)
1.5 块设备请求返回处理回调机制 本节我们继续完善1.4节中的代码,在上节我们完成了请求的过滤转发,那么请求被磁盘处理完成后返回回来的路径处理是怎样的,本节我们继续带着这样的问题再一次完善我们的驱动程序,通过本节的学习,我们能够真正掌握请求处理,转发过滤,请求完成后回调处理机制的完整学习。 先给出完善后的IO架构图,我们对比一下1.4节最后给出的图有何区别: 相比1.4节...转载 2018-08-23 10:22:06 · 592 阅读 · 0 评论 -
转载:谢谢原作者:块设备驱动实战基础篇四 (逐渐成型,加入ioctl通信机制)
1.6介绍一种内核与用户空间通信的方法-misc设备ioctl机制块设备驱动开发中往往需要配合用户态的管理程序工具,管理我们的块设备,此时我们需要涉及用户空间程序与块设备通信的方法,ioctl机制就是接下来需要学习和实战的,通过ioctl机制,用户态负责发送各种命令给内核驱动;内核态接收用户态发送的命令,并根据命令执行相应的动作,如下图所示。 ioctl提供用户态程序使用内核态函数...转载 2018-08-23 10:23:02 · 207 阅读 · 0 评论 -
Linux kmap和kmap_atomic解析
名为解析,名不符实,简单记录一下。kmap函数将分配到的高端内存映射到永久内存映射区域.。kmap函数不能用于中断处理程序, 因为它可能进入睡眠状态。上面内容引用自https://blog.youkuaiyun.com/gatieme/article/details/52705178kmap_atomic用于高端内存映射,用于紧急的,短时间的映射,它没有使用任何锁,完全靠一个数学公式来避免...原创 2018-08-28 10:05:35 · 4836 阅读 · 0 评论 -
Linux 如何获取PAGE size的大小?
在Linux中,可以通过命令getconf PAGESIZE 或者 getconf PAGE_SIZE来获得系统的PAGE size大小。在内核中,有一个宏PAGE_SIZE,可以直接是用这个宏来获得PAGE SIZE的大小。在应用层,可以使用getpagesize()来获得 ...原创 2018-08-28 11:02:08 · 18769 阅读 · 1 评论 -
BIO bi_sector submit_bio make_request_fn
BIO结构中有一个很重要的字段叫做bi_sector,在高版本中这个字段已经叫bi_iter.bi_sector了,这个不是重点,重点是下面要说的。当读写一个block device的时候,会提交一个bio数据结构给make_request_fn,那么这个bio结构中的bi_sector到底表示什么意思呢?在bio.h中有这么一行注释sector_t bi_sector;...原创 2018-08-31 10:54:43 · 1763 阅读 · 0 评论 -
Linux dmesg显示可读时间方式
直接用dmesg显示系统信息,很难看[95721.670025] snapshot device recevied [read] io request, access on dev sector[272], length is [240] sectors.[95721.670363] device is closed[95721.693207] device is closed显示的时间...原创 2018-08-31 18:02:58 · 45789 阅读 · 1 评论 -
NTSTATUS
Values are 32 bit and are laid out as follows. The following diagram is independent of endianness; that is, the diagram is shown in host byte order and merely shows the layout of the numbering space....原创 2018-09-12 14:26:20 · 1134 阅读 · 0 评论 -
NTSTATUS Values
By combining the NTSTATUS into a single 32-bit numbering space, the following NTSTATUS values are defined. Most values also have a defined default message that can be used to map the value to a human-...原创 2018-09-12 14:27:52 · 3470 阅读 · 0 评论 -
如何统统扩充loop设备的size(linux loop resize2fs)
我们知道,在Linux系统中,可以使用一个文件作为一个磁盘,并且可以对这个文件进行格式化,mount等操作,就完全像一个真正的磁盘一样。下面来使用一个文件制作loop设备,并且mount起来,在其空间不够的时候在进行online扩展空间。步骤:1.创建一个文件,大小为2G。dd if=/dev/zero of=loop.dat bs=1M count=20482.对loop.d...原创 2018-10-06 16:55:27 · 4038 阅读 · 0 评论 -
数据备份,数据保护中的稳定点(in-consistent, crash-consistent, application-consistent)
什么是数据保护的稳定点?比如平时我们用copy命令或者在资源管理器中进行文件拷贝,如果拷贝的文件是正在变化修改的,那么我们拷贝出来的文件就是一个不稳定的状态,可以称之为in-consistent。为什么说是不稳定的呢?比如说我们要拷贝一个目录下的所有文件,假设这些文件都在被改变,那么我们用copy命令拷贝出来的这些文件的时间戳会是不一样的,copy命令只管拷贝。那么怎样才能做到一个稳定点呢...原创 2018-10-23 10:28:16 · 1090 阅读 · 0 评论 -
Android华容道之一步一步实现-4-图像块移动算法
下一个关键点就是图像块的移动,以如图为例。假设空格处于第二行第三格,那么此时只有触摸第二行以及第三列的图像块的时候才需要移动图像块,因为别的图像块不能移动。当触摸发生在合法的图像块的时候,即上面图中的十字交叉黑线区域,则有四种情况出现,即移动图像块有四种可能,向上,向下,向左,向右。比如手指触摸在7号图像块,这7号图像块只能向左移动,别的图像块都不用移动。再比如手指触摸在...原创 2019-04-16 10:15:05 · 858 阅读 · 0 评论 -
转载:谢谢原作者: 块设备驱动实战基础篇二 (继续完善170行过滤驱动代码至200行)
1.3块设备驱动关键数据结构及函数API详细剖析经过上节四个步骤我们已经熟悉并实战了一个最基本的过滤块设备驱动的设计技巧,我们这一节先不继续实战,我们本节把上节170行代码中接触到的块设备核心数据结构和API接口剖析一下,把这部分掌握和理解一下。 我们把上节涉及的六个数据结构和相关API接口罗列一下: 块设备核心数据结构 gendisk 块设备仓库...转载 2018-08-23 10:21:15 · 217 阅读 · 0 评论 -
转载:谢谢原作者:块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动)
1 内核块设备驱动基础学习与实战1.1 设备驱动IO架构初探 操作系统是如何将数据读到缓冲区的,发生了什么?我们带着这样的问题,粗略走一下read调用系统过程,希望这个初探,可以唤起大家研究操作系统内核的好奇心和兴趣,并以此为例,让我们先初步对请求在过滤块设备驱动中的处理过程有个大概印象和了解。 块设备在整个Linux中应用的总体结构图如下: 从上图可以看出,块...转载 2018-08-23 10:19:55 · 220 阅读 · 0 评论 -
Linux kernel block device 的 submit_bio 都做了什么?
先看看原型申明:void submit_bio(int rw, struct bio *bio)其中rw 代表是读还是写bio 描述这个I/O的结构最后submit_bio调用generic_make_request(bio);去完成真正的IO请求。需要注意一点的是,bio结构里面有一个很重要的字段struct block_device *bi_bdev;这个...原创 2018-08-23 10:09:30 · 1956 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step (3) - 查看运行结果
除了调试driver之外,诊断driver问题还有很重要的原创 2014-08-24 10:44:56 · 1782 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step (2) - 编译,部署,运行
一个基本的mini filter项目创建好了以后,就可以编译,部署和原创 2014-08-24 08:13:02 · 2088 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step (4) - 获取文件名
mini filter驱动一般用于杀毒,加密,数据实时备份原创 2014-08-30 20:36:57 · 1349 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step (5) - 读写文件
在kernel中读写文件要比在应用层麻烦原创 2014-09-03 21:08:48 · 1836 阅读 · 1 评论 -
Visual Studio 2013开发 mini-filter driver step by step 获取可执行文件名称 - 实现process monitor的一个功能 (10)
国庆就要结束了,遗憾一下:)原创 2014-10-07 18:06:29 · 975 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step 获取文件读写内容(6)
由于后面的内容跟Visual Studio已经没有太大关系,故文章去掉Visual Studio前缀。原创 2014-09-07 16:38:11 · 1231 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step 内核中使用线程(7)
在内核中使用线程,其过程和在应用层中使用线程基本类似,原创 2014-09-21 10:24:56 · 782 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step 应用层与内核通讯(8)
应用层与内核通讯是通过通讯端口来进行的,下面的这个API就是内核原创 2014-09-21 10:33:47 · 1776 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step 内核代码段分页alloc_text的使用(9)
在内核代码中经常会看到下面这样的代码:#pragma alloc_text(INIT, DriverEntry)#pragma alloc_text(PAGE, SSMFUnload)#pragma alloc_text(PAGE, SSMFInstanceQueryTeardown)#pragma alloc_text(PAGE, SSMFInstanceSetup)#pra原创 2014-09-21 10:53:27 · 1057 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step (11) driver 签名
在windows vista以后的版本,driver必须签名才能原创 2014-10-26 10:55:35 · 968 阅读 · 0 评论 -
如何备份被独占文件?
如何备份被独占文件原创 2014-11-13 14:49:09 · 1557 阅读 · 0 评论 -
关于BIO结构分析
struct bio { sector_t bi_sector; /* 本次IO操作的其实扇区,扇区都是512字节大小 */ struct bio *bi_next; /* 用于链接处于同一个request中的BIO */ struct block_device *bi_bdev; /* 该bio所请求的块...原创 2018-08-11 14:27:51 · 4824 阅读 · 0 评论 -
Linux kernel filp_open解析
/** * filp_open - open file and return file pointer * * @filename: path to open * @flags: open flags as per the open(2) second argument * @mode: mode for the new file if O_CREAT is set, ...原创 2018-08-26 18:18:48 · 9263 阅读 · 0 评论 -
Visual Studio 2013开发 mini-filter driver step by step (1) - 创建 mini filter driver 工程
Visual Studio 2013终于集成了Driver的开发和原创 2014-08-10 14:59:31 · 1519 阅读 · 2 评论
分享