内核直接读取硬盘固定扇区的代码
- 2023-05-31 05:05:33
- 来源:网络
- 在手机上看
扫一扫立即进入手机端
块缓存 struct buffer_head 用来保存从磁盘读取到的数据,而 struct page 是文件的缓存,在文件层面上的数据会缓存到page里,所以内核里直接读取某个固定的扇区可以利用 struct buffer_head,读取的速度会快一些;以下是实现的代码:
#include <linux/module.h>
#include <linux/init.h>
#include
#include
#include
#include
#include
#include
#include
#include
#include
static int set_size = 512;
static int nr = -1;
static char *devn = “/dev/sda“;
module_param(set_size,int,S_IRUGO);
MODULE_Parm_DESC(set_size,“how many bytes you want to read,not more than 4096“);
module_param(nr,long,S_IRUGO);
MODULE_Parm_DESC(nr,“which sectors you want to read“);
module_param(devn,charp,S_IRUGO);
MODULE_Parm_DESC(devn,“which device“);
MODULE_LICENSE(“GPL“);
static struct block_device *bdev;
static char *usage = “You can change the value:set_size nr devn“;
static int __init init_read(void)
{
struct buffer_head *bh = NULL;
int size;
if(nr == -1)
{
printk(“Using this programm,you need set \“nr\“\n“);
printk(“%s\n“,usage);
return -1;
}
#p#副标题#e#
printk(“read disk\n“);
bdev = open_bdev_excl(devn,0x8000,NULL);
if(IS_ERR(bdev))
{
printk(“open failed\n“);
return PTR_ERR(bdev);
}
size = bdev_hardsect_size(bdev);
printk(“size = %d\n“,size);
if(set_blocksize(bdev,set_size)){
printk(“set block size error\n“);
return -1;
}
/* read disk */
bh = __bread(bdev,nr,set_size);
if(bh == NULL)
return 0;
//if you want to modify the disk contents,do this operations
memset(bh->b_data,0x30,set_size);
set_buffer_uptodate(bh);
/* write disk */
mark_buffer_dirty(bh);
if(bh)
brelse(bh);
return 0;
}
static void __exit exit_read(void)
{
printk(“exit\n“);
close_bdev_excl(bdev);
}
module_init(init_read);
module_exit(exit_read);
相关资讯
更多游戏推荐
-
兼职君
中文|10.11MB
-
SSDlife pro(固态硬盘检测)
中文|1.9M
-
CrystalDiskMark(测试硬盘读写速度)
中文|3.6M
-
CrystalDiskInfo(硬盘信息检测工具)
中文|5.9M
-
Primo Ramdisk内存虚拟硬盘软件
中文|6.4M
-
宝宝巴士之宝宝甜品店最新版本
中文|138.1M
-
兼职君
中文|10.11MB
-
360安全浏览器内核Chromium 86
中文|84.6M
-
汉仪平安行繁字体
中文|3.4M
-
AIZO运动健康app
中文|40.1M
-
红色警戒2共和国之辉1.006英雄版
中文|512M
-
火柴人流放英雄
中文|64.09MB
-
洛雪音乐助手桌面版
中文|84.2M
-
拼多多管理后台客户端
中文|135.3M
-
小萨管家
中文|73.1M
-
僵尸大楼逃生
中文|62.96MB
-
武器克隆大师
中文|145.22MB
-
暗巷QQ空间留言删除助手
中文|528KB
-
virtualbox 64位中文便携版
中文|113.8M
-
005微信编辑器
中文|24.9M
-
尚维国际云视通电脑客户端CMS
中文|43.7M
-
.net混淆器汉化版(dotNET Reactor)
中文|2.5M
-
罗技g27方向盘驱动64位系统
中文|
-
巨婴国PDF
中文|1.8M
-
fanbook官方正版app
中文|232.8M
-
Logo生成器app
中文|45.6M
-
长北题库手机版
中文|36.1M
-
小米超神手游正式版
中文|1.10G
-
宝宝巴士奇妙昆虫日记
中文|90.1M
-
五子棋PC游戏(支持单机和在线人机对弈)
中文|320KB
-
腾讯qq绿化清爽版
中文|184.4M
-
极客狗装机大师一键重装系统
中文|30M
-
踩紧油门使劲冲最新版
中文|64.8M
-
及思地图app
中文|66.2M
-
之江汇互动课堂教学软件
中文|203M
-
宝宝早教学形状手机版
中文|14.5M
-
每日付收款码
中文|24.4M
-
UP运动app
中文|88.2M
-
影子app
中文|160.8M
-
咿呀画画官方版
中文|61.0M
-
巨婴国PDF
中文|1.8M
-
fanbook官方正版app
中文|232.8M
-
Logo生成器app
中文|45.6M
-
长北题库手机版
中文|36.1M
-
小米超神手游正式版
中文|1.10G
-
牵心摄像头app专业版
中文|102.6M
-
调整笔记本电脑亮度(Adjust Laptop Brightness)
中文|247KB
-
ECTRI健身系统
中文|82.8M
-
途家民宿最新版本
中文|81.6M
-
极品五笔输入法86版
中文|2.5M
-
BIGEMAP GIS Office全能版
中文|33.3M
-
兼职君
中文|10.11MB