Системное программирование в среде Windows.
- Введение. ⇢
- Потенциальная аудитория. ⇢
- Изменения в третьем издании. ⇢
- Как организована эта книга. ⇢
- Сопоставление с UNIX и библиотекой С. ⇢
- Примеры. ⇢
- Web-сайты, посвященные этой книге. ⇢
- Благодарности. ⇢
- От издательства. ⇢
- ГЛАВА 1. Знакомство с Win32 и Win64. ⇢
- Основные возможности операционных систем. ⇢
- Эволюция Windows. ⇢
- Версии Windows. ⇢
- Устаревшие предыдущие версии Windows. ⇢
- Windows NT 5.x. ⇢
- Другие интерфейсы программирования для Windows. ⇢
- Поддержка процессоров. ⇢
- Воздействие Windows на ситуацию на рынке. ⇢
- Windows, стандарты и открытые системы. ⇢
- Библиотеки совместимости. ⇢
- Принципы, лежащие в основе Windows. ⇢
- Подготовка к работе с Win64. ⇢
- О целесообразности привлечения функций стандартной библиотеки C для обработки файлов. ⇢
- Что требуется для работы с данной книгой. ⇢
- Пример: простое последовательное копирование файла. ⇢
- Копирование файлов с использованием стандартной библиотеки С. ⇢
- Программа 1.1. срС: копирование файлов с использованием библиотеки С.
- Копирование файлов с использованием Windows. ⇢
- Программа 1.2. cpW: копирование файлов с использованием Windows, первая реализация.
- Копирование файлов с использованием вспомогательной функции Windows. ⇢
- Программа1.3.cpCF: копирование файлов с использованием вспомогательной функции Windows.
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Win32.
- Win64.
- Архитектура Windows NT и история ее развития.
- UNIX.
- Программирование с использованием Windows GUI.
- Теория операционных систем.
- Стандартная библиотека ANSI С.
- Windows СЕ.
- Эмуляция Windows в UNIX.
- Упражнения. ⇢
- ГЛАВА 2. Использование файловой системы и функций символьного ввода/вывода Windows. ⇢
- Файловые системы Windows. ⇢
- Правила именования файлов. ⇢
- Операции открытия, чтения, записи и закрытияфайлов. ⇢
- Создание и открытие файла. ⇢
- Параметры.
- Закрытие файла. ⇢
- Чтение файла. ⇢
- Параметры.
- Запись в файл. ⇢
- Вступление: стандартные символы и символы Unicode. ⇢
- Альтернативные функции для работы с обобщенными строками. ⇢
- Обобщенная функция Main. ⇢
- Определения функций. ⇢
- Стратегии использования символов Unicode. ⇢
- Стандартные устройства и консольный ввод/вывод. ⇢
- Параметры.
- Параметры.
- Параметры.
- Пример: вывод на консоль сообщений и подсказок для пользователя. ⇢
- Программа 2.1. PrintMsg: вспомогательные функции вывода на консоль сообщений и ожидания ответа от пользователя.
- Пример: обработка ошибок. ⇢
- Программа 2.2. Функция Report Error, предназначенная для вывода сообщений об ошибках при выполнении системных вызовов.
- Пример: копирование нескольких файлов на стандартное устройство вывода. ⇢
- Программа 2.3. cat: вывод нескольких файлов на стандартное устройство вывода.
- Пример: преобразование символов из ASCII в Unicode. ⇢
- Программа 2.4. atou: преобразование файла с выводом сообщений об ошибках.
- Программа 2.5. Функция Asc2Un.
- Производительность программы. ⇢
- Управление файлами и каталогами. ⇢
- Управление файлами. ⇢
- Параметры.
- Управление каталогами. ⇢
- Пример: печать текущего каталога. ⇢
- Программа 2.6. pwd: печать текущего каталога.
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Организация хранения данных в Windows и NTFS.
- Unicode.
- UNIX.
- Упражнения. ⇢
- ГЛАВА 3. Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром. ⇢
- 64-битовая файловая система. ⇢
- Указатели файлов. ⇢
- Параметры.
- 64-битовая арифметика. ⇢
- Указание позиции файла с помощью структуры OVERLAPPED. ⇢
- Определение размера файла. ⇢
- Установка размера файла, инициализация файла и разреженные файлы. ⇢
- Пример: обновление записей, находящихся в произвольном месте файла. ⇢
- Программа 3.1. RecordAccess.
- Атрибуты файлов и управление каталогами. ⇢
- Параметры.
- Полные имена файлов. ⇢
- Другие методы определения атрибутов файлов и каталогов. ⇢
- Именование временных файлов. ⇢
- Параметры.
- Точки монтирования. ⇢
- Пример: вывод списка атрибутов файла. ⇢
- Программа 3.2. lsw: вывод списка файлов и обход дерева каталогов.
- Пример: установка меток времени файла. ⇢
- Программа 3.3. touch: установка меток даты и времени файла.
- Стратегии обработки файлов. ⇢
- Блокирование файлов. ⇢
- Параметры.
- Снятие блокировок.
- Следствия принятой логики блокирования файлов. ⇢
- Использование блокирования файлов.
- Реестр. ⇢
- Ключи реестра. ⇢
- Управление системным реестром. ⇢
- Управление подразделами реестра. ⇢
- Параметры.
- Параметры.
- Управление значениями. ⇢
- Пример: вывод списка разделов и содержимого реестра. ⇢
- Программа 3.4. lsReq: вывод списка разделов и содержимого системного реестра.
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Упражнения. ⇢
- ГЛАВА 4. Обработка исключений. ⇢
- Исключения и обработчики исключений. ⇢
- Блоки try и except. ⇢
- Выражения фильтров и их значения. ⇢
- Коды исключений. ⇢
- Резюме: последовательность обработки исключений. ⇢
- Исключения, возникающие при выполнении операций над числами с плавающей точкой. ⇢
- Ошибки и исключения. ⇢
- Исключения, генерируемые приложением. ⇢
- Параметры.
- Пример: обработка ошибок как исключений. ⇢
- Программа 4.1. ReportException: функция вывода сообщений об исключениях.
- Обработчики завершения. ⇢
- Выход из try-блока. ⇢
- Аварийное завершение. ⇢
- Выполнение обработчика завершения и выход из него. ⇢
- Сочетание блоков finally и except. ⇢
- Глобальное и локальное разворачивание стека. ⇢
- Обработчики завершения: завершение процессов и потоков. ⇢
- SEH и обработка исключений в C++ ⇢
- Пример: использование обработчиков завершения для повышения качества программ. ⇢
- Программа 4.2. toupper: обработка файлов с восстановлением нормального состояния программы после сбоев.
- Пример: использование функции фильтра. ⇢
- Программа 4.3. Exception: обработка исключений и завершения выполнения.
- Программа 4.4. Функция Filter.
- Обработчики управляющих сигналов консоли. ⇢
- Пример: обработчик управляющих сигналов консоли. ⇢
- Программа 4.5. Ctrlc: программа обработки сигналов.
- Векторная обработка исключений. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Упражнения. ⇢
- ГЛАВА 5. Управление памятью, отображение файлов и библиотеки DLL. ⇢
- Архитектура системы управления памятью в Win32 и Win64. ⇢
- Обзор методов управления памятью. ⇢
- Куча. ⇢
- Управление памятью кучи. ⇢
- Параметры.
- Параметры.
- Флаг HEAP_NO_SERIALIZE.
- Флаг HEAP_GENERATE_EXCEPTIONS.
- Другие функции кучи. ⇢
- Резюме: управление кучами. ⇢
- Пример: сортировка файлов с использованием бинарного дерева поиска. ⇢
- Программа 5.1. sortBT: сортировка с использованием бинарного дерева поиска.
- Программа 5.2. FillTree и другие функции управления деревом поиска.
- Отображение файлов. ⇢
- Объекты отображения файлов. ⇢
- Параметры.
- Отображение файла на адресное пространство процесса. ⇢
- Параметры.
- Ограничения метода отображения файлов. ⇢
- Резюме: отображение файлов. ⇢
- Пример: последовательная обработка файлов с использованием метода отображения. ⇢
- Программа 5.3. Asc2UnMM: преобразование файла с использованием метода отображения файлов.
- Пример: сортировка отображенных файлов. ⇢
- Программа 5.4. sortFL: сортировка файла с использованием его отображения в памяти.
- Базовые указатели. ⇢
- Пример: использование базовых указателей. ⇢
- Программа 5.5. sortMM: использование базовых указателей в индексном файле.
- Программа 5.6. sortMM: создание индексного файла.
- Динамически компонуемые библиотеки. ⇢
- Статические и динамические библиотеки. ⇢
- Неявное связывание. ⇢
- Экспортирование и импортирование интерфейсов.
- Явное связывание. ⇢
- Пример: явное связывание функци и преобразования файлов. ⇢
- Программа 5.7. atouEL: преобразование файлов с использованием явного связывания.
- Создание библиотек DLL на основе функции Asc2Un. ⇢
- Точки входа библиотеки DLL. ⇢
- Управление версиями DLL. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Отображение файлов, виртуальная память и ошибки страниц.
- Структуры данных и алгоритмы.
- Использование явного связывания.
- Упражнения. ⇢
- ГЛАВА 6. Управление процессами. ⇢
- Процессы и потоки Windows. ⇢
- Создание процесса. ⇢
- Параметры.
- Указание исполняемого модуля и командной строки. ⇢
- Наследуемые дескрипторы. ⇢
- Счетчики дескрипторов процессов. ⇢
- Идентификаторы процессов. ⇢
- Параметры.
- Дублирование дескрипторов. ⇢
- Завершение и прекращение выполнения процесса. ⇢
- Ожидание завершения процесса. ⇢
- Блоки и строки окружения. ⇢
- Защита процесса. ⇢
- Пример: параллельный поиск указанного текстового шаблона. ⇢
- Программа 6.1. grepMP: выполнение параллельного поиска текстового шаблона.
- Процессы в многопроцессорной среде. ⇢
- Временные характеристики процесса. ⇢
- Пример: временные характеристики процессов. ⇢
- Программа 6.2. timep: временные характеристики процессов.
- Использование команды timep. ⇢
- Генерация управляющих событий консоли. ⇢
- Пример: простое управление задачами. ⇢
- Создание фоновых задач. ⇢
- Программа 6.3. JobShell: создание, вывод списка и прекращение выполнения фоновых задач.
- Получение номера задачи. ⇢
- Программа 6.4. JobMgt: создание информации о новой задаче.
- Вывод списка фоновых задач. ⇢
- Программа 6.5. JobMgt: отображение списка активных задач.
- Поиск задачи в файле списка задач. ⇢
- Программа 6.6. JobMgt: получение идентификатора процесса по номеру задачи.
- Объекты задач. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Упражнения. ⇢
- ГЛАВА 7. Потоки и планирование выполнения. ⇢
- Обзор потоков. ⇢
- Перспективы и проблемы. ⇢
- Основные сведения о потоках. ⇢
- Управление потоками. ⇢
- Параметры.
- Идентификация потоков. ⇢
- Дополнительные функции управления потоками. ⇢
- Приостановка и возобновление выполнения потока. ⇢
- Ожидание завершения потока. ⇢
- Удаленные потоки. ⇢
- Использование библиотеки С впотоках. ⇢
- Библиотеки с многопоточной поддержкой. ⇢
- Пример: многопоточный поиск контекста. ⇢
- Программа 7.1. grepMT: многопоточный поиск текстового шаблона.
- Потоки и производительность. ⇢
- Модель "хозяин/рабочий" и другие модели многопоточных приложений. ⇢
- Пример: применение принципа "разделяй и властвуй" для решения задачи сортировки слиянием в SMP-системах. ⇢
- Программа 7.2. sortMT: сортировка слиянием с использованием нескольких потоков.
- Производительность. ⇢
- Локальные области хранения потоков. ⇢
- Приоритеты процессов и потоков и планирование выполнения. ⇢
- Предостережение относительно использования приоритетов потоков и процессов. ⇢
- Состояния потоков. ⇢
- Возможные ловушки и распространенные ошибки. ⇢
- Ожидание в течение конечного интервала времени. ⇢
- Облегченные потоки. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Windows.
- UNIX и Pthreads.
- Упражнения. ⇢
- ГЛАВА 8. Синхронизация потоков. ⇢
- Необходимость в синхронизации потоков. ⇢
- Критические участки кода. ⇢
- Неудачные пути решения проблемы критических участков кода.
- Класс памяти volatile.
- Функции взаимоблокировки. ⇢
- Локальная и глобальная память. ⇢
- Резюме: безопасный многопоточный код. ⇢
- Объекты синхронизации потоков. ⇢
- Объекты критических участковкода. ⇢
- Настройка спин-счетчика. ⇢
- Использование объектов CRITICAL_SECTION для защиты разделяемыхпеременных. ⇢
- Пример: простая система "производитель/потребитель". ⇢
- Программа 8.1.simplePC: простая система "производитель/потребитель".
- Комментарии к примеру простой системы "производитель/потребитель". ⇢
- Мьютексы. ⇢
- Покинутые мьютексы. ⇢
- Мьютексы, критические участки кода и взаимоблокировки. ⇢
- Сравнительный обзор: мьютексы и объекты CRITICAL_SECTION. ⇢
- Синхронизация куч. ⇢
- Семафоры. ⇢
- Использование семафоров. ⇢
- Ограниченность семафоров. ⇢
- События. ⇢
- Обзор: четыре модели использования событий. ⇢
- Пример: система "производитель/потребитель". ⇢
- Программа 8.2. eventPC: система "производитель/потребитель", использующая сигналы.
- Обзор: объекты синхронизации Windows. ⇢
- Ожидание сообщений и объектов. ⇢
- Дополнительные рекомендации относительно использования мьютексов и объектов CRITICAL_SECTION. ⇢
- Другие функции взаимоблокировки. ⇢
- Учет факторов производительности при организации управленияпамятью. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Windows.
- Упражнения. ⇢
- ГЛАВА 9. Влияние синхронизации на производительность и рекомендации по ее повышению. ⇢
- Влияние синхронизации на производительность. ⇢
- Достоинства и недостатки объектов CRITICAL_SECTION. ⇢
- Программа 9.1. statsMX: поддержка статистики потоков.
- Модельная программа для исследования факторов производительности. ⇢
- Настройка производительности SMP-систем с помощью спин-счетчиков. ⇢
- Установка значений спин-счетчиков. ⇢
- Дросселирование семафора для уменьшения состязательности между потоками. ⇢
- Родство процессоров. ⇢
- Маски родства системы, процесса и потока. ⇢
- Определение количества процессоров в системе. ⇢
- Гиперпотоки и счетчик процессоров. ⇢
- Порты завершения ввода/вывода. ⇢
- Рекомендации по повышению производительности и возможные риски. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Упражнения. ⇢
- ГЛАВА 10. Усовершенствованные методы синхронизации потоков. ⇢
- Модель переменных условий и свойства безопасности. ⇢
- Совместное использование событий и мьютексов. ⇢
- Модель переменных условий. ⇢
- Комментарии по поводу модели переменных условий.
- Использование модели переменных условий.
- Разновидности модели переменных условий.
- Пример предиката переменной условия.
- Семафоры и модель переменных условий.
- Использование функции SignalObjectAndWait. ⇢
- Пример: объект порогового барьера. ⇢
- Программа 10.1. SynchObj.h: часть 1 — объявления объекта порогового барьера.
- Программа 10.2. ThbObject.с: реализация объекта порогового барьера.
- Комментарии по поводу реализации объекта порогового барьера. ⇢
- Объект очереди. ⇢
- Программа 10.3. SynchObj.h: часть 2 — объявления объекта очереди.
- Программа 10.4. QueueObj.с: функции управления очередью.
- Комментарии по поводу функций управления очередью с точки зрения производительности. ⇢
- Пример: использование очередей в многоступенчатом конвейере. ⇢
- Программа 10.5. ThreeStage.с: многоступенчатыйконвейер.
- Комментарии по поводу многоступенчатого конвейера. ⇢
- Асинхронные вызовы процедур. ⇢
- Очередизация асинхронных вызовов процедур. ⇢
- АРС и упущенные сигналы. ⇢
- Состояния дежурного ожидания. ⇢
- Программа 10.6. Модифицированная функция q_get, обеспечивающая корректное завершение выполнения потоков.
- Безопасная отмена выполнения потоков. ⇢
- Создание переносимых приложений с использованием потоков Pthreads. ⇢
- Стеки потоков и допустимые количества потоков. ⇢
- Рекомендации по проектированию, отладке и тестированию программ. ⇢
- Как избежать создания некорректного программного кода. ⇢
- За рамками Windows API. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Упражнения. ⇢
- ГЛАВА 11. Взаимодействие между процессами. ⇢
- Анонимные каналы. ⇢
- Пример: перенаправление ввода/вывода с использованием анонимного канала. ⇢
- Программа 11.1. pipe: межпроцессное взаимодействие с использованием анонимных каналов.
- Именованные каналы. ⇢
- Использование именованных каналов. ⇢
- Создание именованных каналов. ⇢
- Параметры.
- Подключение клиентов именованных каналов. ⇢
- Функции состояния именованных каналов. ⇢
- Функции подключения именованных каналов. ⇢
- Подключение клиентов и серверов именованных каналов. ⇢
- Функции транзакций именованных каналов. ⇢
- Определение наличия сообщений в именованных каналах. ⇢
- Пример: клиент-серверный процессор командной строки. ⇢
- Программа 11.2. clientNP: клиент, ориентированный на соединение посредством именованного канала.
- Программа 11.3. serverNP: многопоточный сервер именованного канала.
- Комментарии по поводу клиент-серверного процессора командной строки. ⇢
- Почтовые ящики. ⇢
- Использование почтовых ящиков. ⇢
- Создание и открытие почтового ящика. ⇢
- Параметры.
- Создание, подключение и именование каналов и почтовых ящиков. ⇢
- Пример: сервер, обнаруживаемый клиентами. ⇢
- Программа 11.4. SrvrBcst: функция потока почтового клиента.
- Программа 11.5. LocSrvr: почтовый сервер.
- Комментарии по поводу многопоточных моделей. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Упражнения. ⇢
- ГЛАВА 12. Сетевое программирование с помощью сокетов Windows. ⇢
- Сокеты Windows. ⇢
- Инициализация Winsock. ⇢
- Параметры.
- Создание сокета. ⇢
- Параметры.
- Серверные функции сокета. ⇢
- Связывание сокета. ⇢
- Параметры.
- Перевод связанного сокета в состояние прослушивания. ⇢
- Прием клиентских запросов соединения. ⇢
- Параметры.
- Отключение и закрытие сокетов. ⇢
- Пример: подготовка и получение клиентских запросов соединения. ⇢
- Клиентские функции сокета. ⇢
- Установление клиентского соединения с сервером. ⇢
- Параметры.
- Пример: подключение клиента к серверу. ⇢
- Отправка и получение данных. ⇢
- Сравнение именованных каналов и сокетов. ⇢
- Сравнение серверов именованных каналов и сокетов. ⇢
- Сравнение клиентов именованных каналов и сокетов. ⇢
- Пример: функция приема сообщений в случае сокета. ⇢
- Пример: клиент на основе сокета. ⇢
- Программа 12.1. clientSK: клиент на основе сокетов.
- Пример: усовершенствованный сервер на основе сокетов. ⇢
- Программа 12.2. serverSK: сервер на основе сокета с внутрипроцессными серверами.
- Замечания по поводу безопасности. ⇢
- Внутрипроцессные серверы. ⇢
- Программа 12.3. command: пример внутри процессных серверов.
- Ориентированные на строки сообщения, точкив хода DLL и TLS. ⇢
- Решение проблемы долговременных состояний в многопоточной среде. ⇢
- Пример: безопасная многопоточная DLL для обмена сообщениями через сокет. ⇢
- Программа 12.4. SendReceiveSKST: безопасная многопоточная DLL.
- Комментарии по поводу DLL и безопасной многопоточной среды. ⇢
- Пример: альтернативная стратегия создания безопасных библиотек DLL с много поточной поддержкой. ⇢
- Программа 12.5. SendReceiveSKHA: безопасная многопоточная DLL со структурой состояния.
- Дейтаграммы. ⇢
- Использование дейтаграмм для удаленного вызова процедур. ⇢
- Сравнение Berkeley Sockets и Windows Sockets. ⇢
- Перекрывающийся ввод/вывод с использованием Windows Sockets. ⇢
- Windows Sockets 2. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Windows Sockets.
- Berkeley Sockets и TCP/IP.
- Упражнения. ⇢
- ГЛАВА 13. Windows Services. ⇢
- Написание программ, реализующихслужбы Windows Services: обзор. ⇢
- Функция main(). ⇢
- Программа 13.1. main: точка входа main службы.
- Функции ServiceMain(). ⇢
- Регистрация управляющей программы службы. ⇢
- Параметры.
- Настройка состояния службы. ⇢
- Параметры.
- Структура SERVICE_STATUS. ⇢
- Параметры.
- Тип службы.
- Состояние службы.
- Воспринимаемые управляющие коды.
- Специфический для службы код. ⇢
- Обработчик управляющих команд службы. ⇢
- Пример: "интерфейсная оболочка" службы. ⇢
- Программа 13.2. SimpleService: оболочка службы.
- Управление службами Windows. ⇢
- Открытие SCM. ⇢
- Параметры.
- Создание и удаление службы. ⇢
- Параметры.
- Запуск службы. ⇢
- Управление службой. ⇢
- Опрос состояния службы. ⇢
- Резюме: функционирование и управление службой. ⇢
- Пример:команднаяоболочкауправленияслужбами. ⇢
- Программа 13.3. ServiceShell: программа управления службами.
- Совместное использование объектов ядра приложениями и службами. ⇢
- Регистрация событий. ⇢
- Замечания по отладке службы. ⇢
- Резюме. ⇢
- В следующих главах. ⇢
- Дополнительная литература. ⇢
- Упражнения. ⇢
- ГЛАВА 14. Асинхронный ввод/вывод и порты завершения. ⇢
- Обзор методов асинхронного ввода/вывода Windows. ⇢
- Перекрывающийся ввод/вывод. ⇢
- Перекрывающиеся сокеты. ⇢
- Следствия применения перекрывающегося ввода/вывода. ⇢
- Структуры OVERLAPPED. ⇢
- Состояния перекрывающегося ввода/вывода. ⇢
- Отмена выполнения операций перекрывающегося ввода/вывода. ⇢
- Пример: использование дескриптора файла в качестве объекта синхронизации. ⇢
- Пример: преобразование файлов с использованием перекрывающегося ввода/вывода и множественной буферизации. ⇢
- Программа 14.1. atouOV: преобразование файла с использованием перекрывающегося ввода/вывода.
- Расширенный ввод/вывод с использованием процедуры завершения. ⇢
- Функции ReadFileEx, WriteFileEx и процедурызавершения. ⇢
- Функции дежурного ожидания. ⇢
- Выполнение процедуры завершения и возврат из функции дежурного ожидания. ⇢
- Пример: преобразование файла с использованием расширенного ввода/вывода. ⇢
- Программа 14.2. atouEx: преобразование файла с использованием расширенного ввода/вывода.
- Асинхронный ввод/вывод сиспользованием нескольких потоков. ⇢
- Таймеры ожидания. ⇢
- Пример: использование таймера ожидания. ⇢
- Программа 14.3. TimeBeep: генерация периодических сигналов.
- Комментарии к примеру с таймером ожидания. ⇢
- Порты завершения ввода/вывода. ⇢
- Управление портами завершения ввода/вывода. ⇢
- Ожидание порта завершения ввода/вывода. ⇢
- Отправка уведомления порту завершения ввода/вывода. ⇢
- Альтернативы портам завершенияввода/вывода. ⇢
- Пример: сервер, использующий порты завершения ввода/вывода. ⇢
- Программа 14.4. serverCP: сервер, использующий порт завершения.
- Резюме. ⇢
- В следующих главах. ⇢
- Упражнения. ⇢
- ГЛАВА 15. Безопасность объектов Windows. ⇢
- Атрибуты безопасности. ⇢
- Общий обзор средств безопасности: дескриптор безопасности. ⇢
- Списки контроля доступа. ⇢
- Использование объектов безопасности Windows. ⇢
- Права объектов и доступ к объектам. ⇢
- Инициализация дескриптора безопасности. ⇢
- Управляющие флаги дескриптора безопасности. ⇢
- Идентификаторы безопасности. ⇢
- Параметры.
- Получение имени учетной записи и имени пользователя.
- Работа с ACL. ⇢
- Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS. ⇢
- Программа 15.1. chmodW: изменение разрешений на доступ к файлу.
- Программа 15.2. lsFP: перечисление разрешений на доступ к файлу.
- Пример: инициализация атрибутов защиты. ⇢
- Программа 15.3. InitUnFp: инициализация атрибутов защиты.
- Комментарии к программе 15.3. ⇢
- Чтение и изменение дескрипторов безопасности. ⇢
- Пример: чтение разрешений на доступ к файлу. ⇢
- Программа 15.4. ReadFilePermissions: чтение атрибутов безопасности.
- Пример: изменение разрешений на доступ к файлу. ⇢
- Программа 15.5. ChangeFilePermissions: изменение атрибутов безопасности.
- Комментарии по поводу разрешений на доступ к файлам.
- Защита объектов ядра и коммуникаций. ⇢
- Защита именованных каналов. ⇢
- Программа 15.6. ServerNP: защита именованного канала.
- Защита объектов ядра и приватных объектов. ⇢
- Значения маски АСЕ. ⇢
- Пример: защита процесса и его потоков. ⇢
- Обзор дополнительных возможностей защиты объектов. ⇢
- Удаление элементов АСЕ. ⇢
- Абсолютные и самоопределяющиеся относительные дескрипторы безопасности. ⇢
- Системные списки ACL. ⇢
- Информация, хранящаяся в маркерах доступа. ⇢
- Управление идентификаторами SID. ⇢
- Протокол защищенных сокетов. ⇢
- Резюме. ⇢
- В следующей главе. ⇢
- Дополнительная литература. ⇢
- Windows.
- Строение и архитектура Windows NT.
- Стандарт безопасности Orange Book C2.
- Упражнения. ⇢
- ГЛАВА 16. Программирование в среде Win64. ⇢
- Нынешнее состояние Win64. ⇢
- Поддержка процессоров. ⇢
- Поддержка Windows. ⇢
- Поддержка сторонних компаний. ⇢
- Обзор 64-разрядной архитектуры. ⇢
- Необходимость в 64-битовой адресации. ⇢
- Опыт UNIX. ⇢
- Опыт перехода от 16-разрядных версий Windows к 32-разрядным. ⇢
- Надолго ли хватит 64 бит? ⇢
- Модель программирования Win64. ⇢
- Цели. ⇢
- Типы данных. ⇢
- Типы данных фиксированной точности. ⇢
- Типы данных, соответствующие точности указателей. ⇢
- Пример: использование указательных типов данных. ⇢
- Различия между Windows и UNIX. ⇢
- Перенос имеющегося программного кода. ⇢
- Изменения, связанные с использованием API. ⇢
- Изменения, связанные с устранением неявных допущений относительно предполагаемых размеров элементов данных. ⇢
- Пример: перенос программы sortMM (программа 5.5). ⇢
- Использование предупреждающих сообщений компилятора. ⇢
- Код до подготовки к переносу. ⇢
- Программа 16.1. sortMM.с: код до подготовки к переносув Win64, часть 1.
- Предупреждающие сообщения компилятора. ⇢
- Программа 16.2. sortMM: код до подготовки к переносу в Win64, часть 2.
- Предупреждающие сообщения и необходимые изменения, касающиеся других программ. ⇢
- Резюме. ⇢
- Дополнительная литература. ⇢
- Упражнения. ⇢
- ПРИЛОЖЕНИЕ А. Использование примеров программ. ⇢
- Структура каталогов. ⇢
- Учебные пособия (слайды). ⇢
- Каталог Utility. ⇢
- Каталог Include. ⇢
- Распределение программ по главам. ⇢
- Глава 1.
- Глава 2.
- Глава 3.
- Глава 4.
- Глава 5.
- Глава 6.
- Глава 7.
- Глава 8.
- Глава 9.
- Глава 10.
- Глава 11.
- Глава 12.
- Глава 13.
- Глава 14.
- Глава 15.
- Глава 16.
- Листинги включаемых файлов. ⇢
- EvryThng.h.
- Программа А.1. Заголовочный файл EvryThng.h.
- Envirmnt.h.
- Программа А.2. Включаемый файл Envirmnt.h.
- Support.h.
- Программа А.З. Включаемый файл Support.h.
- JobMgt.h.
- Программа А.4. Включаемый файл JobMgt.h.
- ClntSrvr.h.
- Программа А.5. Включаемый файл ClntSrvr.h.
- Exclude.h.
- Программа А.6. Включаемый файл Exclude.h.
- Дополнительные служебные программы. ⇢
- Options.с.
- Программа А.7. Функция Options.
- SkipArg.с.
- Программа А.8. Функция SkipArg.
- GetArgs.с.
- Программа А.9. Функция GetArgs.
- ПРИЛОЖЕНИЕ Б. Сопоставление функций Windows, UNIX и библиотеки С. ⇢
- Главы 2 и 3: управление файлами и каталогами.
- Глава 4: обработка исключений.
- Глава 5: управление памятью, отображение файлов и библиотеки DLL.
- Глава 6: управление процессами.
- Глава 7: Потоки и планирование выполнения.
- Главы 8-10: синхронизация потоков.
- Глава 11: Взаимодействие между процессами.
- Глава 14: асинхронный ввод/вывод.
- Глава 15: Безопасность объектов Windows.
- ПРИЛОЖЕНИЕ В. Результаты измерения производительности. ⇢
- Тестовые конфигурации. ⇢
- Приложения. ⇢
- Хост-системы. ⇢
- Измерение производительности. ⇢
- Копирование файлов. ⇢
- Комментарии.
- Преобразование символов из кодировки ASCII в Unicode. ⇢
- Комментарии.
- Поиск заданных комбинаций символов. ⇢
- Комментарии.
- Сортировка файлов. ⇢
- Комментарии.
- Множество потоков, соревнующихся между собой за обладание единственным ресурсом. ⇢
- Выполнение тестов. ⇢
- Библиография. ⇢
- Примечания. ⇢
Джонсон М. Харт.