3mile 发表于 2010-8-26 17:08:51

回复 15# C.L
的确,写硬盘是非常危险的。
但是水能载舟亦能覆舟,加上阅读权限吧。阅读权限设得高点,至少100以上。
让大家(其实是指我自己)有升级的冲动。
让我努力提高吧。

C.L 发表于 2010-8-26 17:12:09

本帖最后由 C.L 于 2010-8-26 17:20 编辑

回复 16# 3mile
好吧,我也觉得应该设一下阅读权限,要是不懂的人拿来乱搞,说不定会出什么事情,不过阅读权限设50好了,高级会员可以看到,毕竟能升到高级会员的,应该多少会懂得一点的

找不到设置权限,倒是有个积分限制的,那就设500积分好了,和权限50是对等的吧

afan 发表于 2010-8-26 17:23:13

NB得很,看得我蛋疼…
又多了个搁置的项目…

itljl 发表于 2010-8-26 18:21:37

权限太大了,看不了。

xsjtxy 发表于 2010-8-26 18:27:19

楼上的,你快了啊。还有30分升级。
我大概明年就能看到了。伤心啊。
如果能直接写扇区是不是可以不挂载盘符。直接读写。防止分区里面的东西中毒?

C.L 发表于 2010-8-28 14:02:38

回复 20# xsjtxy


如果能直接写扇区是不是可以不挂载盘符。直接读写。防止分区里面的东西中毒?

理论上是可以的,不过现在有个技术问题没有得到解决,就是大于4G的扇区指针不能正确的没置。

itljl 发表于 2010-8-28 14:31:17

学习一下,但无法查看。

C.L 发表于 2010-8-28 14:34:11

回复 22# itljl

为了安全考虑,不得不设个权限,不方便之处,请谅解
不过你的积分也差不多,加把劲就可以了,呵呵~~

itljl 发表于 2010-8-28 14:36:14

回复 23# C.L


    大哥,我已经很努力了,可是权限还差得远。可以再低一点吗?
需要这个代码,主要是帮一个朋友检测和备份一下他的MBR,谢谢。

pusofalse 发表于 2010-8-28 14:42:00

Func _NtSetInformationFile($hFile, $iInfoClass, $vBuffer, $iBuffer, $sBufferType = "ptr")
      Local $iResult, $tStatus, $pStatus
        $tStatus = DllStructCreate("ubyte Status")
        $pStatus = DllStructGetPtr($tStatus)

        $iResult = DllCall("Ntdll.dll", "dword", "NtSetInformationFile", "handle", $hFile, _
                        "ptr", $pStatus, $sBufferType, $vBuffer, "ulong", $iBuffer, _
                        "dword", $iInfoClass)
        Return SetError($iResult, 0, $iResult = 0)
EndFunc        ;==>_NtSetInformationFile


#include <SetupAPI.au3>

$hFile = _CM_Create_File("\\.\PhysicalDrive0", 0xC0000000, 3, 0, 3, 0)
_NtSetInformationFile($hFile, 14, 1024 * 1024 * 1024 * 7, 8, "int64*")

$pBuffer = _CM_Heap_Alloc(512)
_CM_Read_Device($hFile, $pBuffer, 512)
_CM_Close_Handle($hFile)
$tBuffer = DllStructCreate("byte Binary", $pBuffer)

MsgBox(0, @Extended, DllStructGetData($tBuffer, "Binary"))
偏移7G。

itljl 发表于 2010-8-28 14:45:01

回复 25# pusofalse


    弱弱的请教一下,这里的7G,4G指的磁盘的大小?还是文件大小?Thanks

pusofalse 发表于 2010-8-28 14:48:15

回复 26# itljl


    偏移指针,即从7G处开始读取。

C.L 发表于 2010-8-28 15:03:09

回复 25# pusofalse

很强大的代码,学习了,上次P版说过了这个函数,还没有空去研究,现在P版的研究成果放出来了,感谢P版。
有代码了,可得要仔细的了解一下NtSetInformationFile()这个函数的作用,呵呵~~

yejier 发表于 2010-8-28 20:35:22

这么高级的东西 没有权限看郁闷加强发帖

C.L 发表于 2010-8-28 22:31:24

回复 25# pusofalse

再次感谢P版,已解决4G限制的问题,经过测试,现在更改后的代码可以读取大小为500G硬盘内的任意的扇区,现在AU3理论上、技术上已经可以任意读取分区表,PBR,EBR,FAT表,$MFTMirr,$Volume等特殊文件和任何的扇区上的普通文件,应该可以算是一个突破吧~~ 呵呵~
   
代码现在还不是太成熟,暂不放出。
页: 1 [2] 3 4 5 6 7 8
查看完整版本: 请教如何用纯AU3读取物理磁盘扇区--主要用于备份MBR