| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||||||
Каждый раз перед копированием...
Перед началом копирования...
Отказаться от использования GetDiskFreeSpaceEx при каждом копировании файла. То есть померил размер всех копируемых файлов, проверил место свободное, и копируй. Если что, тебе вылетит ошибка, при отсутствии места. Обработаешь GetLastError и все. GetDiskFreeSpaceEx не просто измеряет место свободное на диске, но и еще смотрит на права пользователя, который юзает папку... |