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

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

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 */

/* Содержит определения всех символических констант и распространенных служебных функций, используемых в примерах программ. */

/* НЕСМОТРЯ НА ВКЛЮЧЕНИЕ ОПИСАНИЙ КОНСТАНТ UTILITY_EXPORTS И _STATICLIB, ИХ ЛУЧШЕ ОПРЕДЕЛЯТЬ НЕ ЗДЕСЬ, А В ПРОЕКТЕ. */

/* Имя "UTILITY_EXPORTS" генерируется средой разработки Visual Studio, если вы создаете проект DLL с именем "Utility", но его также можно определить в командной строке С. */

// UTILITY_3_0_EXPORTS определяется в проекте UTILITY_3_0.

#if defined(UTILITY_3_0_EXPORTS)

#define LIBSPEC _declspec(dllexport)

#elif defined(__cplusplus)

#define LIBSPEC extern "C" _declspec(dllimport)

#else

#define LIBSPEC _declspec(dllimport)

#endif

#define EMPTY _T("")

#define YES _T("y")

#define NO _T("n")

#define CR 0x0D 

#define LF 0x0A

#define TSIZE sizeof(TCHAR)

/* Предельные значения и константы. */

#define TYPE_FILE 1 /* Используется в ls, rm, и lsFP. */

#define TYPE_DIR 2

#define TYPE_DOT 3

#define MAX_OPTIONS 20 /* Максимальное количество параметров командной строки.*/

#define MAX_ARG 1000 /* Максимальное количество аргументов командной строки.*/

#define MAX_COMMAND_LINE MAX_PATH+50 /*Максимальный размер командной строки*/

/* Часто используемые функции. */

LIBSPEC BOOL ConsolePrompt(LPCTSTR, LPTSTR, DWORD, BOOL);

LIBSPEC BOOL PrintStrings(HANDLE, ...);

LIBSPEC BOOL PrintMsg(HANDLE, LPCTSTR);

LIBSPEC VOID ReportError(LPCTSTR, DWORD, BOOL);

LIBSPEC VOID ReportException(LPCTSTR, DWORD);

LIBSPEC DWORD Options(int, LPCTSTR *, LPCTSTR, ...);

LIBSPEC LPTSTR SkipArg(LPCTSTR);

LIBSPEC VOID GetArgs(LPCTSTR, int *, LPTSTR *);

/* Набор функций для работы с обобщенными строками в стиле string.h. Создавались по мере необходимости – первоначально была только одна функция! Реализация взята из [27]. */

LIBSPEC LPCTSTR wmemchr(LPCTSTR, TCHAR, DWORD);

#ifdef _UNICODE /* Это объявление уже должно было быть добавлено. */

#define _tstrrchr wcsrchr

#else

#define _tstrrchr strrchr

#endif

#ifdef _UNICODE /* Это объявление уже должно было быть добавлено. */

#define _memtchr wmemchr

#else

#define _memtchr memchr

#endif

/* Функции безопасности. */

LPSECURITY_ATTRIBUTES InitializeUnixSA(DWORD, LPTSTR, LPTSTR, LPDWORD, LPHANDLE);

LPSECURITY_ATTRIBUTES InitializeAccessOnlySA(DWORD, LPTSTR, LPTSTR, LPDWORD, LPHANDLE);

DWORD ReadFilePermissions(LPTSTR, LPTSTR, LPTSTR);

BOOL ChangeFilePermissions(DWORD, LPTSTR, LPDWORD, LPDWORD);

/* В упрощенной форме доступны в Visual C++ Version 5.0. */

//PSECURITY_DESCRIPTOR InitializeSD(DWORD, LPTSTR, LPTSTR, LPDWORD);

/* Константы, которые требуются для функций безопасности. */

#define LUSIZE 1024

#define ACCT_NAME_SIZE LUSIZE 

JobMgt.h

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

/* JobMgt.h — Определения, необходимые для управления задачами. Глава 6. */

/* Код выхода для программы управления задачами в случае прекращения их выполнения. */

#define JM_EXIT_CODE 0x1000

typedef struct _JM_JOB {

 DWORD ProcessId;

 TCHAR CommandLine[MAX_PATH];

} JM_JOB;

#define SJM_JOB sizeof (JM_JOB)

/* Функции управления задачами. */

DWORD GetJobNumber(PROCESS_INFORMATION *, LPCTSTR);

BOOL DisplayJobs(void);

DWORD FindProcessId(DWORD);

BOOL GetJobMgtFileName(LPTSTR); 

