Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DiVM / OSISP / ОCиСП-Часть2 / Теория / Теория (ОСиСП).doc
Скачиваний:
32
Добавлен:
11.05.2015
Размер:
5.47 Mб
Скачать

WINDOWS

Создание эффективных win32-приложений

Джеффри Рихтер

ЧАCTЬ I МАТЕРИАЛЫ ДЛЯ ОБЯЗАТЕЛЬНОГО ЧТЕНИЯ 8

Глава 1. Обработка ошибок 8

Вы тоже можете это сделать 12

Программа-пример ErrorShow 13

Глава 2 Unicode 14

Наборы символов 14

Одно- и двухбайтовые наборы символов 14

Unicode: набор широких символов 15

Почему Unicode? 16

Windows 2000 и Unicode 16

Windows 98 и Unicode 17

Windows CE и Unicode 18

В чью пользу счет? 18

Unicode и СОМ 18

Как писать программу с использованием Unicode 19

Unicode и библиотека С 19

Типы данных, определенные в Windows для Unicode 21

Unicode- и ANSI-функции в Windows 22

Строковые функции Windows 23

Создание программ, способных использовать и ANSI, и Unicode 23

Ресурсы 27

Текстовые файлы 27

Перекодировка строк из Unicode в ANSI и обратно 28

Глава 3 Объекты ядра 31

Что такое объект ядра 32

Учет пользователей объектов ядра 33

Защита 33

Таблица описателей объектов ядра 35

Создание объекта ядра 35

Закрытие объекта ядра 37

Совместное использование объектов ядра несколькими процессами 38

Наследование описателя объекта 38

Изменение флагов описателя 41

Именованные объекты 43

Дублирование описателей объектов 47

Часть II начинаем работать 51

Глава 4 Процессы 51

Ваше первое Windows-приложение 53

Описатель экземпляра процесса 56

Описатель предыдущего экземпляра процесса 57

Командная строка процесса 58

Переменные окружения 59

Привязка к процессорам 62

Режим обработки ошибок 62

Текущие диск и каталог для процесса 63

Текущие каталоги для процесса 63

Определение версии системы 64

Функция CreateProcess 68

Параметры pszApplicationName и pszCommandLine 68

Параметры psaProcess, psaThread и blnheritHandles 70

Параметр fdwCreate 71

Параметр pvEnvironment 73

Параметр pszCurDir 73

Параметр psiStartlnfo 73

Параметр ppiProclnfo 77

Завершение процесса 79

Возврат управления входной функцией первичного потока 79

Функция ExitProcess 79

Функция TerminateProcess 81

Когда все потоки процесса уходят 81

Что происходит при завершении процесса 82

Дочерние процессы 82

Запуск обособленных дочерних процессов 84

Перечисление процессов, выполняемых в системе 85

Программа-пример Processlnfo 85

Глава 5 Задания 88

Определение ограничений, налагаемых на процессы в задании 91

Включение процесса в задание 98

Завершение всех процессов в задании 98

Получение статистической информации о задании 99

Уведомления заданий 102

Программа-пример JobLab 104

Глава 6 Базовые сведения о потоках 106

В каких случаях потоки создаются 107

И в каких случаях потоки не создаются 108

Ваша первая функция потока 109

Функция CreateThread 110

Параметр psa 111

Параметр cbStack 111

Параметры pfnStartAddr и pvParam 112

Параметр fdwCreate 113

Параметр pdwThreadlD 113

Завершение потока 113

Возврат управления функцией потока 114

Функция ExitThread 114

Функция TerminateThread 114

Если завершается процесс 115

Что происходит при завершении потока 115

Кое-что о внутреннем устройстве потока 116

Некоторые соображения по библиотеке С/С++ 118

Ой, вместо _beginthreadex я по ошибке вызвал CreateThread 127

Библиотечные функции, которые лучше не вызывать 127

Как узнать о себе 128

Преобразование псевдоописателя в настоящий описатель 129