KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Джонсон Харт - Системное программирование в среде Windows

Джонсон Харт - Системное программирование в среде Windows

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Джонсон Харт, "Системное программирование в среде Windows" бесплатно, без регистрации.
Перейти на страницу:

• Asc2UnMM.с — функция для программы 5.3.

• sortFL.с — программа 5.4, a sortHP.с — аналогичная программа, за исключением того, что вместо отображения файлов используется их считывание в буфер, выделяемый в памяти.

• sortMM.с — программы 5.5 и 5.6.

• atouEL.c — программа 5.7, a Asc2UnDll.c и Asc2UnmmDLL.c — исходные файлы для требуемых библиотек DLL. Asc2Unmmfl.c — еще один вариант, очищающий память при завершении выполнения, что может приводить к общему замедлению программы, но оставляет систему в безопасном состоянии.

• HeapNoSr.c — тестовая программа для количественной оценки эффекта использования флага HEAP_NO_SERIALIZE при распределении памяти. Эту программу можно использовать при выполнении упражнения 5.1.

• RandFile.c — генерирует текстовые файлы заданного размера со случайными ключами; такие файлы удобны для тестирования функций сортировки и используются для генерирования текстовых файлов большого размера во многих тестах с целью определения временных характеристик выполнения программ.

• clear.с — простая программа, выделяющая и инициализирующая память крупными блоками до наступления сбоя. Эта программа используется в перерывах между тестами синхронизации для гарантии того, что данные не кэшируются в памяти, ибо это могло бы искажать результаты тестов. 

Глава 6

• grepMP.c — программа 6.1. grep.с — исходный файл программы поиска заданных символьных шаблонов, которая вызывается как процесс программой grepMP.c.

• timep.с — программа 6.2.

• JobShell.c — программа 6.3, a JobMgt.c предоставляет функции поддержки программ 6.4, 6.5 и 6.6.

• catHA.c и grepMPha.c — модифицированные версии других программ, предназначенных для демонстрации передачи дескриптора в командной строке, что используется при решении упражнения 6.2.

• version.с — получает сведения об операционной системе, включая номер ее версии.

Глава 7

• grepMT.c — программа 7.1. grepMTx.c — ее вариант с преднамеренно введенными дефектами; устранение этих дефектов предлагается в упражнении 7.7.

• sortMT.c — программа 7.2. sortMTx.c — ее вариант с преднамеренно введенными дефектами.

• wcMT.с — решение упражнения 7.6. Имеются также две версии с преднамеренно введенными дефектами и еще одна версия, сериализующая обработку файла, которая предусмотрена для анализа временных характеристик выполнения программ.

• Во всех соответствующих проектах используется библиотека С с многопоточной поддержкой, о чем говорится в тексте главы.

Глава 8

• simplePC.с — программа 8.1.

• eventPC.с — программа 8.2.

Глава 9

• statsMX.c — программа 9.1. Ее различными вариантами являются statsNS.c, statsCS.cn statsIN.c.

• TimedMutualExclusion.c — используется для исследования временных характеристик, предлагаемого в тексте главы и упражнениях. 

Глава 10

• В программе 10.1 содержится часть файла SynchObj.h, находящегося в каталоге Include. Остальная часть указанного файла содержится в программе 10.3.

• ThbObject.c — программа 10.2. testTHB — соответствующая тестовая программа.

• QueueObj.с — программа 10.4, различными вариантами которой являются программы QueueObjCS.c (используется объект CRITICAL_SECTION), QueueObjSOAW.c (используется функция SignalObjectAndWait) и версия, использующая сигнальную модель.

• ThreeStage.c — программа 10.5, для проекта которой требуются файлы Messages.с и QueueObj.c.

• QueueObjCancel.с — программа 10.6, которая работает в сочетании с программой ThreeStageCancel.c.

• MultiSem.c — вместе с тестовой программой TestMultiSem.c образует решение упражнения 10.11.

• MultiPCav.c — использует Pthreads; будет очень неплохо, если в качестве упражнения вы попытаетесь преобразовать эту программу к форме, использующей Windows API или библиотеку Pthreads с открытым исходным кодом.

Глава 11

• pipe.с — программа 11.1. Для демонстрации работы этой программы удобно использовать команду wc.с. pipeNP.с — вариант, использующий именованный канал.

• clientNP.с — программа 11.2.

• serverNP.с — программа 11.3.

• SrvrBcst.c — программа 11.4.

• LocSrver.с — программа 11.5.

Глава 12

• clientSK.с — программа 12.1.

• serverSK.c — программа 12.2.

• command. с — программа 12.3.

