Книга: Системное программирование в среде Windows
Оглавление книги
- Введение
- Потенциальная аудитория
- Изменения в третьем издании
- Как организована эта книга
- Сопоставление с UNIX и библиотекой С
- Примеры
- Web-сайты, посвященные этой книге
- Благодарности
- От издательства
- ГЛАВА 1 Знакомство с Win32 и Win64
- Основные возможности операционных систем
- Эволюция Windows
- Версии Windows
- Устаревшие предыдущие версии Windows
- Windows NT 5.x
- Другие интерфейсы программирования для Windows
- Поддержка процессоров
- Воздействие Windows на ситуацию на рынке
- Windows, стандарты и открытые системы
- Принципы, лежащие в основе Windows
- Подготовка к работе с Win64
- О целесообразности привлечения функций стандартной библиотеки C для обработки файлов
- Что требуется для работы с данной книгой
- Пример: простое последовательное копирование файла
- Копирование файлов с использованием стандартной библиотеки С
- Копирование файлов с использованием Windows
- Копирование файлов с использованием вспомогательной функции Windows
- Резюме
- Упражнения
- ГЛАВА 2 Использование файловой системы и функций символьного ввода/вывода Windows
- Файловые системы Windows
- Правила именования файлов
- Операции открытия, чтения, записи и закрытияфайлов
- Вступление: стандартные символы и символы Unicode
- Альтернативные функции для работы с обобщенными строками
- Обобщенная функция Main
- Определения функций
- Стратегии использования символов Unicode
- Стандартные устройства и консольный ввод/вывод
- Пример: вывод на консоль сообщений и подсказок для пользователя
- Пример: обработка ошибок
- Пример: копирование нескольких файлов на стандартное устройство вывода
- Пример: преобразование символов из ASCII в Unicode
- Управление файлами и каталогами
- Пример: печать текущего каталога
- Резюме
- Упражнения
- ГЛАВА 3 Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром
- 64-битовая файловая система
- Указатели файлов
- Определение размера файла
- Пример: обновление записей, находящихся в произвольном месте файла
- Атрибуты файлов и управление каталогами
- Полные имена файлов
- Другие методы определения атрибутов файлов и каталогов
- Именование временных файлов
- Точки монтирования
- Пример: вывод списка атрибутов файла
- Пример: установка меток времени файла
- Стратегии обработки файлов
- Блокирование файлов
- Реестр
- Управление системным реестром
- Пример: вывод списка разделов и содержимого реестра
- Резюме
- Упражнения
- ГЛАВА 4 Обработка исключений
- Исключения и обработчики исключений
- Блоки try и except
- Выражения фильтров и их значения
- Коды исключений
- Резюме: последовательность обработки исключений
- Исключения, возникающие при выполнении операций над числами с плавающей точкой
- Ошибки и исключения
- Пример: обработка ошибок как исключений
- Обработчики завершения
- Выход из try-блока
- Аварийное завершение
- Выполнение обработчика завершения и выход из него
- Сочетание блоков finally и except
- Глобальное и локальное разворачивание стека
- Обработчики завершения: завершение процессов и потоков
- SEH и обработка исключений в C++
- Пример: использование обработчиков завершения для повышения качества программ
- Пример: использование функции фильтра
- Обработчики управляющих сигналов консоли
- Пример: обработчик управляющих сигналов консоли
- Векторная обработка исключений
- Резюме
- Упражнения
- ГЛАВА 5 Управление памятью, отображение файлов и библиотеки DLL
- Архитектура системы управления памятью в Win32 и Win64
- Куча
- Управление памятью кучи
- Пример: сортировка файлов с использованием бинарного дерева поиска
- Отображение файлов
- Объекты отображения файлов
- Отображение файла на адресное пространство процесса
- Ограничения метода отображения файлов
- Резюме: отображение файлов
- Пример: последовательная обработка файлов с использованием метода отображения
- Пример: сортировка отображенных файлов
- Базовые указатели
- Пример: использование базовых указателей
- Динамически компонуемые библиотеки
- Пример: явное связывание функци и преобразования файлов
- Точки входа библиотеки DLL
- Управление версиями DLL
- Резюме
- Упражнения
- ГЛАВА 6 Управление процессами
- Процессы и потоки Windows
- Создание процесса
- Счетчики дескрипторов процессов
- Идентификаторы процессов
- Дублирование дескрипторов
- Завершение и прекращение выполнения процесса
- Ожидание завершения процесса
- Блоки и строки окружения
- Пример: параллельный поиск указанного текстового шаблона
- Процессы в многопроцессорной среде
- Временные характеристики процесса
- Пример: временные характеристики процессов
- Генерация управляющих событий консоли
- Пример: простое управление задачами
- Создание фоновых задач
- Получение номера задачи
- Вывод списка фоновых задач
- Поиск задачи в файле списка задач
- Объекты задач
- Резюме
- Упражнения
- ГЛАВА 7 Потоки и планирование выполнения
- Обзор потоков
- Основные сведения о потоках
- Управление потоками
- Идентификация потоков
- Дополнительные функции управления потоками
- Приостановка и возобновление выполнения потока
- Ожидание завершения потока
- Удаленные потоки
- Использование библиотеки С впотоках
- Пример: многопоточный поиск контекста
- Потоки и производительность
- Модель "хозяин/рабочий" и другие модели многопоточных приложений
- Пример: применение принципа "разделяй и властвуй" для решения задачи сортировки слиянием в SMP-системах
- Производительность
- Локальные области хранения потоков
- Приоритеты процессов и потоков и планирование выполнения
- Состояния потоков
- Возможные ловушки и распространенные ошибки
- Ожидание в течение конечного интервала времени
- Облегченные потоки
- Резюме
- Упражнения
- ГЛАВА 8 Синхронизация потоков
- Необходимость в синхронизации потоков
- Критические участки кода
- Функции взаимоблокировки
- Локальная и глобальная память
- Резюме: безопасный многопоточный код
- Объекты синхронизации потоков
- Объекты критических участковкода
- Использование объектов CRITICAL_SECTION для защиты разделяемыхпеременных
- Пример: простая система "производитель/потребитель"
- Мьютексы
- Покинутые мьютексы
- Мьютексы, критические участки кода и взаимоблокировки
- Сравнительный обзор: мьютексы и объекты CRITICAL_SECTION
- Синхронизация куч
- Семафоры
- События
- Пример: система "производитель/потребитель"
- Обзор: объекты синхронизации Windows
- Дополнительные рекомендации относительно использования мьютексов и объектов CRITICAL_SECTION
- Другие функции взаимоблокировки
- Учет факторов производительности при организации управленияпамятью
- Резюме
- Упражнения
- ГЛАВА 9 Влияние синхронизации на производительность и рекомендации по ее повышению
- Влияние синхронизации на производительность
- Модельная программа для исследования факторов производительности
- Настройка производительности SMP-систем с помощью спин-счетчиков
- Дросселирование семафора для уменьшения состязательности между потоками
- Родство процессоров
- Маски родства системы, процесса и потока
- Определение количества процессоров в системе
- Гиперпотоки и счетчик процессоров
- Порты завершения ввода/вывода
- Рекомендации по повышению производительности и возможные риски
- Резюме
- Упражнения
- ГЛАВА 10 Усовершенствованные методы синхронизации потоков
- Модель переменных условий и свойства безопасности
- Совместное использование событий и мьютексов
- Модель переменных условий
- Использование функции SignalObjectAndWait
- Пример: объект порогового барьера
- Объект очереди
- Пример: использование очередей в многоступенчатом конвейере
- Асинхронные вызовы процедур
- Очередизация асинхронных вызовов процедур
- Состояния дежурного ожидания
- Безопасная отмена выполнения потоков
- Создание переносимых приложений с использованием потоков Pthreads
- Стеки потоков и допустимые количества потоков
- Рекомендации по проектированию, отладке и тестированию программ
- Как избежать создания некорректного программного кода
- За рамками Windows API
- Резюме
- Упражнения
- ГЛАВА 11 Взаимодействие между процессами
- Анонимные каналы
- Пример: перенаправление ввода/вывода с использованием анонимного канала
- Именованные каналы
- Использование именованных каналов
- Создание именованных каналов
- Подключение клиентов именованных каналов
- Функции состояния именованных каналов
- Функции подключения именованных каналов
- Подключение клиентов и серверов именованных каналов
- Функции транзакций именованных каналов
- Пример: клиент-серверный процессор командной строки
- Комментарии по поводу клиент-серверного процессора командной строки
- Почтовые ящики
- Создание, подключение и именование каналов и почтовых ящиков
- Пример: сервер, обнаруживаемый клиентами
- Комментарии по поводу многопоточных моделей
- Резюме
- Упражнения
- ГЛАВА 12 Сетевое программирование с помощью сокетов Windows
- Сокеты Windows
- Серверные функции сокета
- Связывание сокета
- Перевод связанного сокета в состояние прослушивания
- Прием клиентских запросов соединения
- Отключение и закрытие сокетов
- Пример: подготовка и получение клиентских запросов соединения
- Клиентские функции сокета
- Установление клиентского соединения с сервером
- Пример: подключение клиента к серверу
- Отправка и получение данных
- Сравнение именованных каналов и сокетов
- Пример: функция приема сообщений в случае сокета
- Пример: клиент на основе сокета
- Пример: усовершенствованный сервер на основе сокетов
- Внутрипроцессные серверы
- Ориентированные на строки сообщения, точкив хода DLL и TLS
- Пример: безопасная многопоточная DLL для обмена сообщениями через сокет
- Пример: альтернативная стратегия создания безопасных библиотек DLL с много поточной поддержкой
- Дейтаграммы
- Сравнение Berkeley Sockets и Windows Sockets
- Перекрывающийся ввод/вывод с использованием Windows Sockets
- Windows Sockets 2
- Резюме
- Упражнения
- ГЛАВА 13 Windows Services
- Написание программ, реализующихслужбы Windows Services: обзор
- Функция main()
- Функции ServiceMain()
- Регистрация управляющей программы службы
- Настройка состояния службы
- Структура SERVICE_STATUS
- Специфический для службы код
- Обработчик управляющих команд службы
- Пример: "интерфейсная оболочка" службы
- Управление службами Windows
- Резюме: функционирование и управление службой
- Пример:команднаяоболочкауправленияслужбами
- Совместное использование объектов ядра приложениями и службами
- Регистрация событий
- Замечания по отладке службы
- Резюме
- Упражнения
- ГЛАВА 14 Асинхронный ввод/вывод и порты завершения
- Обзор методов асинхронного ввода/вывода Windows
- Перекрывающийся ввод/вывод
- Перекрывающиеся сокеты
- Следствия применения перекрывающегося ввода/вывода
- Структуры OVERLAPPED
- Состояния перекрывающегося ввода/вывода
- Отмена выполнения операций перекрывающегося ввода/вывода
- Пример: использование дескриптора файла в качестве объекта синхронизации
- Пример: преобразование файлов с использованием перекрывающегося ввода/вывода и множественной буферизации
- Расширенный ввод/вывод с использованием процедуры завершения
- Функции ReadFileEx, WriteFileEx и процедурызавершения
- Функции дежурного ожидания
- Выполнение процедуры завершения и возврат из функции дежурного ожидания
- Пример: преобразование файла с использованием расширенного ввода/вывода
- Асинхронный ввод/вывод сиспользованием нескольких потоков
- Таймеры ожидания
- Пример: использование таймера ожидания
- Порты завершения ввода/вывода
- Управление портами завершения ввода/вывода
- Ожидание порта завершения ввода/вывода
- Отправка уведомления порту завершения ввода/вывода
- Альтернативы портам завершенияввода/вывода
- Пример: сервер, использующий порты завершения ввода/вывода
- Резюме
- Упражнения
- ГЛАВА 15 Безопасность объектов Windows
- Атрибуты безопасности
- Общий обзор средств безопасности: дескриптор безопасности
- Списки контроля доступа
- Использование объектов безопасности Windows
- Права объектов и доступ к объектам
- Инициализация дескриптора безопасности
- Управляющие флаги дескриптора безопасности
- Идентификаторы безопасности
- Работа с ACL
- Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS
- Пример: инициализация атрибутов защиты
- Чтение и изменение дескрипторов безопасности
- Пример: чтение разрешений на доступ к файлу
- Пример: изменение разрешений на доступ к файлу
- Защита объектов ядра и коммуникаций
- Пример: защита процесса и его потоков
- Обзор дополнительных возможностей защиты объектов
- Удаление элементов АСЕ
- Абсолютные и самоопределяющиеся относительные дескрипторы безопасности
- Системные списки ACL
- Информация, хранящаяся в маркерах доступа
- Управление идентификаторами SID
- Протокол защищенных сокетов
- Резюме
- Упражнения
- ГЛАВА 16 Программирование в среде Win64
- Нынешнее состояние Win64
- Обзор 64-разрядной архитектуры
- Необходимость в 64-битовой адресации
- Опыт UNIX
- Опыт перехода от 16-разрядных версий Windows к 32-разрядным
- Надолго ли хватит 64 бит?
- Модель программирования Win64
- Типы данных
- Типы данных фиксированной точности
- Типы данных, соответствующие точности указателей
- Пример: использование указательных типов данных
- Различия между Windows и UNIX
- Перенос имеющегося программного кода
- Изменения, связанные с использованием API
- Изменения, связанные с устранением неявных допущений относительно предполагаемых размеров элементов данных
- Пример: перенос программы sortMM (программа 5.5)
- Использование предупреждающих сообщений компилятора
- Код до подготовки к переносу
- Предупреждающие сообщения компилятора
- Предупреждающие сообщения и необходимые изменения, касающиеся других программ
- Резюме
- Упражнения
- ПРИЛОЖЕНИЕ А Использование примеров программ
- ПРИЛОЖЕНИЕ Б Сопоставление функций Windows, UNIX и библиотеки С
- ПРИЛОЖЕНИЕ В Результаты измерения производительности
- Тестовые конфигурации
- Измерение производительности
- Копирование файлов
- Преобразование символов из кодировки ASCII в Unicode
- Поиск заданных комбинаций символов
- Сортировка файлов
- Множество потоков, соревнующихся между собой за обладание единственным ресурсом
- Выполнение тестов
- Библиография
- Сноски из книги
- Содержание книги
- Популярные страницы
Оглавление статьи/книги
- Введение
- ГЛАВА 1 Знакомство с Win32 и Win64
- ГЛАВА 2 Использование файловой системы и функций символьного ввода/вывода Windows
- ГЛАВА 3 Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром
- ГЛАВА 4 Обработка исключений
- ГЛАВА 5 Управление памятью, отображение файлов и библиотеки DLL
- ГЛАВА 6 Управление процессами
- ГЛАВА 7 Потоки и планирование выполнения
- ГЛАВА 8 Синхронизация потоков
- ГЛАВА 9 Влияние синхронизации на производительность и рекомендации по ее повышению
- ГЛАВА 10 Усовершенствованные методы синхронизации потоков
- ГЛАВА 11 Взаимодействие между процессами
- ГЛАВА 12 Сетевое программирование с помощью сокетов Windows
- ГЛАВА 13 Windows Services
- ГЛАВА 14 Асинхронный ввод/вывод и порты завершения
- ГЛАВА 15 Безопасность объектов Windows
- ГЛАВА 16 Программирование в среде Win64
- ПРИЛОЖЕНИЕ А Использование примеров программ
- ПРИЛОЖЕНИЕ Б Сопоставление функций Windows, UNIX и библиотеки С
- ПРИЛОЖЕНИЕ В Результаты измерения производительности
- Библиография
- Сноски из книги
- Содержание книги
- Популярные страницы
Похожие страницы
- Системное программирование в среде Windows
- 1.1. Введение в объектно-ориентированное программирование
- InterBase Super Server для Windows
- Интеграция с платформой Windows NT
- Часы в Windows показывают неправильное время
- Классическая архитектура на Windows NT (Yaffil CS)
- Системное программное обеспечение
- 4.2. Центр уведомлений Windows 10
- Загрузочные дискеты и Live CD для Windows
- 6.8. Разгон видеокарты на Windows 10
- Интеграция Windows SharePoint и Microsoft Office
- Программирование на языке Пролог для искусственного интеллекта