Проверка состояния объектов
Проверка состояния объектов
Проверка состояния объектов Для проверки состояния объектов используется несколько похожих функций. В нашем приложении мы будем использовать функцию WaitForSingleObject. Рассмотрим подробнее функции FindFirstChangeNotification FindNextChangeNotification FindCloseChangeNotification WaitForSingleObject HANDLE FindFirstChangeNotification Создает сигнализирующий объект find change notification object для сканирования каталога. Параметры: LPCTSTR lpPathName, - Указатель на строку, которая содержит путь к проверяемому каталогу. BOOL bWatchSubtree, - Флаг, указывающий, нужно ли проверять подкаталоги. DWORD dwNotifyFilter - О каких изменениях в каталоге сигнализировать. dwNotifyFilter Определяет, о каких типах изменений будет сигнализировать объект Возможные значения: FILE_NOTIFY_CHANGE_FILE_NAME Сигнализировать о создании, удалении и переименовании файла. FILE_NOTIFY_CHANGE_DIR_NAME Сигнализировать о создании, удалении, переименовании подкаталогов. FILE_NOTIFY_CHANGE_ATTRIBUTES Сигнализировать об изменении атрибутов файлов или подкаталогов. FILE_NOTIFY_CHANGE_SIZE Сигнализировать об изменении размеров файлов. Операционная система определяет, что размер файла изменился, только если он закрыт. FILE_NOTIFY_CHANGE_LAST_WRITE Сигнализировать о смене даты последнего изменения файла. Операционная система определяет, что дата изменения файла сменилась, только если он закрыт. FILE_NOTIFY_CHANGE_SECURITY Сигнализировать об изменениях дескриптора защиты. В случае успешного выполнения функция возвращает Handle созданного сигнализирующего объекта. BOOL FindNextChangeNotification Функция запрашивает операционную систему, изменилось ли состояние сигнализирующего объекта. Параметры: HANDLE hChangeHandle // Handle сигнализирующего объекта BOOL FindCloseChangeNotification Удаляет сигнализирующий объект. DWORD WaitForSingleObject Функция завершается в том случае, если при проверке состояния сигнализирующего объекта происходит одно из событий: · Состояние объекта изменилось на <Включен> · Время ожидания, определенного при вызове функции, истекло. Параметры: HANDLE hHandle, // Handle сигнализирующего объекта DWORD dwMilliseconds // Время ожидания в миллисекундах dwMilliseconds Может принимать следующие значения: - время ожидания в миллисекундах - INFINITE, в этом случае время ожидания не ограничено. Функция WaitForSingleObject возвращает следующие значения: WAIT_OBJECT_0 - Состояние объекта изменилось на <Включен> WAIT_TIMEOUT - Истекло время ожидания. Если при выполнении функции возникли ошибки, WaitForSingleObject возвращает код WAIT_FAILED. Если состояние объекта изменяется до истечения времени dwMilliseconds, то функция завершает работу немедленно с кодом WAIT_OBJECT_0.