Системное программирование в среде 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);
Поделиться:
Популярные книги
Заставь меня остановиться 2
2. Заставь меня остановиться
Любовные романы:
современные любовные романы
6.29
рейтинг книги
Усадьба леди Анны
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мимик нового Мира 10
9. Мимик!
Фантастика:
юмористическое фэнтези
альтернативная история
постапокалипсис
рпг
5.00
рейтинг книги
Кодекс Охотника. Книга IX
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Игрок, забравшийся на вершину. Том 8
8. Игрок, забравшийся на вершину
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Физрук: назад в СССР
1. Физрук
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Темный Патриарх Светлого Рода 6
6. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Энфис 5
5. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Хочу тебя навсегда
2. Люби меня
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Я все еще не князь. Книга XV
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Волк 5: Лихие 90-е
5. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Разбуди меня
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Ученик
1. Ученик
Фантастика:
фэнтези
6.20
рейтинг книги
Не грози Дубровскому! Том IX
9. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00