Джонсон Харт - Системное программирование в среде 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 */
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Джонсон Харт - Системное программирование в среде Windows, относящееся к жанру Программирование. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


