内核直接读取硬盘固定扇区的代码
-
2023-05-18 05:17:10
- 来源:网络
-
在手机上看
扫一扫立即进入手机端
块缓存 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);
相关资讯
更多游戏推荐
-
有道爱乐软件
中文|389.2M
-
S.M.A.R.T硬盘检测工具(crystaldiskinfo)
中文|5.9M
-
SSD-Z固态硬盘检测软件
中文|416KB
-
超级硬盘数据恢复软件官方版(superrecovery)
中文|1.9M
-
硬盘分区管理软件(MakeDisk)
中文|10.5M
-
智堡Wisburg
中文|40.8M
-
有道爱乐软件
中文|389.2M
-
Linux Kernel (最新版Linux内核)
中文|113.8M
-
360安全浏览器内核Chromium 86
中文|84.6M
-
GPS手机导航软件
中文|153.1M
-
Infinity游戏官方版
中文|277M
-
115网盘pc电脑版
中文|109.4M
-
有道爱乐软件
中文|389.2M
-
汉字大冒险app官方版
中文|202.3M
-
烹饪队罗杰的餐厅
中文|94.44MB
-
诸神的谎言九游手游
中文|89.1M
-
飞翔关机精灵(自动关机软件)
中文|13KB
-
驱动精灵万能网卡绿色免安装版
中文|
-
精灵音乐启蒙
中文|97.7M
-
驱动精灵最新版
中文|
-
信安ca证书小精灵社保专用版
中文|
-
驱动精灵纯净版绿色单文件
中文|
-
消消英雄
中文|347.1M
-
红色警戒2共和国之辉1.006英雄版
中文|512M
-
遥控英雄
中文|75.3 MB
-
超级火柴人英雄大乱斗
中文|66.75MB
-
蜘蛛侠英雄3D
中文|40.84MB
-
宝宝巴士宝宝救灾英雄
中文|91.9M
-
小学语文识字课堂
中文|196M
-
上海交管12123客户端
中文|67.6M
-
火绒互联网安全软件
中文|22.1M
-
音乐标签
中文|4M
-
链式自行车赛车(Chained Bikes Racing 3D)
中文|35.7M
-
保悦得商城手机版
中文|66.2M
-
屠龙战神神兽
中文|2.00MB
-
.NET代码保护工具.NET Reactor
中文|7.3M
-
hbuilder代码编辑器
中文|258.6M
-
狩猎之神游戏
中文|44.5M
-
暗黑破坏神2字体美化补丁
中文|45M
-
Dazz复古胶片相机
中文|51.2M
-
屠龙战神神兽
中文|2.00MB
-
S.M.A.R.T硬盘检测工具(crystaldiskinfo)
中文|5.9M
-
图吧工具箱(硬件检测工具箱)
中文|140M
-
AIDA64全家桶四版本PC硬件检测工具
中文|147.6M
-
SSD-Z固态硬盘检测软件
中文|416KB
-
超级硬盘数据恢复软件官方版(superrecovery)
中文|1.9M
-
荒野战争模拟行动
中文|188 MB
-
TFit手环app
中文|56.8M
-
木木语音
中文|186.1M
-
建行安心养老平台
中文|50.9M
-
课本通小学语文学习平台
中文|48.6M
-
糖豆广场舞电脑客户端
中文|11.7M
-
汉字大冒险app官方版
中文|202.3M
-
有道爱乐软件
中文|389.2M
-
烹饪队罗杰的餐厅
中文|94.44MB
-
可爱女友的获取方法
中文|74.11MB
-
汉字大冒险app官方版
中文|202.3M
-
有道爱乐软件
中文|389.2M
-
烹饪队罗杰的餐厅
中文|94.44MB
-
猎码安卓中文开发工具
中文|852.7M
-
儿歌点点2022最新版
中文|47.5M
-
暗黑破坏神2字体美化补丁
中文|45M
-
狂飙破坏王游戏
中文|89M
-
无敌破坏王赛车
中文|61.42MB
-
芒果TVwin10版
中文|36.8M
-
飞仙诀之斗罗传奇手游最新版
中文|114.0M
-
索尔加德传奇游戏手机版
中文|144.4M
-
斯柯达车机互联app
中文|208.2M
-
phpmaker 2022中文版
中文|39.2M
-
中国人寿综合金融
中文|52.9M
-
街机拳皇全集(带金手指)
中文|311M
-
ai免费证件照2022最新版
中文|30.2M
-
免费动画壁纸app
中文|57.2M
-
潮图文案官方版
中文|33.6M
-
罗技Logitech G HUB
中文|
-
儿童涂色板APP
中文|37.0M
-
月子食谱怀孕育儿
中文|13.1M
-
看漫画最新版
中文|101.1M
-
典读(经典文学免费阅读)
中文|53.5M