12. Обработка сообщения в ос Window.
Одна из главных целей Windows — предоставить всем приложениям отказоустойчивую среду. Для этого любой поток должен выполняться в такой среде, где он может считать себя единственным. Точнее, у каждого потока должны быть очереди сообщений, полностью независимые от других потоков. Кроме того, для каждого потока нужно смоделировать среду, позволяющую ему самостоятельно управлять фокусом ввода с клавиатуры, активизировать окна, захватывать мышь и т.д.
Создавая какой-либо поток, система предполагает, что он не будет иметь отношения к поддержке пользовательского интерфейса. Это позволяет уменьшать объем выделяемых ему системных ресурсов. Но, как только поток обратится к той или иной GUI-функции (например, для проверки очереди сообщений или создания окна), система автоматически выделит ему дополнительные ресурсы, необходимые для выполнения задач, связанных с пользовательским интерфейсом. А если конкретнее, то система создает структуру THREADINFO и сопоставляет ее с этим потоком
Элементы этой структуры используются, чтобы обмануть поток — заставить его считать, будто он выполняется в среде, принадлежащей только ему. THREADINFO — это внутренняя (недокументированная) структура, идентифицирующая очередь асинхронных сообщений потока (posted-message queue), очередь синхронных сообщений потока (sent-message queue), очередь ответных сообщений (reply-message queue), очередь виртуального ввода (virtualized input queue) и флаги пробуждения (wakc flags), она также включает ряд других переменных-членов, характеризующих локальное состояние ввода для данного потока.
Структура THREADINFO — фундамент всей подсистемы передачи сообщений.
Когда с потоком связывается структура THREADINFO, он получает свой набор очередей сообщений. Если процесс создает три потока и все они вызывают функцию Create Window, то и наборов очередей сообщений будет тоже три Сообщения ставятся в очередь асинхронных сообщений вызовом функции PostMessage:
При вызове этой функции система определяет, каким потоком создано окно, идентифицируемое параметром hwnd, Далее система выделяет блок памяти, сохраняет в нем параметры сообщения и записывает этот блок в очередь асинхронных сообщений данного потока. Кроме того, функция устанавливает флаг пробуждения QS_POST MESSAGE. Возврат из PostMessage происходит сразу после того, как сообщение поставлено в очередь, поэтому вызывающий поток остается в неведении, обработано ли оно процедурой соответствующего окна На самом деле вполне вероятно, что окно даже не получит это сообщение Такое возможно, если поток, создавший это окно, завершится до того, как обработает все сообщения из своей очереди.
- Средства аппаратной поддержки управления памятью в микропроцессорах Intel.
- 0000 Смещение
- Стек потока под управлением Windows nt (2000).
- Кучи. Кучи в Windows nt (2000).
- 5. Файлы, проецируемые в память.
- 6.Объекты ядра. Процессы, потоки и модули в Win32.
- Структура modref.
- Основные функции для работы с потоками.
- 7. Распределение времени между потоками. Классы приоритета. Уровни приоритета. Относительный уровень приоритета потока.
- Классы и уровни приоритета.
- Функции Win32 связанные с планированием.
- 8. Учет квантов времени в Windows. Управление величиной кванта. Сценарии планирования процессорного времени.
- Сценарий планирования.
- Поток простоя.
- 9. Динамическое повышение приоритета потока.
- 10 Синхронизация потоков.
- 11. Динамически подключаемые библиотеки (dll). Явная и неявная загрузка dll.
- 12. Обработка сообщения в ос Window.
- 13. Системная очередь аппаратного ввода сообщений.
- 14. Работа с окнами в ос Windows. Классы окон. Z-порядок окон. Описание окон в ос Windows.
- 15. Существующие форматы исполняемых файлов. Формат pe-файла.
- Особенности ре формата:
- Заголовок ре файла.
- Основные секции исполняемого файла.
- Прикладная программа
- 16. Методы отслеживания изменений файловой системы
- 17. Файловая система fat. Структура системной области и области данных в fat.
- Загрузочный сектор.
- 18. Файловая система ntfs. Структура главной файловой таблицы (mft). Атрибуты файла ntfs. Резидентные и нерезидентные атрибуты.
- Особенности ntfs.
- Структура ntfs на диске.
- Атрибуты файла.
- 19. Структура больших файлов и каталогов в ntfs. Индексация файлов в ntfs.
- 20. Восстанавливаемость ntfs. Протоколирование транзакций. Журнал транзакций. Восстановление данных в ntfs.
- Журнал транзакций.
- Восстановление данных в ntfs.