https://ibb.co/n81VH5Mm
Habe gestern noch damit gearbeitet ohne probleme.

Code: Alles auswählen
Procedure.l OpenPhysicalDisk(PhysicalDiskId.l, WritePermission.l)
;Get an handle to work with a physical disk
Protected zDisk.s{20}
zDisk = ReplaceString(zDisk, " ", Chr(0))
zDisk = "\\.\PhysicalDrive" + Str(PhysicalDiskId) ;Physical disk aka "\\.\PhysicalDrive0"
If WritePermission ;Read & Write
ProcedureReturn(CreateFile_(zDisk, #GENERIC_READ | #GENERIC_WRITE, #FILE_SHARE_READ | #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, 0, 0))
Else ;Read only
ProcedureReturn(CreateFile_(zDisk, #GENERIC_READ, #FILE_SHARE_READ | #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, 0, 0))
EndIf
EndProcedure
Code: Alles auswählen
Procedure.q DiskRead(hDisk.i, BlockIndex.q, psBuffer.i, BufferLen.l)
;Disk read procedure
Protected FilePointer.q
Protected NewFilePointer.q
Protected BytesReturned.l
FilePointer = BlockIndex * #BlockSize
SetFilePointerEx_(hDisk, FilePointer, NewFilePointer, #FILE_BEGIN)
If ReadFile_(hDisk, psBuffer, BufferLen, @BytesReturned, 0)
ProcedureReturn(BytesReturned)
EndIf
EndProcedure
Procedure.q DiskWrite(hDisk.i, BlockIndex.q, psBuffer.i, BufferLen.l)
;Disk write procedure
;Achten Sie darauf, dass Ihre Festplatte nicht beschädigt wird, wenn Sie dieses Verfahren anwenden.
Protected FilePointer.q
Protected NewFilePointer.q
Protected BytesWritten.l
FilePointer = BlockIndex * #BlockSize
SetFilePointerEx_(hDisk, FilePointer, NewFilePointer, #FILE_BEGIN)
If WriteFile_(hDisk, psBuffer, BufferLen, @BytesWritten, 0)
ProcedureReturn(BytesWritten)
EndIf
EndProcedure
Code: Alles auswählen
hDisk = OpenPhysicalDisk(2, #True) ;#FALSE for open in read only mode
sBuffer = "PIC18F2550"+Space(#BlockSize-Len("PIC18F2550"))
BlockIndex = 0
PrintN("==========================================================================")
PrintN("| WRITE LBA Sector : " + FormatNumber(BlockIndex, 0, ",", ".")+" |")
PrintN("| Sende Buffer = "+Str(Len(sBuffer))+" |")
ReadCount = DiskWrite(hDisk, BlockIndex, @sBuffer, #BlockSize)
Print (DataToHexView(@sBuffer, #BlockSize-ReadCount))
PrintN("| restBytes "+Str(ReadCount)+" |")
PrintN("| sBuffer "+Str(Len(sBuffer)))
PrintN("|________________________________________________________________________|")
CloseDisk(@hDisk)
hDisk = OpenPhysicalDisk(2, #False) ;#FALSE for open in read only mode
sBuffer = Space(#BlockSize)
PrintN("==========================================================================")
PrintN("| READ LBA Sector : " + FormatNumber(BlockIndex, 0, ",", ".")+" |")
PrintN("| Empfangs Buffer = "+Str(Len(sBuffer))+" |")
ReadCount = DiskRead(hDisk, BlockIndex, @sBuffer, #BlockSize)
Print (DataToHexView(@sBuffer, ReadCount))
PrintN("| restBytes "+Str(ReadCount)+" |")
PrintN("| sBuffer "+Str(Len(sBuffer)))
PrintN("|________________________________________________________________________|")
CloseDisk(@hDisk)