Autor Téma: Vytvoření partition tabulky  (Přečteno 929 krát)

Offline Amycus

  • Příspěvků: 2
  • Karma: 0
    • Verze Delphi: Delphi 7
Vytvoření partition tabulky
« kdy: 20-01-2014, 12:29:33 »
Dobrý den,

dělám na ročníkové projektu, kde mám mimo jiné vytvořit partition tabulku. Aplikaci vytvářím v Delphi 7 na Windows 7. Našel jsem, že by to měla umět funkce DeviceIoControl bohužel asi po dvou hodinách hledání a zkoušení jsem se nepohnul z místa. Jediné co jsem zjistil bylo, že funkci DeviceIoControl musím uvést s parametrem IOCTL_DISK_GET_PARTITION_INFO. Bohužel jsem nepřišel, jak tuto funkci rozchodit.

Abych to zkrátil, potřebuji zjistit, jaké oddíly ("partišny") jsou na fyzické disku. DeviceIoControl nemusím výhradně použít, pokud někdo z vás bude vědět jak to udělat jiným způsobem, budu jedině rád. Jinak bych potřeboval aspoň příklad použití DeviceIoControl s použitím parametru IOCTL_DISK_GET_PARTITION_INFO.

Předem děkuji těm, kteří se mi pokusí poradit. Pokud budete mít nejasnosti klidně se ptejte. :)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1429
  • Karma: 34
    • Pepak.net
Re:Vytvoření partition tabulky
« Odpověď #1 kdy: 20-01-2014, 12:41:23 »
Pokud ti to stačí udělat tak, aby to fungovalo, a netrváš na 100% funkčnosti za všech možných okolností, tak si můžeš přečíst Master Boot Record (první sektor disku) a dekódovat jeho strukturu (viz např. Wiki). To by mělo jít docela snadno, pro otevření použiješ CreateFileW('\\.\PhysicalDisk0') a pro čtení už normální ReadFile. Tomu CreateFileW se v Delphi 7 nevyhneš, zbytek už si můžeš nechat obalit pomocí THandleStream, jestli chceš.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1429
  • Karma: 34
    • Pepak.net
Re:Vytvoření partition tabulky
« Odpověď #2 kdy: 20-01-2014, 12:42:41 »

Offline Amycus

  • Příspěvků: 2
  • Karma: 0
    • Verze Delphi: Delphi 7
Re:Vytvoření partition tabulky
« Odpověď #3 kdy: 21-01-2014, 15:32:42 »
Zkusím to a dám vědět. Zatím děkuji.  :)