ClntSrvr.h

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

/* Определения для программ, обеспечивающих клиент-серверное взаимодействие*/

/* Сообщения запроса и ответа. Сообщения имеют кодировку ASCII, поскольку запрос может поступать от системы Windows 95. */

#define MAX_RQRS_LEN 0x1000

typedef struct {

 DWORD32 RqLen; /* Размер структуры запроса, исключая размер этого поля. */

 CHAR Command;

 BYTE Record[MAX_RQRS_LEN];

} REQUEST;

typedef struct {

 DWORD32 RsLen; /* Размер структуры ответа, исключая размер этого поля*/

 CHAR Status;

 BYTE Record[MAX_RQRS_LEN];

} RESPONSE;

#define RQ_SIZE sizeof(REQUEST)

#define RQ_HEADER_LEN RQ_SIZE-MAX_RQRS_LEN

#define RS_SIZE sizeof(RESPONSE)

#define RS_HEADER_LEN RS_SIZE-MAX_RQRS_LEN

/* Структура почтового сообщения. */

typedef struct {

 DWORD msStatus; 

 DWORD msUtilization;

 TCHAR msName[MAX_PATH];

} MS_MESSAGE;

#define MSM_SIZE sizeof(MS_MESSAGE)

#define CS_TIMEOUT 5000 /* Интервал ожидания для взаимодействия через именованный канал и мониторинга производительности. */

#define MAXCLIENTS 10

#define MAX_SERVER_TH 4 /* Максимальное количество серверных потоков для программы serverNPCP.*/

#define MAX_CLIENTS_CP 16 /* Максимальное количество клиентов для программы serverNPCP.*/

/* Имена серверных и клиентских каналов и почтовых ящиков. */

#define SERVER_PIPE _Т("\\.\PIPE\SERVER")

#define CLIENT_PIPE _T("\\.\PIPE\SERVER")

#define SERVERBROADCAST _T("SrvrBcst.exe")

#define MS_SRVNAME _T("\\.\MAILSLOT\CLS_MAILSLOT")

#define MS_CLTNAME _T("\\.\MAILSLOT\CLS_MAILSLOT")

#define MX_NAME _T("ClientServerMutex")

#define SM_NAME _T("ClientServerSemaphore")

/* Команды для функции поддержки статистики. */

#define CS_INIT 1

#define CS_RQSTART 2

#define CS_RQCOMPLETE 3

#define CS_REPORT 4

#define CS_TERMTHD 5

/* Функции поддержки клиент-серверной системы. */

BOOL LocateServer(LPTSTR); 

Exclude.h

В программе А.6 определяются многочисленные переменные, позволяющие исключить определения, которые не требуются для примеров программ, приведенных в данной книге. Этот вопрос подробно обсуждается в [30].

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

/* Exclude.h — Определения переменных для исключения ненужных заголовочных файлов. За дополнительными разъяснениями обратитесь в [30]. */

#define WIN32_LEAN_AND_MEAN

/* Весьма эффективная мера, уменьшающая размер предварительно скомпилированного заголовочного файла (pch) почти в два раза. */

/* Эти определения также уменьшают размер pch-файла и уменьшают время компиляции. Все программы в данной книге будут компилироваться с этими определениями. От использования средств защиты можно отказаться при помощи оператора #define NOSECURITY. */ 

#define NOATOM

#define NOCLIPBOARD

#define NOCOMM

#define NOCTLMGR

#define NOCOLOR

#define NODEFERWINDOWPOS

#define NODESKTOP

#define NODRAWTEXT

#define NOEXTAPI

#define NOGDICAPMASKS

#define NOHELP

#define NOICONS

#define NOTIME

#define NOIMM

#define NOKANJI

#define NOKERNEL

#define NOKEYSTATES

#define NOMCX

#define NOMEMMGR

#define NOMENUS

#define NOMETAFILE

#define NOMSG

#define NONCMESSAGES

#define NOPROFILER

#define NORASTEROPS

#define NORESOURCE

#define NOSCROLL

#define NOSERVICE

#define NOSHOWWINDOW

#define NOSOUND

#define NOSYSCOMMANDS

#define NOSYSMETRICS

#define NOSYSPARAMS

#define NOTEXTMETRIC

#define NOVIRTUALKEYCODES

#define NOWH

#define NOWINDOWSTATION

#define NOWINMESSAGES

#define NOWINOFFSETS

#define NOWIMSTYLES

#define OEMRESOURCE 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.4.2. Чтение файлов

Из книги Программирование на языке Пролог автора Клоксин У.

5.4.2. Чтение файлов Предикаты, которые предоставляет Пролог для переключения текущего входного потока данных, аналогичны предикатам, обсуждавшимся выше. Целевое утверждение see(X) переключает текущий входной поток данных на файл с указанным именем. Так же как и tell, это


6.10. Обработка файлов

Из книги Управление исходными текстами. Часть 1. Краткое руководство по CVS автора Рыженков Илья

6.10. Обработка файлов Предикаты для изменения текущего входного и текущего выходного потоков данных были введены в гл. 5. Здесь мы резюмируем наши знания о каждом из этих предикатов.see(X)Этот предикат открывает файл X, если он еще не открыт, и определяет, что текущим входным


Версии файлов

Из книги Sound Forge 9 автора Квинт Игорь

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


Проигрывание файлов

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Проигрывание файлов Чтобы запустить воспроизведение звукового или видеофайла вручную, нужно воспользоваться панелью в нижней части окна данных (Data Window) (рис. 3.7) или панелью Transport (Перемещение) главного окна программы (рис. 3.8). Рис. 3.7. Панель управления


Сохранение файлов

Из книги Новейший самоучитель работы на компьютере автора Белунцов Валерий

Сохранение файлов В программе Sound Forge в меню File (Файл) для сохранения аудиофайлов предусмотрено три следующих пункта:• Save (Сохранить) – самый быстрый способ сохранения ранее уже сохраненного файла;• Save As (Сохранить как) – позволяет указать имя, место и формат сохраняемого


Импорт файлов

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Импорт файлов При работе в Adobe InDesign мы можем добавить в публикацию графический файл с помощью команды File ? Place (Файл ? Поместить). Она уже знакома вам из главы 9. Точно так же, как мы включали в публикацию текст из текстовых форматов, мы обращаемся к графическим форматам для


Создание PDF-файлов

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Создание PDF-файлов Сохранить документ в формате PDF также можно, выполнив команду File ? Export (Файл ? Экспорт). Еще один вариант – использование подменю File ? Adobe PDF Presets (Файл ? Сохраненные настройки Adobe PDF); в этом подменю можно выбрать одну из ранее сохраненных настроек экспорта и


Формат файлов

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Формат файлов Когда пользователь начинает работу с каким-либо файлом, системе необходимо знать, в каком формате он записан и с помощью какой программы его нужно открывать. Например, если файл содержит обычный текст, то он может быть прочитан в любой текстовой программе


Сортировка файлов

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Сортировка файлов Для тестирования четырех вариантов реализации программ сортировки из главы 5 использовался целевой файл, состоящий из 100 000 записей размером 64 байта каждая (всего 6,4 Мбайт). Вывод отсортированного файла во всех случаях подавлялся, чтобы можно было


11.2.7. Синхронизация файлов

Из книги Виртуальная библиотека Delphi автора

11.2.7. Синхронизация файлов Когда программа пишет данные в файл, обычно они сохраняются в кэше ядра до тех пор, пока оно не выполнит запись на физический носитель (такой как жесткий диск), но ядро возвращает управление программе сразу после того, как данные скопируются в кэш.


11.4.4. Удаление файлов

Из книги автора

11.4.4. Удаление файлов Удаление файла — это удаление указателя на его inode и удаление содержимого файла, если не остается ни одой жесткой ссылки на него. Если любой процесс держит файл открытым, то inode этого файла предохраняется до тех пор, пока финальный процесс не закроет


11.4.5. Переименование файлов

Из книги автора

11.4.5. Переименование файлов Имя файла может быть изменено на любое другое до тех пор, пока оба имени относятся к одному и тому же физическому носителю (это то же ограничение, что и касается создания жестких ссылок). Если новое имя уже ссылается на файл, то такое имя


13.3. Блокирование файлов

Из книги автора

13.3. Блокирование файлов Хотя доступ к одному и тому же файлу со стороны нескольких процессов — вполне обычное явление, делать это следует осторожно. Многие файлы содержат сложные структуры данных, и обновление этих структур создает те же условия состязаний, что и в


1.7. Иерархия файлов

Из книги автора

1.7. Иерархия файлов Вся информация, хранящаяся на жестком диске вашего Мака, упорядочена иерархическим способом. Иерархическая организация является многоуровневой, при которой каждый новый уровень следует из предыдущего от высшего к низшему. На самом первом (верхнем)


Листинги

Из книги автора

Листинги В папке Листинги приведены листинги, рассмотренные в