Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#12

AW: Partition auslesen mit DeviceIoControl und IOCTL_DISK_GET_PARTITION_INFO_EX

  Alt 10. Okt 2015, 18:56
  1. Ja das wäre auch so gegangen. Zusätzlich zum eigentlichen Struct nochtmal TStructName zu definieren habe ich lediglich gemacht, um der Delphi Namenskonvention gerecht zu werden. Ist aber prinzipiell nicht notwendig.
  2. ReallocMem wird aufgerufen, wenn die API signalisiert, dass der übergebene Speicherbereich zu klein ist, um alle Informationen zu empfangen. Initial setze ich die Größe auf SizeOf(TDriveLayoutInformationEx) + SizeOf(TPartitionInformationEx) * 3. Dieser Speicher würde für 4 Partitionen ausreichen. Hat die Platte aber mehr Partitionen, muss der Speicherbereich solange vergrößert werden, bis alle Informationen reinpassen würden.
  3. SizeOf(TDriveLayoutInformationEx) + SizeOf(TPartitionInformationEx) * 3 nehme ich deshalb als initialen Startwert, da hiermit genau Platz für 4 Partitionen zur Verfügung gestellt wird. DRIVE_LAYOUT_INFORMATION_EX enthält ja am Ende das array[0..0] of TPartitionInformationEx, weshalb in SizeOf(TDriveLayoutInformationEx) schon Platz für eine Partition eingeschlossen ist. SizeOf(TPartitionInformationEx) * 3 addiere ich dann noch, um auf die geforderten 4 Partitionen zu kommen.

Zum letzten Problem kann ich leider nichts sagen. Was sagt denn RaiseLastOSError() in diesem Falle?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat