• 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
#include
#include
#include
#include "support.h"
#ifdef _MT
#include
/* 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 */
/* Содержит определения всех символических констант и распространенных служебных функций, используемых в примерах программ. */
/* НЕСМОТРЯ НА ВКЛЮЧЕНИЕ ОПИСАНИЙ КОНСТАНТ UTILITY_EXPORTS И _STATICLIB, ИХ ЛУЧШЕ ОПРЕДЕЛЯТЬ НЕ ЗДЕСЬ, А В ПРОЕКТЕ. */
/* Имя "UTILITY_EXPORTS" генерируется средой разработки Visual Studio, если вы создаете проект DLL с именем "Utility", но его также можно определить в командной строке С. */
// UTILITY_3_0_EXPORTS определяется в проекте UTILITY_3_0.
Читать дальше