• SendReceiveSKST.c — программа 12.4, a serverSKST.c и clientSKST.c — соответствующие варианты программ serverSK.c и clientSK.с, незначительно модифицированных для обеспечения потокового ввода/вывода. Программу SendReceiveSKST.c следует компоновать как библиотеку DLL, которая должна неявно связываться с проектами сервера и клиента.

• SendReceiveSKHA.c — программа 12.5, a serverSKHA.c — соответствующий сервер, который использует DLL. Программа clientSKST.c будет работать с этим сервером.

Глава 13

• SimpleService.c — программа 13.2; дополнительно включает все, что требуется для программы 13.1.

• ServiceShell.с — программа 13.3.

• ServiceSK.с — это программа serverSK (программа 12.2), преобразованная в службу.

Глава 14

• atouOV. с — программа 14.1.

• atouEX.c — программа 14.2, выполняющая ту же задачу с использованием расширенного ввода/вывода.

• atouMT.с — выполняет ту же задачу с использованием многопоточного режима вместо асинхронного ввода/вывода Win32. atouMT_dh.с — неправильная версия, включенная для иллюстрации одной интересной, хотя и сопряженной с определенными рисками возможности дублирования дескрипторов.

• atouMTCP.с — использует порты завершения ввода/вывода.

• TimeBeep.с — программа 14.3.

• serverCP.c — программа 14.4, представляющая собой версию программы serverMT, в которой используются порты завершения ввода/вывода и перекрывающийся ввод/вывод.

Глава 15

• chmodW.с — программа 15.1, в которую добавлены возможности различения элементов АСЕ, предоставляющих и отменяющих разрешения доступа (как описано в тексте). chmodBSD.c — видоизмененный вариант программы, в котором используется функция BuildSecurityDescriptor.

• lsFP.с — программа 15.2.

• InitUnFp.c — код для программ 15.3, 15.4 и 15.5. Эти функции нужны программам 15.1 и 15.2. Кроме того, в исходном модуле содержится код, показывающий, как получить имя группы-владельца, что вам предлагается самостоятельно сделать в упражнении 15.12. 

• TestFp.c — дополнительная тестовая программа, которая оказалась полезной в процессе тестирования.

• serverNP_secure.с — программа 15.6.

• JobShell_secure.c и JobMgt_secure.с — усовершенствованные варианты программ для системы управления заданиями, которая рассматривается в главе 6.

Глава 16

Для этой главы предусмотрен только один файл с исходным кодом, а именно, sortMM64.c, который представляет собой программу sortMM.c из главы 5, усовершенствованную таким образом, чтобы она могла выполняться на обеих платформах Win32 и Win64.

Листинги включаемых файлов

EvryThng.h Программа А.1. Заголовочный файл EvryThng.h 

/* EvryThng.h – Включает все стандартные и пользовательские */

/* заголовочные файлы. */

#include "Exclude.h" /* Исключает описания, которые не требуются для примеров программ.*/

#include "envirmnt.h"

#include <windows.h>

#include <tchar.h>

#include <stdio.h>

#include <io.h>

#include "support.h"

#ifdef _MT

#include <process.h>

/* DWORD_PTR (целое без знака, соответствующее точности указателя)

 * используется для целых чисел, преобразуемых в дескрипторы или указатели.

 * Благодаря этому в Win64 не будут выводиться предупреждающие сообщения,

 * касающиеся взаимных преобразований 32-битовых и 64-битовых данных,

 * поскольку в Win64 дескрипторы HANDLE и указатели являются 64-битовыми

 * (см. главу 16). Этот режим активизируется только в том случае,

 * если определена символическая константа _Wp64.

 */

#if !defined(_Wp64)

#define DWORD_PTR DWORD

#define LONG_PTR LONG

#define INT_PTR INT

#endif 

Envirmnt.h Программа А.2. Включаемый файл Envirmnt.h 

/* Envirmnt.h — Здесь определяются константы UNICODE и _МТ. */

/* Лучше и проще определить константу UNICODE в проекте. */

/* Используйте команды меню: Project…Settings…C/C++. Затем, перейдя */

/* в окно Project Options, добавьте в нижней части: /D "UNICODE". */

/* Проделайте то же самое для констант _МТ и _STATIC_LIB. */


//#define UNICODE

#undef UNICODE

#ifdef UNICODE

#define _UNICODE

#endif

#ifndef UNICODE

#undef _UNICODE

#endif

//#define _STATICLIB

/* Определите _STATICLIB, если создаете */

/* или компонуете статическую библиотеку. */

#define LANG_DFLT LANG_ENGLISH

#define SUBLANG_DFLT SUBLANG_ENGLISH_US

Support.h Программа А.З. Включаемый файл Support.h 

/* Support.h */

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*