Системное программирование в среде Windows
Шрифт:
/* 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);
Поделиться:
Популярные книги
Инцел на службе демоницы 1 и 2: Секса будет много
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Предатель. Цена ошибки
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Жандарм 2
2. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Прогрессор поневоле
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен
Документальная литература:
публицистика
5.40
рейтинг книги
Истребитель. Ас из будущего
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Очешуеть! Я - жена дракона?!
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Отмороженный 4.0
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Треугольная шляпа. Пепита Хименес. Донья Перфекта. Кровь и песок.
65. Библиотека всемирной литературы
Проза:
классическая проза
5.00
рейтинг книги
Измена. Жизнь заново
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Три `Д` для миллиардера. Свадебный салон
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Бастард Императора. Том 5
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 21
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00