А побегайло системное программирование в windows pdf
А побегайло системное программирование в windows pdf
Название: Системное программирование в Windows (+CD)
Автор: Побегайло А.
Издательство: БХВ-Петербург
Год: 2006
Страниц: 1056
ISBN: 5-94157-792-3
Формат: PDF
Размер: 40 Мб
Язык: русский
Серия: В подлиннике
Подробно рассматриваются вопросы системного программирования с использованием интерфейса Win32 API. Описываются управление потоками и процессами, включая их диспетчеризацию; синхронизация потоков; передача данных между процессами, с использованием анонимных и именованных каналов, а также почтовых ящиков; структурная обработка исключений; управление виртуальной памятью; управление файлами и каталогами; асинхронная обработка данных; создание динамически подключаемых библиотек; разработка сервисов. Отдельная часть книги посвящена управлению безопасностью объектов в Windows.
Каждая тема снабжена практическими примерами использования функций Win32 API, которые представлены работающими листингами. Это позволяет использовать книгу в качестве пособия по системному программированию или справочника для системного программиста.
Прилагаемый компакт-диск содержит листинги и проекты всех программ, рассмотренных в книге.
Предисловие 15
Глава 1. Операционные системы и их интерфейсы 19
1.1. Назначение операционной системы 19
1.2. Типы операционных систем 19
1.3. Интерфейс программирования приложений Win32 API 21
1.4. Типы данных в Win32 API 22
1.5. Объекты и их дескрипторы в Windows 24
ЧАСТЬ I. УПРАВЛЕНИЕ ПОТОКАМИ И ПРОЦЕССАМИ 27
Глава 2. Потоки и процессы 29
2.1. Определение потока 29
2.2. Контекст потока 31
2.3. Состояния потока 33
2.4. Диспетчеризация и планирование потоков 37
2.5. Определение процесса 40
Глава 3. Потоки в Windows 41
3.1. Определение потока 41
3.2. Создание потоков 42
3.3. Завершение потоков 47
3.4. Приостановка и возобновление потоков 49
3.5. Псевдодескрипторы потоков 52
3.6. Обработка ошибок в Windows 53
Глава 4. Процессы в Windows 58
4.1. Определение процесса 58
4.2. Создание процессов 58
4.3. Завершение процессов 64
4.4. Наследование дескрипторов 67
4.5. Дублирование дескрипторов 75
4.6. Псевдодескрипторы процессов 81
4.7. Обслуживание потоков 82
4.8. Динамическое изменение приоритетов потоков 88
ЧАСТЬ II. СИНХРОНИЗАЦИЯ ПОТОКОВ
И ПРОЦЕССОВ 93
Глава 5. Синхронизация 95
5.1. Непрерывные действия и команды 95
5.2. Определение синхронизации 96
5.3. Программная реализация синхронизации 97
5.4. Аппаратная реализация синхронизации 101
5.5. Примитивы синхронизации 104
Глава 6. Синхронизация потоков в Windows 109
6.1. Критические секции 109
6.2. Объекты синхронизации и функции ожидания 115
6.3. Мьютексы 121
6.4. События 128
6.5. Семафоры 137
Глава 7. Взаимоисключающий доступ к переменным 143
7.1. Атомарные операции 143
7.2. Замена значения переменной 144
7.3. Условная замена значения переменной 146
7.4. Инкремент и декремент переменной 148
7.5. Изменение значения переменной 150
Глава 8. Тупики 153
8.1. Определение тупиков 153
8.2. Классификация системных ресурсов 154
8.3. Обнаружение тупиков 156
8.4. Восстановление заблокированного процесса 158
8.5. Предотвращение тупиков 160
8.6. Безопасное завершение потоков в Windows 161
ЧАСТЬ III. ПРОГРАММИРОВАНИЕ КОНСОЛЬНЫХ
ПРИЛОЖЕНИЙ 165
Глава 9. Структура консольного приложения 167
9.1. Структура консоли 167
9.2. Входной буфер консоли 167
9.3. Буфер экрана 171
Глава 10. Работа с консолью 172
10.1. Создание консоли 172
10.2. Освобождение консоли 177
10.3. Стандартные дескрипторы ввода-вывода 178
Глава 11. Работа с окном консоли 180
11.1. Получение дескриптора окна консоли 180
11.2. Получение и изменение заголовка консоли 181
11.3. Определение максимального размера окна 183
11.4. Установка координат окна 184
Глава 12. Работа с буфером экрана 188
12.1. Создание и активация буфера экрана 188
12.2. Определение и установка параметров буфера экрана 191
12.3. Функции для работы с курсором 194
12.4. Чтение и установка атрибутов консоли 197
Глава 13. Ввод-вывод на консоль 203
13.1. Ввод-вывод высокого уровня 203
13.2. Ввод низкого уровня 207
13.3. Вывод низкого уровня 215
13.4. Режимы ввода-вывода консоли 225
13.5. Прокрутка буфера экрана 229
ЧАСТЬ IV. ОБМЕН ДАННЫМИ МЕЖДУ ПАРАЛЛЕЛЬНЫМИ
ПРОЦЕССАМИ 235
Глава 14. Передача данных 237
14.1. Способы передачи данных между процессами 237
14.2. Связи между процессами 239
14.3. Передача сообщений 240
14.4. Синхронный и асинхронный обмен данными 241
14.5. Буферизация 242
Глава 15. Работа с анонимными каналами в Windows 243
15.1. Анонимные каналы 243
15.2. Создание анонимных каналов 244
15.3. Соединение клиентов с анонимным каналом 245
15.4. Обмен данными по анонимному каналу 246
15.5. Примеры работы с анонимными каналами 247
15.6. Перенаправление стандартного ввода-вывода 257
Глава 16. Работа с именованными каналами в Windows 265
16.1. Именованные каналы 265
16.2. Создание именованных каналов 266
16.3. Соединение сервера с клиентом 268
16.4. Соединение клиентов с именованным каналом 269
16.5. Обмен данными по именованному каналу 272
16.6. Копирование данных из именованного канала 285
16.7. Передача транзакций по именованному каналу 289
16.8. Определение и изменение состояния именованного канала 295
16.9. Получение информации об именованном канале 303
Глава 17. Работа с почтовыми ящиками в Windows 307
17.1. Концепция почтовых ящиков 307
17.2. Создание почтовых ящиков 308
17.3. Соединение клиентов с почтовым ящиком 309
17.4. Обмен данными через почтовый ящик 311
17.5. Получение информации о почтовом ящике 315
17.6. Изменение времени ожидания сообщения 321
ЧАСТЬ V. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧЕНИЙ 325
Глава 18. Фреймовая обработка исключений 327
18.1. Исключения и их обработчики 327
18.2. Получение кода исключения 330
18.3. Функции фильтра 332
18.4. Получение информации об исключении 334
18.5. Генерация программных исключений 337
18.6. Необработанные исключения 340
18.7. Обработка исключений с плавающей точкой 342
18.8. Обработка вложенных исключений 344
18.9. Передача управления и выход из фрейма 346
18.10. Встраивание SEH в механизм исключений С++ 348
Глава 19. Финальная обработка исключений 351
19.1. Финальные блоки фрейма 351
19.2. Проверка завершения фрейма 353
19.3. Обработка вложенных финальных блоков 354
ЧАСТЬ VI. РАБОТА С ВИРТУАЛЬНОЙ ПАМЯТЬЮ 357
Глава 20. Виртуальная память 359
20.1. Концепция виртуальной памяти 359
20.2. Организация виртуальной памяти 360
20.3. Алгоритмы замещения страниц 362
20.4. Рабочее множество процесса 363
20.5. Организация виртуальной памяти в Windows 363
Глава 21. Работа с виртуальной памятью в Windows 367
21.1. Состояния виртуальной памяти процесса 367
21.2. Резервирование, распределение и освобождение
виртуальной памяти 368
21.3. Блокирование виртуальных страниц в реальной памяти 376
21.4. Изменение атрибутов доступа к виртуальной странице 378
21.5. Управление рабочим множеством страниц процесса 380
21.6. Инициализация и копирование блоков виртуальной памяти 383
21.7. Определение состояния памяти 385
21.8. Работа с виртуальной памятью в другом процессе 388
Глава 22. Работа с кучей в Windows 393
22.1. Создание и удаление кучи 393
22.2. Распределение и освобождение памяти из кучи 395
22.3. Перераспределение памяти из кучи 401
22.4. Блокирование и разблокирование кучи 403
22.5. Проверка состояния кучи 406
22.6. Уплотнение кучи 411
ЧАСТЬ VII. УПРАВЛЕНИЕ ФАЙЛАМИ 415
Глава 23. Общие концепции 417
23.1. Накопители на жестких магнитных дисках 417
23.2. Секторы и кластеры 418
23.3. Форматирование дисков 419
23.4. Функции файловой системы 420
23.5. Каталоги 420
23.6. Буферизация ввода-вывода 421
23.7. Кэширование ввода-вывода 421
Глава 24. Работа с файлами в Windows 423
24.1. Именование файлов в Windows 423
24.2. Создание и открытие файлов 424
24.3. Закрытие и удаление файлов 427
24.4. Запись данных в файл 428
24.5. Освобождение буферов файла 430
24.6. Чтение данных из файла 433
24.7. Копирование файла 435
24.8. Перемещение файла 437
24.9. Замещение файла 438
24.10. Работа с указателем позиции файла 440
24.11. Определение и изменение атрибутов файла 446
24.12. Определение и изменение размеров файла 449
24.13. Блокирование файла 455
24.14. Получение информации о файле 459
Глава 25. Работа с каталогами (папками) в Windows 468
25.1. Создание каталога 468
25.2. Поиск файлов в каталоге 470
25.3. Удаление каталога 473
25.4. Перемещение каталога 476
25.5. Определение и установка текущего каталога 477
25.6. Наблюдение за изменениями в каталоге 479
ЧАСТЬ VIII. АСИНХРОННАЯ ОБРАБОТКА ДАННЫХ 483
Глава 26. Асинхронный вызов процедур 485
26.1. Механизм асинхронного вызова процедур 485
26.2. Установка асинхронных процедур 486
26.3. Приостановка потока 487
26.4. Ожидание события 489
26.5. Оповещение и ожидание события 494
Глава 27. Асинхронный доступ к данным 499
27.1. Концепция асинхронного ввода-вывода 499
27.2. Асинхронная запись данных 500
27.3. Асинхронное чтение данных 506
24.4. Блокирование файлов 511
27.5. Определение состояния асинхронной операции ввода-вывода 518
27.6. Отмена асинхронной операции ввода-вывода 522
27.7. Процедуры завершения ввода-вывода 528
27.8. Асинхронная запись данных с процедурами завершения 529
27.9. Асинхронное чтение данных с процедурами завершения 532
Глава 28. Порты завершения 536
28.1. Концепция порта завершения 536
28.2. Создание порта завершения 537
28.3. Получение пакета из порта завершения 538
28.4. Посылка пакета в порт завершения 539
Глава 29. Работа с ожидающим таймером 544
29.1. Ожидающий таймер 544
29.2. Создание ожидающего таймера 545
29.3. Установка ожидающего таймера 546
29.4. Отмена ожидающего таймера 549
29.5. Открытие существующего ожидающего таймера 552
29.6. Процедуры завершения ожидания 555
ЧАСТЬ IX. ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫЕ
БИБЛИОТЕКИ 559
Глава 30.Отображение файлов в память 561
30.1. Концепция механизма отображения файлов в память 561
30.2. Создание и открытие объекта, отображающего файл 562
30.3. Отображение файла в память 564
30.4. Обмен данными между процессами через отображаемый
в память файл 569
30.5. Сброс вида в файл 573
Глава 31. Динамически подключаемые библиотеки 578
31.1. Концепция динамически подключаемых библиотек 578
31.2. Создание DLL 579
31.3. Динамическая загрузка и отключение DLL 581
31.4. Использование DLL 584
31.5. Использование файла определений 588
31.6. Статическая загрузка DLL 592
Глава 32. Локальная память потока 594
32.1. Динамическая локальная память потока 594
32.2. Распределение и освобождение локальной памяти потока 595
32.3. Запись и чтение из локальной памяти потока 595
32.4. Статическая локальная память потока 602
ЧАСТЬ X. РАЗРАБОТКА СЕРВИСОВ В WINDOWS 605
Глава 33. Сервисы в Windows 607
33.1. Концепция сервиса 607
33.2. Структура сервиса 608
33.3. Организация функции main 609
33.4. Организация функции ServiceMain 611
33.5. Организация обработчика управляющих команд 617
Глава 34. Работа с сервисами в Windows 620
34.1. Открытие доступа к базе данных сервисов 620
34.2. Установка сервиса 621
34.3. Открытие доступа к сервису 627
34.4. Запуск сервиса 627
34.5. Определение и изменение состояния сервиса 630
34.6. Определение и изменение конфигурации сервиса 634
34.7. Определение имени сервиса 641
34.8. Управление сервисом 646
34.9. Удаление сервисов 649
34.10. Блокирование базы данных сервисов 653
ЧАСТЬ XI. УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ В WINDOWS 659
Глава 35. Система информационной безопасности 661
35.1. Контроль доступа к ресурсам 661
35.2. Политика безопасности 662
35.3. Модель безопасности 663
35.4. Дискреционная политика безопасности 664
35.5. Дискреционная модель безопасности 665
35.6. Реализация дискреционной модели безопасности 668
Глава 36. Управление безопасностью в Windows 671
36.1. Модель безопасности в Windows 671
36.2. Учетные записи 672
36.3. Домены 674
36.4. Группы 676
36.5. Идентификаторы безопасности 678
36.6. Дескрипторы безопасности 682
36.7. Списки управления доступом ACL 683
36.8. Маркеры доступа 687
36.9. Создание новых объектов 693
36.10. Контроль доступа к охраняемому объекту 694
36.11. Аудит доступа к охраняемому объекту 696
36.12. Структура системы безопасности 696
Глава 37. Управление пользователями 699
37.1. Создание учетной записи пользователя 699
37.2. Получение информации о пользователе 704
37.3. Перечисление пользователей 706
37.4. Перечисление групп, которым принадлежит пользователь 710
37.5. Изменение учетной записи пользователя 715
37.6. Изменение пароля пользователя 719
37.7. Удаление учетной записи пользователя 721
Глава 38. Управление группами 724
38.1. Создание локальной группы 724
38.2. Получение информации о локальной группе 727
38.3. Перечисление локальных групп 729
38.4. Изменение информации о локальной группе 732
38.5. Добавление членов локальной группы 736
38.6. Установка членов локальной группы 742
38.7. Перечисление членов локальной группы 745
38.8. Удаление членов локальной группы 748
38.9. Удаление локальной группы 754
Глава 39. Работа с идентификаторами безопасности 756
39.1. Структура идентификатора безопасности 756
39.2. Создание идентификатора безопасности 757
39.3. Определение учетной записи по идентификатору безопасности 764
39.4. Определение идентификатора безопасности
по имени учетной записи 769
39.5. Получение характеристик идентификатора безопасности 773
39.6. Копирование и сравнение идентификаторов безопасности 777
39.7. Строковое представление идентификатора безопасности 782
Глава 40. Работа с дескрипторами безопасности 788
40.1. Форматы дескрипторов безопасности 788
40.2. Создание нового дескриптора безопасности 791
40.3. Определение длины дескриптора безопасности 797
40.4. Получение дескриптора безопасности по имени объекта 802
40.5. Получение дескриптора безопасности по дескриптору объекта 806
40.6. Получение данных из дескриптора безопасности 810
40.7. Получение состояния управляющих флагов дескриптора
безопасности 815
40.8. Изменение дескриптора безопасности по имени объекта 818
40.9. Изменение дескриптора безопасности по дескриптору объекта 823
40.10. Изменение состояния управляющих флагов дескриптора
безопасности 827
40.11. Строковое представление дескрипторов безопасности 831
Глава 41. Работа со списками управления доступом на высоком уровне 840
41.1. Структура TRUSTEE 840
41.2. Инициализация структуры TRUSTEE 842
41.3. Структура EXPLICIT_ACCESS 846
41.4. Инициализация структуры EXPLICIT_ACCESS 849
41.5. Создание нового списка управления доступом 850
41.6. Модификация списка управления доступом 862
41.7. Получение элементов из списка управления доступом 870
41.8. Получение информации из структуры TRUSTEE 871
41.9. Получение прав доступа из списка управления доступом 874
41.10. Получение из списка управления доступом прав,
которые подвергаются аудиту 878
Глава 42. Работа с привилегиями 885
42.1. Локальные идентификаторы привилегий 885
42.2. Инициализация локального идентификатора 887
42.3. Получение локального идентификатора привилегии 888
42.4. Получение имени привилегии 888
42.5. Получение имени привилегии для отображения 891
Глава 43. Работа с маркерами доступа 894
43.1. Открытие маркера доступа процесса 894
43.2. Открытие маркера доступа потока 896
43.3. Структуры, используемые для работы с маркером доступа 896
43.4. Получение информации из маркера доступа 900
43.5. Изменение информации в маркере доступа 908
43.6. Настройка привилегий 917
43.7. Настройка групп 918
43.8. Создание маркера ограниченного доступа 920
43.9. Дублирование маркеров доступа 927
43.10. Замещение маркеров доступа потока 929
43.11. Проверка идентификатора безопасности
на принадлежность маркеру доступа 932
Глава 44. Работа со списками управления доступом на низком уровне 939
44.1. Структура списка управления доступом 939
44.2. Структура элемента списка управления доступом 940
44.3. Инициализация списка управления доступом 943
44.4. Проверка достоверности списка управления доступом 944
44.5. Добавление элементов в список управления доступом 945
44.6. Получение элементов из списка управления доступом 972
44.7. Удаление элементов из списка управления доступом 977
44.8. Получение информации о списке управления доступом 981
44.9. Установка версии списка управления доступом 985
44.10. Определение доступной памяти 986
Глава 45. Управление безопасностью объектов на низком уровне 987
45.1. Доступ к информации о владельце объекта 988
45.2. Доступ к информации о первичной группе владельца объекта 992
45.3. Доступ к списку DACL 997
45.4. Доступ к списку SACL 1004
45.5. Защита файлов и каталогов 1006
45.6. Защита объектов ядра 1016
45.7. Защита сервисов 1024
45.8. Защита ключей реестра 1031
45.9. Защита объектов пользователя 1037
Приложение. Описание компакт-диска 1045
Предметный указатель 1047
СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ В WINDOWS
1 СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ В WINDOWS Побегайло А. П. Системное программирование в Windows. СПб.: БХВ- Петербург, с: ил. ISBN Подробно рассматриваются вопросы системного программирования с использованием интерфейса Win 32 API. Описываются управление потоками и процессами, включая их диспетчеризацию; синхронизация потоков; передача данных между процессами, с использованием анонимных и именованных каналов, а также почтовых ящиков; структурная обработка исключений; управление виртуальной памятью; управление файлами и каталогами; асинхронная обработка данных; создание динамически подключаемых библиотек; разработка сервисов. Отдельная часть книги посвящена управлению безопасностью объектов в Windows. Каждая тема снабжена практическими примерами использования функций Win 32 API, которые представлены работающими листингами. Это позволяет использовать книгу в качестве пособия по системному программированию или справочника для систем ного программиста. Прилагаемый компакт-диск содержит листинги и проекты всех программ, рассмотренных в книге. Оглавление Предисловие. 15 Глава 1. Операционные системы и их интерфейсы Назначение операционной системы Типы операционных систем Интерфейс программирования приложений Win 32 API Типы данных в Win 32 API Объекты и их дескрипторы в Windows 24 ЧАСТЬ I. УПРАВЛЕНИЕ ПОТОКАМИ И ПРОЦЕССАМИ 27 Глава 2. Потоки и процессы Определение потока Контекст потока Состояния потока Диспетчеризация и планирование потоков Определение процесса 40 Глава 3. Потоки в Windows Определение потока Создание потоков Завершение потоков Приостановка и возобновление потоков Псевдодескрипторы потоков Обработка ошибок в Windows 53 Глава 4. Процессы в Windows Определение процесса Создание процессов Завершение процессов Наследование дескрипторов Дублирование дескрипторов Псевдодескрипторы процессов Обслуживание потоков Динамическое изменение приоритетов потоков 88 ЧАСТЬ II. СИНХРОНИЗАЦИЯ ПОТОКОВ И ПРОЦЕССОВ 93 Глава 5. Синхронизация Непрерывные действия и команды Определение синхронизации Программная реализация синхронизации Аппаратная реализация синхронизации Примитивы синхронизации 104 Глава 6. Синхронизация потоков в Windows Критические секции Объекты синхронизации и функции ожидания Мыотексы События Семафоры 137 Глава 7. Взаимоисключающий доступ к переменным 143
2 7.1.Атомарные операции Замена значения переменной Условная замена значения переменной Инкремент и декремент переменной Изменение значения переменной 150 Глава 8. Тупики Определение тупиков Классификация системных ресурсов Обнаружение тупиков Восстановление заблокированного процесса Предотвращение тупиков Безопасное завершение потоков в Windows 161 ЧАСТЬ III. ПРОГРАММИРОВАНИЕ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ 165 Глава 9. Структура консольного приложения Структура консоли Входной буфер консоли Буфер экрана 171 Глава 10. Работа с консолью Создание консоли Освобождение консоли Стандартные дескрипторы ввода-вывода 178 Глава 11. Работа с окном консоли Получение дескриптора окна консоли Получение и изменение заголовка консоли Определение максимального размера окна Установка координат окна 184 Глава 12. Работа с буфером экрана Создание и активация буфера экрана Определение и установка параметров буфера экрана Функции для работы с курсором Чтение и установка атрибутов консоли 197 Глава 13. Ввод-вывод на консоль Ввод-вывод высокого уровня Ввод низкого уровня Вывод низкого уровня Режимы ввода-вывода консоли Прокрутка буфера экрана 229 ЧАСТЬ IV. ОБМЕН ДАННЫМИ МЕЖДУ ПАРАЛЛЕЛЬНЫМИ ПРОЦЕССАМИ 235 Глава 14. Передача данных Способы передачи данных между процессами Связи между процессами Передача сообщений Синхронный и асинхронный обмен данными Буферизация 242 Глава 15. Работа с анонимными каналами в Windows Анонимные каналы Создание анонимных каналов Соединение клиентов с анонимным каналом Обмен данными по анонимному каналу Примеры работы с анонимными каналами Перенаправление стандартного ввода-вывода 257 Глава 16. Работа с именованными каналами в Windows Именованные каналы Создание именованных каналов Соединение сервера с клиентом Соединение клиентов с именованным каналом Обмен данными по именованному каналу Копирование данных из именованного канала Передача транзакций по именованному каналу Определение и изменение состояния именованного канала Получение информации об именованном канале 303 Глава 17. Работа с почтовыми ящиками в Windows Концепция почтовых ящиков Создание почтовых ящиков Соединение клиентов с почтовым ящиком Обмен данными через почтовый ящик Получение информации о почтовом ящике 315
3 17.6.Изменение времени ожидания сообщения 321 ЧАСТЬ V. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧЕНИЙ 325 Глава 18. Фреймовая обработка исключений Исключения и их обработчики Получение кода исключения Функции фильтра Получение информации об исключении Генерация программных исключений Необработанные исключения Обработка исключений с плавающей точкой Обработка вложенных исключений Передача управления и выход из фрейма Встраивание SEH в механизм исключений C Глава 19. Финальная обработка исключений Финальные блоки фрейма Проверка завершения фрейма Обработка вложенных финальных блоков 354 ЧАСТЬ VI. РАБОТА С ВИРТУАЛЬНОЙ ПАМЯТЬЮ 357 Глава 20. Виртуальная память Концепция виртуальной памяти Организация виртуальной памяти Алгоритмы замещения страниц Рабочее множество процесса Организация виртуальной памяти в Windows 363 Глава 21. Работа с виртуальной памятью в Windows Состояния виртуальной памяти процесса Резервирование, распределение и освобождение 368 виртуальной памяти 21.3.Блокирование виртуальных страниц в реальной памяти Изменение атрибутов доступа к виртуальной странице Управление рабочим множеством страниц процесса Инициализация и копирование блоков виртуальной памяти Определение состояния памяти Работа с виртуальной памятью в другом процессе 388 Глава 22. Работа с кучей в Windows Создание и удаление кучи Распределение и освобождение памяти из кучи Перераспределение памяти из кучи Блокирование и разблокирование кучи Проверка состояния кучи Уплотнение кучи 411 ЧАСТЬ VII. УПРАВЛЕНИЕ ФАЙЛАМИ 415 Глава 23. Общие концепции Накопители на жестких магнитных дисках Секторы и кластеры Форматирование дисков Функции файловой системы Каталоги Буферизация ввода-вывода Кэширование ввода-вывода 421 Глава 24. Работа с файлами в Windows Именование файлов в Windows Создание и открытие файлов Закрытие и удаление файлов Запись данных в файл Освобождение буферов файла Чтение данных из файла Копирование файла Перемещение файла Замещение файла Работа с указателем позиции файла Определение и изменение атрибутов файла Определение и изменение размеров файла Блокирование файла Получение информации о файле 459 Глава 25. Работа с каталогами (папками) в Windows Создание каталога Поиск файлов в каталоге Удаление каталога 473
4 25.4. Перемещение каталога Определение и установка текущего каталога Наблюдение за изменениями в каталоге 479 ЧАСТЬ VIII. АСИНХРОННАЯ ОБРАБОТКА ДАННЫХ 483 Глава 26. Асинхронный вызов процедур Механизм асинхронного вызова процедур Установка асинхронных процедур Приостановка потока Ожидание события Оповещение и ожидание события 494 Глава 27. Асинхронный доступ к данным Концепция асинхронного ввода-вывода Асинхронная запись данных Асинхронное чтение данных Блокирование файлов Определение состояния асинхронной операции ввода-вывода Отмена асинхронной операции ввода-вывода Процедуры завершения ввода-вывода Асинхронная запись данных с процедурами завершения Асинхронное чтение данных с процедурами завершения 532 Глава 28. Порты завершения Концепция порта завершения Создание порта завершения Получение пакета из порта завершения Посылка пакета в порт завершения 539 Глава 29. Работа с ожидающим таймером Ожидающий таймер Создание ожидающего таймера Установка ожидающего таймера Отмена ожидающего таймера Открытие существующего ожидающего таймера Процедуры завершения ожидания 555 ЧАСТЬ IX. ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ 559 Глава 30.Отображение файлов в память Концепция механизма отображения файлов в память Создание и открытие объекта, отображающего файл Отображение файла в память Обмен данными между процессами через отображаемый 569 в память файл Сброс вида в файл 573 Глава 31. Динамически подключаемые библиотеки L. Концепция динамически подключаемых библиотек Создание DLL Динамическая загрузка и отключение DLL Использование DLL Использование файла определений Статическая загрузка DLL 592 Глава 32. Локальная память потока Динамическая локальная память потока Распределение и освобождение локальной памяти потока Запись и чтение из локальной памяти потока Статическая локальная память потока 602 ЧАСТЬ X. РАЗРАБОТКА СЕРВИСОВ В WINDOWS 605 Глава 33. Сервисы в Windows Концепция сервиса Структура сервиса Организация функции main Организация функции ServiceMain Организация обработчика управляющих команд 617 Глава 34. Работа с сервисами в Windows Открытие доступа к базе данных сервисов Установка сервиса Открытие доступа к сервису Запуск сервиса Определение и изменение состояния сервиса Определение и изменение конфигурации сервиса Определение имени сервиса Управление сервисом 646
5 34.9. Удаление сервисов Блокирование базы данных сервисов 653 ЧАСТЬ XI. УПРАВЛЕНИЕ БЕЗОПАСНОСТЬЮ В WINDOWS 659 Глава 35. Система информационной безопасности Контроль доступа к ресурсам Политика безопасности Модель безопасности Дискреционная политика безопасности Дискреционная модель безопасности Реализация дискреционной модели безопасности 668 Глава 36. Управление безопасностью в Windows Модель безопасности в Windows Учетные записи Домены Группы Идентификаторы безопасности Дескрипторы безопасности Списки управления доступом ACL Маркеры доступа Создание новых объектов Контроль доступа к охраняемому объекту Аудит доступа к охраняемому объекту Структура системы безопасности 696 Глава 37. Управление пользователями Создание учетной записи пользователя Получение информации о пользователе Перечисление пользователей Перечисление групп, которым принадлежит пользователь Изменение учетной записи пользователя Изменение пароля пользователя Удаление учетной записи пользователя 721 Глава 38. Управление группами Создание локальной группы Получение информации о локальной группе Перечисление локальных групп Изменение информации о локальной группе Добавление членов локальной группы Установка членов локальной группы Перечисление членов локальной группы Удаление членов локальной группы Удаление локальной группы 754 Глава 39. Работа с идентификаторами безопасности Структура идентификатора безопасности Создание идентификатора безопасности Определение учетной записи по идентификатору безопасности Определение идентификатора безопасности по имени учетной записи Получение характеристик идентификатора безопасности Копирование и сравнение идентификаторов безопасности Строковое представление идентификатора безопасности 782 Глава 40. Работа с дескрипторами безопасности Форматы дескрипторов безопасности Создание нового дескриптора безопасности Определение длины дескриптора безопасности Получение дескриптора безопасности по имени объекта Получение дескриптора безопасности по дескриптору объекта Получение данных из дескриптора безопасности Получение состояния управляющих флагов дескриптора безопасности Изменение дескриптора безопасности по имени объекта Изменение дескриптора безопасности по дескриптору объекта Изменение состояния управляющих флагов дескриптора безопасности Строковое представление дескрипторов безопасности 831 Глава 41. Работа со списками управления доступом на высоком 840 уровне Структура TRUSTEE Инициализация структуры TRUSTE Структура EXPLICIT _ ACCESS Инициализация структуры EXPLICIT _ ACCESS Создание нового списка управления доступом 850
6 41.6. Модификация списка управления доступом Получение элементов из списка управления доступом Получение информации из структуры TRUSTEE Получение прав доступа из списка управления доступом Получение из списка управления доступом прав, которые подвергаются аудиту 878 Глава 42. Работа с привилегиями Локальные идентификаторы привилегий Инициализация локального идентификатора Получение локального идентификатора привилегии Получение имени привилегии Получение имени привилегии для отображения 891 Глава 43. Работа с маркерами доступа Открытие маркера доступа процесса Открытие маркера доступа потока Структуры, используемые для работы с маркером доступа Получение информации из маркера доступа Изменение информации в маркере доступа Настройка привилегий Настройка групп Создание маркера ограниченного доступа Дублирование маркеров доступа Замещение маркеров доступа потока Проверка идентификатора безопасности на принадлежность маркеру доступа 932 Глава 44. Работа со списками управления доступом па низком уровне Структура списка управления доступом Структура элемента списка управления доступом Инициализация списка управления доступом Проверка достоверности списка управления доступом Добавление элементов в список управления доступом Получение элементов из списка управления доступом Удаление элементов из списка управления доступом Получение информации о списке управления доступом Установка версии списка управления доступом Определение доступной памяти 986 Глава 45. Управление безопасностью объектов на низком уровне Доступ к информации о владельце объекта Доступ к информации о первичной группе владельца объекта Доступ к списку DACL Доступ к списку SACL Защита файлов и каталогов Защита объектов ядра Защита сервисов Защита ключей реестра Защита объектов пользователя 1037 Приложение. Описание компакт-диска 1045 Предметный указатель 1047