hdtune扫硬盘坏道,很慢。为了让它可以从某个位置开始,调了一下:
004089F5 . 57 PUSH EDI ; /lParam 004089F6 <blockpos> . 8B7C24 1C MOV EDI,DWORD PTR SS:[ESP+1C] ; | 004089FA . 8946 1A MOV DWORD PTR DS:[ESI+1A],EAX ; | 004089FD . 57 PUSH EDI ; |wParam 004089FE . 68 0E040000 PUSH 40E ; |Message = WM_USER+14. 00408A03 . 51 PUSH ECX ; |hWnd 00408A04 . FF15 FC964700 CALL DWORD PTR DS:[4796FC] ; \SendMessageA |
在 blockpos处,修改esp+1c里的值,就可以了。
总的来说,hdtune把硬盘分为很多个格子,每行50个,总共有很多行。每一个小格扫完后,就发送这个自定义的消息 WM_USER+14来通知主线程画一个色块。绿色表示无问题,红色表示有问题。运行到blockpos这一行时,把这个值改掉,即可定义到第n个格子。第0个为左上,第49个为第一行最后一个,依此类推。