Запись в загрузочный сектор
Запись в загрузочный сектор
Запись в загрузочный сектор function WriteSectors(DriveNumber: Byte; StartingSector, SectorCount: DWORD; Buffer: Pointer; BytesPerSector: DWORD = 512): DWORD; var hFile: THandle; bw,TmpLo,TmpHi: DWORD; begin Result := 0; hFile := CreateFile(PChar('\\.\PhysicalDrive'+IntToStr(Driv eNumber)), GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_EXISTING,FI LE_ATTRIBUTE_NORMAL,0); if hFile = INVALID_HANDLE_VALUE then Exit; TmpLo := __Mul(StartingSector,BytesPerSector,TmpHi); if SetFilePointer(hFile,TmpLo,@TmpHi,FILE_BEGIN) = TmpLo then begin SectorCount := SectorCount*BytesPerSector; if WriteFile(hFile,Buffer^,SectorCount,bw,nil) then Result := bw; end; CloseHandle(hFile); end;