Системное программирование в Windows
Книга была издана в 2006 году в серии «В подлиннике. Отдельная часть книги посвящена управлению безопасностью объектов в Windows. Проверка идентификатора безопасности на принадлежность маркеру доступа 932 Глава 44. Контекст потока 31 2.
Операционные системы и их интерфейсы 19 1. Управление безопасностью объектов на низком уровне 987 45.
Системное программирование в Windows - Отмена ожидающего таймера 549 29. Каждая тема снабжена практическими примерами использования функций Win32 API, которые представлены работающими листингами.
Системное программирование в Windows +CD » Название: Системное программирование в Windows +CD Автор: Побегайло А. Издательство: БХВ-Петербург Год: 2006 Страниц: 1056 ISBN: 5-94157-792-3 Формат: PDF Размер: 40 Мб Язык: русский Серия: В подлиннике Подробно рассматриваются вопросы системного программирования с использованием интерфейса Win32 API. Описываются управление потоками и процессами, включая их диспетчеризацию; синхронизация потоков; передача данных между процессами, с использованием анонимных и именованных каналов, а также почтовых ящиков; структурная обработка исключений; управление виртуальной памятью; управление файлами и каталогами; асинхронная обработка данных; создание динамически подключаемых библиотек; разработка сервисов. Отдельная часть книги посвящена управлению безопасностью объектов в Windows. Каждая тема снабжена практическими примерами использования функций Win32 API, которые представлены работающими листингами. Это позволяет использовать книгу в качестве пособия по системному программированию или справочника для системного программиста. Прилагаемый компакт-диск содержит листинги и проекты всех программ, рассмотренных в книге. Оглавление Предисловие 15 Глава 1. Операционные системы и их интерфейсы 19 1. Назначение операционной системы 19 1. Типы операционных систем 19 1. Интерфейс программирования приложений Win32 API 21 1. Типы данных в Win32 API 22 1. Объекты и их дескрипторы в Windows 24 ЧАСТЬ I. УПРАВЛЕНИЕ ПОТОКАМИ И ПРОЦЕССАМИ 27 Глава 2. Потоки и процессы 29 2. Определение потока 29 2. Контекст потока 31 2. Состояния потока 33 2. Диспетчеризация и планирование потоков 37 2. Определение процесса 40 Глава 3. Потоки в Windows 41 3. Определение потока 41 3. Создание потоков 42 3. Завершение потоков 47 3. Приостановка и возобновление потоков 49 3. Псевдодескрипторы потоков 52 3. Обработка ошибок в Windows 53 Глава 4. Процессы в Windows 58 4. Определение процесса 58 4. Создание процессов 58 4. Завершение процессов 64 4. Наследование дескрипторов 67 4. Дублирование дескрипторов 75 4. Псевдодескрипторы процессов 81 4. Обслуживание потоков 82 4. Динамическое изменение приоритетов потоков 88 ЧАСТЬ II. СИНХРОНИЗАЦИЯ ПОТОКОВ И ПРОЦЕССОВ 93 Глава 5. Непрерывные действия и команды 95 5. Определение синхронизации 96 5. Программная реализация синхронизации 97 5. Аппаратная реализация синхронизации 101 5. Примитивы синхронизации 104 Глава 6. Синхронизация потоков в Windows 109 6. Критические секции 109 6. Объекты синхронизации и функции ожидания 115 6. Семафоры 137 Глава 7. Взаимоисключающий доступ к переменным 143 7. Атомарные операции 143 7. Замена значения переменной 144 7. Условная замена значения переменной 146 7. Инкремент и декремент переменной 148 7. Изменение значения переменной 150 Глава 8. Определение тупиков 153 8. Классификация системных ресурсов 154 8. Обнаружение тупиков 156 8. Восстановление заблокированного процесса 158 8. Предотвращение тупиков 160 8. Безопасное завершение потоков в Windows 161 ЧАСТЬ III. ПРОГРАММИРОВАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ 165 Глава 9. Структура консольного приложения 167 9. Структура консоли 167 9. Входной буфер консоли 167 9. Буфер экрана 171 Глава 10. Работа с консолью 172 10. Создание консоли 172 10. Освобождение консоли 177 10. Стандартные дескрипторы ввода-вывода 178 Глава 11. Работа с окном консоли 180 11. Получение дескриптора окна консоли 180 11. Получение и изменение заголовка консоли 181 11. Определение максимального размера окна 183 11. Установка координат окна 184 Глава 12. Работа с буфером экрана 188 12. Создание и активация буфера экрана 188 12. Определение и установка параметров буфера экрана 191 12. Функции для работы с курсором 194 12. Чтение и установка атрибутов консоли 197 Глава 13. Ввод-вывод на консоль 203 13. Ввод-вывод высокого уровня 203 13. Ввод низкого уровня 207 13. Вывод низкого уровня 215 13. Режимы ввода-вывода консоли 225 13. Прокрутка буфера экрана 229 ЧАСТЬ IV. ОБМЕН ДАННЫМИ МЕЖДУ ПАРАЛЛЕЛЬНЫМИ ПРОЦЕССАМИ 235 Глава 14. Передача данных 237 14. Способы передачи данных между процессами 237 14. Связи между процессами 239 14. Передача сообщений 240 14. Синхронный и асинхронный обмен данными 241 14. Буферизация 242 Глава 15. Работа с анонимными каналами в Windows 243 15. Анонимные каналы 243 15. Создание анонимных каналов 244 15. Соединение клиентов с анонимным каналом 245 15. Обмен данными по анонимному каналу 246 15. Примеры работы с анонимными каналами 247 15. Перенаправление стандартного ввода-вывода 257 Глава 16. Работа с именованными каналами в Windows 265 16. Именованные каналы 265 16. Создание именованных каналов 266 16. Соединение сервера с клиентом 268 16. Соединение клиентов с именованным каналом 269 16. Обмен данными по именованному каналу 272 16. Копирование данных из именованного канала 285 16. Передача транзакций по именованному каналу 289 16. Определение и изменение состояния именованного канала 295 16. Получение информации об именованном канале 303 Глава 17. Работа с почтовыми ящиками в Windows 307 17. Концепция почтовых ящиков 307 17. Создание почтовых ящиков 308 17. Соединение клиентов с почтовым ящиком 309 17. Обмен данными через почтовый ящик 311 17. Получение информации о почтовом ящике 315 17. Изменение времени ожидания сообщения 321 ЧАСТЬ V. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧЕНИЙ 325 Глава 18. Фреймовая обработка исключений 327 18. Исключения и их обработчики 327 18. Получение кода исключения 330 18. Функции фильтра 332 18. Получение информации об исключении 334 18. Генерация программных исключений 337 18. Необработанные исключения 340 18. Обработка исключений с плавающей точкой 342 18. Обработка вложенных исключений 344 18. Передача управления и выход из фрейма 346 18. Встраивание SEH в механизм исключений С++ 348 Глава 19. Финальная обработка исключений 351 19. Финальные блоки фрейма 351 19. Проверка завершения фрейма 353 19. Обработка вложенных финальных блоков 354 ЧАСТЬ VI. РАБОТА С ВИРТУАЛЬНОЙ ПАМЯТЬЮ 357 Глава 20. Виртуальная память 359 20. Концепция виртуальной памяти 359 20. Организация виртуальной памяти 360 20. Алгоритмы замещения страниц 362 20. Рабочее множество процесса 363 20. Организация виртуальной памяти в Windows 363 Глава 21. Работа с виртуальной памятью в Windows 367 21. Состояния виртуальной памяти процесса 367 21. Резервирование, распределение и освобождение виртуальной памяти 368 21. Блокирование виртуальных страниц в реальной памяти 376 21. Изменение атрибутов доступа к виртуальной странице 378 21. Управление рабочим множеством страниц процесса 380 21. Инициализация и копирование блоков виртуальной памяти 383 21. Определение состояния памяти 385 21. Работа с виртуальной памятью в другом процессе 388 Глава 22. Работа с кучей в Windows 393 22. Создание и удаление кучи 393 22. Распределение и освобождение памяти из кучи 395 22. Перераспределение памяти из кучи 401 22. Блокирование и разблокирование кучи 403 22. Проверка состояния кучи 406 22. Уплотнение кучи 411 ЧАСТЬ VII. УПРАВЛЕНИЕ ФАЙЛАМИ 415 Глава 23. Общие концепции 417 23. Накопители на жестких магнитных дисках 417 23. Секторы и кластеры 418 23. Форматирование дисков 419 23. Функции файловой системы 420 23. Буферизация ввода-вывода 421 23. Кэширование ввода-вывода 421 Глава 24. Работа с файлами в Windows 423 24. Именование файлов в Windows 423 24. Создание и открытие файлов 424 24. Закрытие и удаление файлов 427 24. Запись данных в файл 428 24. Освобождение буферов файла 430 24. Чтение данных из файла 433 24. Копирование файла 435 24. Перемещение файла 437 24. Замещение файла 438 24. Работа с указателем позиции файла 440 24. Определение и изменение атрибутов файла 446 24. Определение и изменение размеров файла 449 24. Блокирование файла 455 24. Получение информации о файле 459 Глава 25. Работа с каталогами папками в Windows 468 25. Создание каталога 468 25. Поиск файлов в каталоге 470 25. Удаление каталога 473 25. Перемещение каталога 476 25. Определение и установка текущего каталога 477 25. Наблюдение за изменениями в каталоге 479 ЧАСТЬ VIII. АСИНХРОННАЯ ОБРАБОТКА ДАННЫХ 483 Глава 26. Асинхронный вызов процедур 485 26. Механизм асинхронного вызова процедур 485 26. Установка асинхронных процедур 486 26. Приостановка потока 487 26. Ожидание события 489 26. Оповещение и ожидание события 494 Глава 27. Асинхронный доступ к данным 499 27. Концепция асинхронного ввода-вывода 499 27. Асинхронная запись данных 500 27. Асинхронное чтение данных 506 24. Блокирование файлов 511 27. Определение состояния асинхронной операции ввода-вывода 518 27. Отмена асинхронной операции ввода-вывода 522 27. Процедуры завершения ввода-вывода 528 27. Асинхронная запись данных с процедурами завершения 529 27. Асинхронное чтение данных с процедурами завершения 532 Глава 28. Порты завершения 536 28. Концепция порта завершения 536 28. Создание порта завершения 537 28. Получение пакета из порта завершения 538 28. Посылка пакета в порт завершения 539 Глава 29. Работа с ожидающим таймером 544 29. Ожидающий таймер 544 29. Создание ожидающего таймера 545 29. Установка ожидающего таймера 546 29. Отмена ожидающего таймера 549 29. Открытие существующего ожидающего таймера 552 29. Процедуры завершения ожидания 555 ЧАСТЬ IX. ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ 559 Глава 30. Отображение файлов в память 561 30. Концепция механизма отображения файлов в память 561 30. Создание и открытие объекта, отображающего файл 562 30. Отображение файла в память 564 30. Обмен данными между процессами через отображаемый в память файл 569 30. Сброс вида в файл 573 Глава 31. Динамически подключаемые библиотеки 578 31. Концепция динамически подключаемых библиотек 578 31. Создание DLL 579 31. Динамическая загрузка и отключение DLL 581 31. Использование DLL 584 31. Использование файла определений 588 31. Статическая загрузка DLL 592 Глава 32. Локальная память потока 594 32. Динамическая локальная память потока 594 32. Распределение и освобождение локальной памяти потока 595 32. Запись и чтение из локальной памяти потока 595 32. Статическая локальная память потока 602 ЧАСТЬ X. РАЗРАБОТКА СЕРВИСОВ В WINDOWS 605 Глава 33. Сервисы в Windows 607 33. Концепция сервиса 607 33. Структура сервиса 608 33. Организация функции main 609 33. Организация функции ServiceMain 611 33. Организация обработчика управляющих команд 617 Глава 34. Работа с сервисами в Windows 620 34. Открытие доступа к базе данных сервисов 620 34. Установка сервиса 621 34. Открытие доступа к сервису 627 34. Запуск сервиса 627 34. Определение и изменение состояния сервиса 630 34. Определение и изменение конфигурации сервиса 634 34. Определение имени сервиса 641 34. Управление сервисом 646 34. Удаление сервисов 649 34. Блокирование базы данных сервисов 653 ЧАСТЬ XI. УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ В WINDOWS 659 Глава 35. Система информационной безопасности 661 35. Контроль доступа к ресурсам 661 35. Политика безопасности 662 35. Модель безопасности 663 35. Дискреционная политика безопасности 664 35. Дискреционная модель безопасности 665 35. Реализация дискреционной модели безопасности 668 Глава 36. Управление безопасностью в Windows 671 36. Модель безопасности в Windows 671 36. Учетные записи 672 36. Идентификаторы безопасности 678 36. Дескрипторы безопасности 682 36. Списки управления доступом ACL 683 36. Маркеры доступа 687 36. Создание новых объектов 693 36. Контроль доступа к охраняемому объекту 694 36. Аудит доступа к охраняемому объекту 696 36. Структура системы безопасности 696 Глава 37. Управление пользователями 699 37. Создание учетной записи пользователя 699 37. Получение информации о пользователе 704 37. Перечисление пользователей 706 37. Перечисление групп, которым принадлежит пользователь 710 37. Изменение учетной записи пользователя 715 37. Изменение пароля пользователя 719 37. Удаление учетной записи пользователя 721 Глава 38. Управление группами 724 38. Создание локальной группы 724 38. Получение информации о локальной группе 727 38. Перечисление локальных групп 729 38. Изменение информации о локальной группе 732 38. Добавление членов локальной группы 736 38. Установка членов локальной группы 742 38. Перечисление членов локальной группы 745 38. Удаление членов локальной группы 748 38. Удаление локальной группы 754 Глава 39. Работа с идентификаторами безопасности 756 39. Структура идентификатора безопасности 756 39. Создание идентификатора безопасности 757 39. Определение учетной записи по идентификатору безопасности 764 39. Определение идентификатора безопасности по имени учетной записи 769 39. Получение характеристик идентификатора безопасности 773 39. Копирование и сравнение идентификаторов безопасности 777 39. Строковое представление идентификатора безопасности 782 Глава 40. Работа с дескрипторами безопасности 788 40. Форматы дескрипторов безопасности 788 40. Создание нового дескриптора безопасности 791 40. Определение длины дескриптора безопасности 797 40. Получение дескриптора безопасности по имени объекта 802 40. Получение дескриптора безопасности по дескриптору объекта 806 40. Получение данных из дескриптора безопасности 810 40. Получение состояния управляющих флагов дескриптора безопасности 815 40. Изменение дескриптора безопасности по имени объекта 818 40. Изменение дескриптора безопасности по дескриптору объекта 823 40. Изменение состояния управляющих флагов дескриптора безопасности 827 40. Строковое представление дескрипторов безопасности 831 Глава 41. Работа со списками управления доступом на высоком уровне 840 41. Структура TRUSTEE 840 41. Инициализация структуры TRUSTEE 842 41. Создание нового списка управления доступом 850 41. Модификация списка управления доступом 862 41. Получение элементов из списка управления доступом 870 41. Получение информации из структуры TRUSTEE 871 41. Получение прав доступа из списка управления доступом 874 41. Получение из списка управления доступом прав, которые подвергаются аудиту 878 Глава 42. Работа с привилегиями 885 42. Локальные идентификаторы привилегий 885 42. Инициализация локального идентификатора 887 42. Получение локального идентификатора привилегии 888 42. Получение имени привилегии 888 42. Получение имени привилегии для отображения 891 Глава 43. Работа с маркерами доступа 894 43. Открытие маркера доступа процесса 894 43. Открытие маркера доступа потока 896 43. Структуры, используемые для работы с маркером доступа 896 43. Получение информации из маркера доступа 900 43. Изменение информации в маркере доступа 908 43. Настройка привилегий 917 43. Настройка групп 918 43. Создание маркера ограниченного доступа 920 43. Дублирование маркеров доступа 927 43. Замещение маркеров доступа потока 929 43. Проверка идентификатора безопасности на принадлежность маркеру доступа 932 Глава 44. Работа со списками управления доступом на низком уровне 939 44. Структура списка управления доступом 939 44. Структура элемента списка управления доступом 940 44. Инициализация списка управления доступом 943 44. Проверка достоверности списка управления доступом 944 44. Добавление элементов в список управления доступом 945 44. Получение элементов из списка управления доступом 972 44. Удаление элементов из списка управления доступом 977 44. Получение информации о списке управления доступом 981 44. Установка версии списка управления доступом 985 44. Определение доступной памяти 986 Глава 45. Управление безопасностью объектов на низком уровне 987 45. Доступ к информации о владельце объекта 988 45. Доступ к информации о первичной группе владельца объекта 992 45. Доступ к списку DACL 997 45. Доступ к списку SACL 1004 45. Защита файлов и каталогов 1006 45. Защита объектов ядра 1016 45. Защита сервисов 1024 45. Защита ключей реестра 1031 45. Защита объектов пользователя 1037 Приложение. Описание компакт-диска 1045 Предметный указатель 1047 Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Автор:Коллектив Название: Программирование на Visual С ++ Издательство: Teachpro Год: 2009 Формат: ISO Размер: 265 МВ Страниц:1000... Название: Программирование на Microsoft Visual C++ 6. Название: Программирование на Python 3. Подробное руководство Автор: Марк Саммерфилд Издательство: Символ-Плюс Год: 2009 Страниц: 608 Формат: PDF... Разработка приложений для Windows Автор: Юрий Щупак Издательство: Питер Год: 2008 Страниц: 592 Формат: PDF Размер: 10 Mb Язык:... Название: Ассемблер для Windows +CD Автор: Пирогов В. Издательство: БХВ-Петербург Год: 2007 Страниц: 886 ISBN: 978-5-9775-0084-5 Формат: PDF... Эффективная разработка приложений Автор: Щупак Ю. Издательство: Питер Год: 2007 Cтраниц: 573 Формат: pdf Размер: 38 мб Язык:... Название: Технология программирования на C++. Win32 API-приложения Автор: Литвиненко Н. Название: Объектно-ориентированное программирование Автор: Хорев П. Издательство: Академия Год: 2011 Страниц: 446 ISBN: 978-5-7695-8091-8 Формат:... Название: Программирование на ASP. NET Автор: Снетков В. Системное программирование 2-е изд. Автор: Роберт Лав Издательство: Питер Год: 2014 Формат: PDF Размер: 11 Мб Язык: русский... Название: Введение во внутреннее устройство Windows Автор: Котельников Е.
Концепция почтовых ящиков 307 17. Работа с маркерами доступа 894 43. Наследование дескрипторов 67 4. Обмен данными через почтовый ящик 311 17. Определение процесса 58 4. Отдельная часть книги посвящена управлению безопасностью объектов в Windows.