Forum: Win32/Win64 API (native code)
by KodeZwerg,
20. Jun 2018
Jupp, mehr sollte nicht nötig sein. Ich habe es aber nicht weiter verfolgt nach hans65 seinem Post.
Ich habe aufgehört als ich herausfand wie ich MBR/GPT auseinander halte, per IOCTL_DISK_GET_DRIVE_LAYOUT_EX.
Wenn noch Interesse besteht bastel ich weiter am Sample wobei es bei mir etwas dauern könnte da ich mein Privates System gerade neu Aufgesetzt habe und am Einrichten bin.
Forum: Win32/Win64 API (native code)
by KodeZwerg,
20. Jun 2018
hans65, Du ersparst mir ein Sample zu basteln, Schade und gleichzeitig Danke.
Das Thema hat sich ja damit erledigt, Frage an TE: oder gibt es noch Punkte die Fehlen?
edit
Ich habe mal das DiskImage getestet, also so tief würde ich nicht vordringen, da kann man sich ja sogar einzelne Dateien rauspicken und lesen/per Offset verfolgen wo Fragmente verteilt sind, das ist echt mächtig, hat zwar...
Forum: Win32/Win64 API (native code)
by KodeZwerg,
19. Jun 2018
Hier stellte ich Source Code zur Verfügung der vielleicht das macht was Du möchtest, DriveLetter einer Drive# zuordnen.
Forum: Win32/Win64 API (native code)
by KodeZwerg,
18. Jun 2018
Es freut mich wenn es das macht was Du wolltest, Danke für Fehler-Report!
function VarToInt64(const AVariant: Variant): Int64;
begin Result := StrToInt64Def(Trim(VarToStr(AVariant)), 0); end;
Writeln(Format('Size %d Byte = %f GB',));// Uint64
Habe es mit Delphi so abgeändert, vielen Dank!
edit
program GetWMI_DiskDriveInfo;
{$APPTYPE CONSOLE}
Forum: Win32/Win64 API (native code)
by KodeZwerg,
12. Jun 2018
Ich bin gerade den Code nochmal durchgegangen, es kann sehr gut möglich sein das ich if nBytesRead-1 <> High(MBR) then Result := False; das falsch habe und es if nBytesRead <> High(MBR)+1 then Result := False; lauten müsste, beim weiteren nBytesRead das -1 dann weglassen aber beim High(MBR) ein +1 ranbaumeln.
Forum: Win32/Win64 API (native code)
by KodeZwerg,
12. Jun 2018
type
TMBR = Array of Byte;
Function GetMBR (const DiskNumber: Byte; const MBRSize: Cardinal; out MBR: TMBR): Boolean;
var
nBytesRead ,
fHandle : Cardinal;
begin
fHandle := CreateFile(
PChar('\\.\PHYSICALDRIVE'+IntToStr(DiskNumber)),
Forum: Win32/Win64 API (native code)
by KodeZwerg,
10. Jun 2018
CreateFile mit "\\.\PhysicalDrive0" (Admin Rechte!)
Das öffnet Festplatte 0 bei Dir (also die erste)