Pokud má soubor více než 31 fragmentů, vrací funkce DeviceIoControl(handle,FSCTL_GET_RETRIEVAL_POINTERS ...) chybový kód ERROR_MORE_DATA (mohu vypsat jen těchto prvních 31 fragmentů). Pokud použiju DeviceIoControl(hDrive,FSCTL_GET_NTFS_FILE_RECORD ...), vidím v atributu DATA všechny fragmenty v částech DataRun. S hodnotou ClusterCount není problém. Hodnotu FirstCluster získám tak, že k předchozí hodnotě FirstCluster přičtu hodnotu FirstCluster načtenou z aktuální DataRun. Funguje to, ovšem jen do určité meze (nad ní jsou u mne hodnoty v rozsahu 0x4CA4126 až 53CA47E). Pokud od této hodnoty za limitem odečtu přesně 0x1000000 (např. 0x4CA4126-0x1000000=0x3CA4126), vše přesně sedí a mohu pokračovat dále. Divné, ale funguje mi to. Až na jednu výjimku - 0x4459D96 - zde musím odečíst 0x10000, abych dostal 0x4449D96. Záhada.
Já si mohu diskový oddíl defragmentovat, ale chtěl bych být schopen tento problém vyřešit kvůli jiným diskům, které defragmentované být nemusí (píšu program vypisující soubory, které leží na vadných sektorech disku). Problém je to dost speciální, ale např. defragmentační programy si s ním musí určitě poradit. Problém není v mém programu, ale obecně, v programu Active@DiskEditor to vidím stejně divně. Takový špek asi nikdo znát nebude, ale co kdyby náhodou?