Здравствуйте, MShura, Вы писали:
MS>>>Попробуйте перемещать файл не за раз, а более мелкими кусочками, тогда время реакции на прерывание будет адекватным.
А>>Это как? Там ведь в функции DeviceIoControl задаются параметры StartingVcn, StartingLcn и ClusterCount. Если укажешь занятые кластера или кластеров будет меньше чем нужно, то процесс переноса завершится неудачей.
MS>Можно двигать только часть файла. MS>StartingVcn — это и есть смещение этой части относительно начала файла.
MS>Пусть файл занимает 13 кластеров. MS>Указываешь StartingVcn = 0, ClusterCount = 5. Двигаешь в свободное место MS>Указываешь StartingVcn = 5, ClusterCount = 5. Двигаешь в свободное место MS>Указываешь StartingVcn = 10, ClusterCount = 3. Двигаешь в свободное место
MS>Если том не залочен, то всегда есть шанс, что в указанном диапазоне [StartingLcn,StartingLcn+ClusterCount) часть кластеров окажутся занятыми, даже если за секунду до этого этот диапазон был свободен. Это надо учитывать.
я тут читал и у меня появилося вопрос:
-а если файл который мы перемещаем большой и все кластеры раскиданы по винту групами, то как их перемещать? как узнать сколько кластеров в групе?
имея:
2*number of extents array — the vcn and the lcn as pairs