首页
社区
课程
招聘
[求助]DeviceIoControl可以读取硬盘的信息吗?
发表于: 2009-5-22 16:10 4446

[求助]DeviceIoControl可以读取硬盘的信息吗?

2009-5-22 16:10
4446
1000206C    FF15 88400010   call    dword ptr [<&KERNEL32.DeviceIoControl>]             ; kernel32.DeviceIoControl

0012E1A8   0000013C  |hDevice = 0000013C (window)
0012E1AC   00222018  |IoControlCode = 222018
0012E1B0   0012E1F0  |InBuffer = 0012E1F0
0012E1B4   00000E00  |InBufferSize = E00 (3584.)
0012E1B8   0012E1F0  |OutBuffer = 0012E1F0
0012E1BC   00000E00  |OutBufferSize = E00 (3584.)
0012E1C0   0012E1CC  |pBytesReturned = 0012E1CC
0012E1C4   00000000  \pOverlapped = NULL

我查了一下
有人说确实是可以读取里面有了指令了?
那InBuffer 就是指令吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
通常Inbuffer是参数,ControlCode才是指令
2009-5-22 17:16
0
雪    币: 738
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
也许是对这个不了解了 。

我有一个疑问它如果是读取硬盘的信息的话,应该说告诉从哪里开始?但我在这里没有看到有这样的信息。

还是在DeviceIoControl没有这么一说
2009-5-22 17:34
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
返回的信息一般在OutputBuffer中,至于它的格式和意义就要看具体的ControlCode了
2009-5-22 17:44
0
雪    币: 738
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ControlCode 分解开来就是这样的:
Device Value: 0x223   
Function Value: 0x910   
Access Value:  0x1 (FILE_READ_ACCESS)
Method Value: 0x0  (METHOD_BUFFERED)

可以解释一下吗?
2009-5-22 17:48
0
雪    币: 738
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我的理解是
它对应的设备是0x900,
访问方式是:文件读取
方法是:"缓冲"方法

结合最上面的 0012E1F0既是输入值 也是 输出值 ,

但是,后来的数据却不在这个地址里
2009-5-22 18:07
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
7
学好基础很重要,在正常机器上这个io control code什么也不是
2009-5-22 18:22
0
雪    币: 738
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
qihoocom 说的对我确实是感觉基础太差了。  所以才要努力的学一些。
2009-5-22 18:29
0
游客
登录 | 注册 方可回帖
返回
//