- •Операционные системы и их интерфейсы.
- •Графические ос
- •Речевые ос
- •Динамически подключаемые библиотеки.
- •Потоки и процессы.
- •Локальная память потока
- •Потоки в Windows.
- •Сервисы в Windows
- •7. Процессы в виндовс
- •8.Работа с сервисами виндовс
- •Синхронизация.
- •Система информационной безопасности
- •Синхронизация потоков в Windows
- •Управление безопасностью в Windows
- •3. Управляемый доступ к сети
- •13. Взаимоисключающий доступ к переменным
- •Управление пользователями
- •Управление группами
- •Структура консольного приложения
- •Работа с идентификаторами безопасности
- •19, Работа с консолью
- •20. Работа с дескрипторами безопасности
- •21. Работа с окном консоли
- •Часть III. Программирование консольных приложений
- •22. Работа со списками управления доступом на высоком уровне
- •23. Работа с буфером экрана
- •24. Работа с привилегиями
- •Ввод-вывод на консоль
- •Работа с маркерами доступа
- •Первичный маркер доступа
- •Имперсонализирующие маркер доступа
- •Передача данных
- •Работа со списками управления доступом на низком уровне
- •Работа с анонимными каналами в Windows
- •Управление безопасностью объектов на низком уровне
- •Глава 45. Управление безопасностью объектов на низком уровне 993
- •31) Работа с именованными каналами в Windows
- •32) Win32 и Win64. Программирование в среде Win64.
- •33) Работа с почтовыми ящиками в Windows
- •34) Использование файловой системы и функций символьного ввода/вывода Windows
- •35) Фреймовая обработка исключений
- •36) Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром
- •37. Финальная обработка исключений
- •38. Обработка исключений
- •39. Виртуальная память
- •40 . Управление памятью, отображение файлов и библиотеки dll
- •41. Работа с виртуальной памятью в windows
- •42.Управление процессами
- •43. Работа с кучей в Windows
- •44. Потоки и планирование выполнения
- •45. Общие концепции управления файлами
- •46. Синхронизация потоков
- •47. Работа с файлами в Windows
- •48. Влияние синхронизации на производительность и рекомендации по ее повышению
- •49) Работа с каталогами (папками) в Windows
- •50) Усовершенствованные методы синхронизации потоков
- •51) Асинхронный вызов процедур
- •52) Взаимодействие между процессами
- •53) Асинхронный доступ к данным.
- •54) Сетевое программирование с помощью сокетов Windows
- •55)Порты завершения
- •57)Работа с ожидающим таймером
- •58)Асинхронный ввод/вывод и порты завершения
- •Порты завершения ввода-вывода
- •59)Отображение файлов в память.
- •Достоинства метода. Альтернативой отображению может служить прямое чтение файла или запись в файл. Такой способ работы менее удобен по следующим причинам:
- •60)Безопасность объектов Windows
- •Операционные системы и их интерфейсы.
57)Работа с ожидающим таймером
Ожидающие таймеры - объекты ядра, которые предназначены для отсчета промежутков времени. Окончание временного интервала определяется по переходу таймера в свободное состояние (signaled). Момент перехода таймера в свободное состояние определяется одной из ожидающих функций. По аналогии с радиоэлектроникой, ожидающий таймер можно представить как мультивибратор, работающий в одном из двух режимов, ожидающим запуска от внешнего сигнала или автогенераторном, когда формируется непрерывная последовательность импульсов. Основное применение ожидающих таймеров - синхронизация потоков в многопоточном программировании. Наиболее частая область применения ожидающих таймеров - периодическое выполнение определенной задачи.
Для создания и управления ожидающими таймерами существует несколько функций: HANDLE CreateWaitableTimer (LPSECURITY_ATTRIBUTES lpTimerAttributes, BOOL bManualReset, LPCTSTR lpTimerName ) - функция создает ожидающий таймер в занятом состоянии, из которого он выводится принудительно, т.е. после создания объект не активен. Таймер может быть двух типов с автосбросом или ручным сбросом, определяется параметром bManualReset. Если таймер с ручным сбросом, то при переходе в свободное состояние запускаются все потоки, которые его ожидали. Таймер с автосбросом запускает только один поток. Первый параметр обычно всегда NULL, последний - имя таймера. Имя используется для совместного разделения объекта между процессами.
BOOL SetWaitableTimer(HANDLE hTimer, const LARGE_INTEGER *pDueTime,LONG lPeriod,PTIMERAPCROUTINE pfnCompletionRoutine, PVOID pvArgToCompletionRoutine, BOOL bResume) - функция запускает таймер и определяет все его параметры. Функция может быть вызвана в любой момент для перенастройки таймера, если таймер в этот момент был в занятом состоянии, то вызов функции не освобождает его, после вызова функции таймер продолжит работу с новыми параметрами. После вызова функции таймер переходит в занятое состояние и отрабатывает время, указанное во втором параметре. - Первый параметр - дескриптор таймера. - Второй параметр pDueTime определяет время перехода таймера в свободное состояние (signaled) или время срабатывания таймера. В течении этого времени поток, ожидающий срабатывания таймера, находится в спящем состоянии. Если указана функция асинхронного вызова (APC), то она ставится в момент срабатывания таймера в очередь на выполнение. Параметр pDueTime может быть определен как абсолютное или относительное время, абсолютное время определяет момент первого запуска и является величиной положительной. Определение абсолютного времени требует подготовительных операций по преобразованию полной даты в величину типа LARGE_INTEGER. Относительное время определяет момент первого срабатывания таймера после вызова функции. Относительное время является величиной отрицательной, выраженной в 100нс интервалах. - Третий параметр lPeriod определяет режим работы и одновременно период повторения срабатываний ожидающего таймера. Если период равен нулю -таймер сработает однократно, если не нуль, срабатывания будут повторятся с указанным периодом. Величина указывается в миллисекундах. - Четвертый параметр pfnCompletionRoutine определяет указатель на необязательную функцию асинхронного вызова (APC), которая помещается в очередь функций APC в момент срабатывания таймера и затем вызывается. Ее вызов производится из того потока, который вызвал функцию SetWaitableTimer, но при условии, что он находится в состоянии ожидания, т.е. поток должен вызвать ожидающую функцию и находиться в ней. - Пятый параметр передает в функцию асинхронного вызова (APC) произвольный аргумент, например указатель на объект или структуру. - Последний параметр bResume, если он не нуль, выводит машину из спящего состояния по срабатыванию таймера.
- HANDLE OpenWaitableTimer(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpTimerName) - функция открывает существующий именованный таймер. Используется для доступа к одному таймеру из разных процессов.
- BOOL CancelWaitableTimer(HANDLE hTimer) - функция останавливает таймер и отменяет выполнение функции APC, не изменяя состояния таймера. Если таймер был в занятом состоянии, то потоки остаются в спящем состоянии до возобновления работы таймера. Если же таймер оказался на этот момент в свободном состоянии, то он в нем и остается, потоки будут работать. При перенастройке таймера эту функцию вызывать не нужно.
