КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
FindFirstChangeNotification FindNextChangeNotification FindCloseChangeNotification
Уведомление об изменении файловой системы Функция WaitForlnputldle Асинхронный ввод-вывод на устройствах При асинхронном вводе-выводе поток начинает операцию чтения или записи и не ждет ее окончания. Например, если потоку нужно загрузить в память большой файл, он может сообщить системе сделать это за него. И пока система грузит файл в память, поток спокойно занимается другими задачами — создает окна, инициализирует внутренние структуры данных и т. д. Закончив, поток приостанавливает себя и ждет уведомления от системы о том, что загрузка файла завершена. Объекты устройств являются синхронизируемыми объектами ядра, а это означает, что Вы можете вызывать WaitForSingleObject и передавать ей описатель какого-либо файла, сокета, коммуникационного порта и т. д. Пока система выполняет асинхрон ный ввод-вывод, объект устройства пребывает в занятом состоянии. Как только операция заканчивается, система переводит объект в свободное состояние, и поток узнает о завершении операции. С этого момента поток возобновляет выполнение. Поток может приостановить себя и вызовом WaitForlnputIdle: DWORD WaitForInputIdle(HANDLE hProcess, DWORD dwMilliseconds); Эта функция ждет, пока у процесса, идентифицируемого описателем bProcess, не опустеет очередь ввода в потоке, создавшем первое окно приложения. WaitForlnputldle полезна для применения, например, в родительском процессе, который порождает дочерний для выполнения какой-либо нужной ему работы. Когда один из потоков родительского процесса вызывает CreateProcess, он продолжает выполнение и в то время, пока дочерний процесс инициализируется. Этому потоку может понадобиться описатель окна, создаваемого дочерним процессом. Единственная возможность узнать о моменте окончания инициализации дочернего процесса — дождаться, когда тот прекратит обработку любого ввода. Поэтому после вызова CreateProcess поток родительского процесса должен вызвать WaitForInputIdle. Функция FindFirstChangeNotification создаёт описатель объекта ядра "уведомление", с помощью которого можно отслеживать заданные фильтром изменения в директории или её поддереве. При выполнении заданного условия (например, появления новых файлов, переименования файлов, изменение их размеров или аттрибутов и т.п.) объект приходит в сигнальное состояние, что можно отследить какой-нибудь wait-функцией. После первого изменения можно продолжить ожидание (т.е. по сути вернуть "уведомление" в несигнальное состояние и направить к ожиданию изменений) с помощью функции FindNextChangeNotification. После завершения слежения необходимо вызывать функцию FindCloseChangeNotification, чтобы освободить объект ядра "уведомление". HANDLE FindFirstChangeNotification( BOOL FindNextChangeNotification( BOOL FindCloseChangeNotification( Рассмотрим подробнее некоторые параметры функции FindFirstChangeNotification: Пример: HANDLE hNotification= FindFirstChangeNotification(g_strInFolder, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME); //Начинаем отслеживать изменения в заданной папке посредством специальной функции
В следующей таблице суммируются сведения о различных объектах ядра применительно к синхронизации потоков.
Дата добавления: 2014-01-11; Просмотров: 1454; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |