Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > WNetAddConnection2 and GetDiskFreeSpaceEx


Автор: ERASER 11.7.2010, 18:14
Привет всем!
Использую WNetAddConnection2 and GetDiskFreeSpaceEx, для сетевого клиента, копирующего файлы на распределенный сетевой ресурс.
Сетевой ресурс - RAID массив, пространство которого организовано в виде сетевых папок-дисков. Соответственно доступ к папкам - дискам дан локальным пользователям с разными правами.
Количество клиентов может быть N (чем больше, тем лучше). Количество копируемых файлов может быть от 1-го до 10 000 за один сеанс копирования.
На данный момент копирование файлов происходит следующим образом:
1. Пользователь указывает папку с файлами для копирования ее на сетевой ресурс.
2. Происходит поиск файлов по маске и определяется размер.
3. Перед копированием вызывается GetDiskFreeSpaceEx.
4. Копирование одного файла с проверкой свободного пространства (GetDiskFreeSpaceEx).
У меня нет проблем с использованием указанных функций, все работает. Есть вопросы другого плана, касающиеся вызова GetDiskFreeSpaceEx. 
А именно:
1. Как часто можно обращаться к контроллеру HDD, для определения свободного пространства копирования файлов?
2. В какой момент времени можно и нужно определять свободное пространство, поскольку как минимум два клиента могут осуществлять копирование в одну и туже папаку-диск?
3. Так как файлов множество и как минимум два клиента могут копировать в одну и ту же папку, появился вопрос, а не приведет ли к существенному снижению работоспособности HDD множественное обращение с помощью указанного мной способа копирования?

Заранее спасибо за ответы.

Автор: niteo 30.7.2010, 10:58
Цитата

1. Как часто можно обращаться к контроллеру HDD, для определения свободного пространства копирования файлов?

Каждый раз перед копированием...
Цитата

2. В какой момент времени можно и нужно определять свободное пространство, поскольку как минимум два клиента могут осуществлять копирование в одну и туже папаку-диск?

Перед началом копирования...
Цитата

3. Так как файлов множество и как минимум два клиента могут копировать в одну и ту же папку, появился вопрос, а не приведет ли к существенному снижению работоспособности HDD множественное обращение с помощью указанного мной способа копирования?


Отказаться от использования GetDiskFreeSpaceEx при каждом копировании файла. То есть померил размер всех копируемых файлов, проверил место свободное, и копируй. Если что, тебе вылетит ошибка, при отсутствии места. Обработаешь GetLastError и все. 

GetDiskFreeSpaceEx не просто измеряет место свободное на диске, но и еще смотрит на права пользователя, который юзает папку...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)