Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Объекты файловой системы  (Прочитано 8507 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 17-09-2004 07:04 » 

Хочу реализовать следующу вешь,  чтоб программа сидящая в трее
отлавливала обращения к конкретной папке на диске и если пользователь копирует туда фалы и или папки по окончании копирования выполняла над добавлеными файлами нужные мне дествия например вычисляла контрольную сумму.  

Можно конечно переодически сверять реальное содержимое папки с результатами последней проверки ... но я гдето читал что есть более элегантное решение , что можно попросить  ядро NT уведомлять об обрашении к папке диску или файлу.

Вопросы
1. Можно попроить ядро NT уведомлять о обращении к обектам файловой ситемы?
2. Как это сделать?
Записан

Да да нет нет все остальное от лукавого.
Серж
Гость
« Ответ #1 : 17-09-2004 12:14 » 

PSD,
есть набор функций API
FindFirstChangeNotification,
FindNextChangeNotification,
FindCloseChangeNotification
Записан
Alanir Alonedaw
Гость
« Ответ #2 : 18-09-2004 08:18 » 

Интересная тема.
Серж
А можно подробней?
Записан
Серж
Гость
« Ответ #3 : 19-09-2004 14:07 » 

К сожалению, у меня нет под рукой текста, думаю его легко найти в MSDN.
Смысл в том, что функция FindFirstChangeNotification имеет одним из параметров имя каталога и на выходе дает handle, который отслеживается в дальнейшем в отдельном потоке какой-нибудь функцией ожидания, например
WaitForSingleObject. Функция сигналит, когда возникает изменение в каталоге, тип которого задан в функции FindFirstChangeNotification.
Записан
Серж
Гость
« Ответ #4 : 20-09-2004 09:34 » 

Прочитал еще о двух способах отслеживания измений, которые работают только под Windows NT, а второй только под NTFS:
1. Функция ReadDirectoryChangesW, которую можно вызывать синхронно или асинхронно, и которая содержит информацию об изменениях.
2. DeviceIOControl c управляющим кодом FSCTL_CREATE_USN_JOURNAL.
NTFS после этого регистрирует информацию об изменениях в собственном внутреннем журнале. Читается эта информация тем же способом с помощью кода FSCTL_QUERY_USN_JOURNAL.
Источник информации Д.Соломон, М.Руссинович. Внутренне устройство Microsoft Windows 2000. гл.12, стр. 587 (русского издания).
Этими способами я не пользовался, а ранее описанный успешно использовал в проектах.
Записан
Кот
Гость
« Ответ #5 : 24-09-2004 10:41 » 

http://www.codenet.ru/progr/bcb/cfolders.php

вот здесь примерчик лежит посмотри может как раз то что тебе надо
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines