» » » Джонсон Харт - Системное программирование в среде Windows


Авторские права

Джонсон Харт - Системное программирование в среде Windows

Здесь можно скачать бесплатно "Джонсон Харт - Системное программирование в среде Windows" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Издательский дом "Вильямс", год 2005. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Джонсон Харт - Системное программирование в среде Windows
Рейтинг:
Название:
Системное программирование в среде Windows
Издательство:
Издательский дом "Вильямс"
Год:
2005
ISBN:
5-8459-0879-5
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Системное программирование в среде Windows"

Описание и краткое содержание "Системное программирование в среде Windows" читать бесплатно онлайн.



Эта книга посвящена вопросам разработки приложений с использованием интерфейса прикладного программирования операционных систем компании Microsoft (Windows 9х, Windows XP, Windows 2000 и Windows Server 2003). Основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, взаимодействие между процессами, сетевое программирование и синхронизацию. Рассматривается методика переноса приложений, написанных в среде Win32, в среду Win64. Подробно описываются все аспекты системы безопасности Windows и ее практического применения. Изобилие реальных примеров, доступных также и на Web-сайте книги, существенно упрощает усвоение материала.

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






 LPBOOL pFlag;

 int iFlag = 0, iArg;

 va_start(pFlagList, OptStr);

 while ((pFlag = va_arg(pFlagList, LPBOOL)) != NULL && iFlag < (int)_tcslen(OptStr)) {

  *pFlag = FALSE;

  for (iArg = 1; !(*pFlag) && iArg < argc && argv[iArg][0] == '-'; iArg++) *pFlag = _memtchr(argv[iArg], OptStr[iFlag], _tcslen(argv[iArg])) != NULL;

  iFlag++;

 }

 va_end(pFlagList);

 for (iArg = 1; iArg < argc && argv[iArg][0] == '-'; iArg++);

 return iArg;

SkipArg.с

Эта функция обрабатывает командную строку, пропуская одно поле, отделенное пробельным символом. Впервые используется в программе timep (программа 6.2).

Программа А.8. Функция SkipArg 

/* SkipArg.с

   Пропуск одного аргумента командной строки – символы табуляции и пробела пропускаются. */

#include "EvryThng.h"


LPTSTR SkipArg(LPCTSTR targv) {

 LPTSTR p;

 p = (LPTSTR)targv;

 /* Перейти к следующему символу табуляции или пробела. */

 while (*р != '\0' && *р != TSPACE && *р != TAB) p++;

 /* Пропустить символы табуляции и пробела и перейти к следующему аргументу. */

 while (*р != '\0' && (*р == TSPACE || *р == TAB)) p++;

 return р;

GetArgs.с

Эта функция просматривает строку, отыскивая слова, разделенные символами пробелов или табуляции, и помещает результат в массив строк, передаваемый функции. Эта функция может пригодиться для преобразования командной строки в массив argv[] и впервые используется в программе JobShell в главе 6. Функция Win32 CommandLineToArgW решает ту же задачу, но сфера ее применимости ограничивается символами Unicode.

Программа А.9. Функция GetArgs 

/* GetArgs. Преобразует командную строку к виду argc/argv. */

#include "EvryThng.h"


VOID GetArgs(LPCTSTR Command, int *pArgc, LPTSTR argstr[]) {

 int i, icm = 0;

 DWORD ic = 0;

 for (i = 0; ic < _tcslen(Command); i++) {

  while (ic < _tcslen(Command) && Command[ic] != TSPACE && Command [ic] != TAB) {

   argstr[i][icm] = Command[ic];

   ic++;

   icm++;

  }

  argstr[i][icm] = '\0';

  while (ic < _tcslen(Command) && (Command[ic] == TSPACE || Command[ic] == TAB)) ic++;

  icm = 0;

 }

 if (pArgc != NULL) *pArgc = i;

 return;

ПРИЛОЖЕНИЕ Б

Сопоставление функций Windows, UNIX и библиотеки С

В этом приложении приводятся таблицы, в которых представлены функции Windows (Win32 и Win64), описанные в основном тексте, а также сопоставимые с ними функции UNIX/Linux[36] и стандартной библиотеки ANSI С, если таковые имеются.

Таблицы расположены в порядке следования глав (некоторые таблицы объединяют данные, относящиеся к нескольким главам). В пределах каждой главы данные в таблицах отсортированы сначала в соответствии с их функциональным назначением (файловая система, управление каталогами и так далее), а затем по именам функций Windows.

В каждой из строк таблицы представлена следующая информация:

• Функциональная область (категория).

• Имя функции Windows.

• Имя соответствующей функции UNIX. В некоторых случаях существует несколько таких функций.

• Имя соответствующей функции библиотеки С, если таковая имеется.

Используемые в таблицах обозначения нуждаются в некоторых пояснениях.

• В библиотеке функций Microsoft Visual C++ содержатся некоторые функции, совместимые с UNIX. Так, функция _open является функцией библиотеки совместимости, эквивалентной UNIX-функции open. Выделение имени функции UNIX курсивом означает, что эта функция является совместимой. Символ звездочки в конце имени функции указывает на существование версии функции, ориентированной на работу с расширенными символами UNICODE. Так, существует функция _wopen.

• Программа, в которой используются только функции стандартной библиотеки С и отсутствуют вызовы функций Windows или UNIX, должны компилироваться, компоноваться и выполняться в обеих системах. В то же время, возможности такой программы в отношении работы с файлами и выполнения операций ввода/вывода будут ограниченными.

• Функция, следующая за разделительной запятой, является альтернативной версией, часто использующей другие характеристики или эмулирующей какой-то один из аспектов функции Windows.

• Разделение функций символом точки с запятой указывает на то, что эмуляция функции Windows достигается за счет последовательного использования этих функций. Так, функции CreateProcess соответствуют функции fork; exec.

• Подчеркивание имени элемента указывает на глобальную переменную, например errno.

• В некоторых случаях UNIX-эквивалент указывается в обобщенной форме с использованием такой, например, терминологии, как "функции терминального ввода/вывода" в случае Windows-функции AllocConsole. Часто приводится только соответствующий простой комментарий наподобие "Используйте библиотеку С", как это сделано в случае функции GetTempFileName. В других случаях ситуация обращается. Так, для функций управления сигналами в UNIX (функция sigaddset и подобные ей) в столбце "Windows" содержатся записи "Используйте SEH, VEH", означающие, что для обеспечения желаемого поведения программы программист должен установить структурные или векторные обработчики исключений и функции фильтров. В отличии от UNIX, группы процессов в Windows не поддерживаются, и в подобных случаях в столбце "Windows" ставится прочерк, что, впрочем, не помешало нам эмулировать отношения между процессами при управлении заданиями в главе 6.

• Многочисленные прочерки, особенно, когда они относятся к библиотеке С, встречаются в тех случаях, когда сопоставимые функции или наборы функций отсутствуют. Именно такая ситуация наблюдается, например, для функций управления каталогами.

• В таблицах к главам 7—10 в качестве функций UNIX фигурируют функции потоков POSIX (Pthreads), хотя они и не являются частью UNIX. Кроме того, хотя во многих реализациях UNIX имеются собственные объекты синхронизации, аналогичные событиям, мьютексам и семафорам, мы не пытались отразить их в таблицах.

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

Указанные функциональные соответствия не являются точными. Между всеми тремя системами имеется множество отличий, как существенных, так и незначительных. Поэтому данные таблицы могут служить лишь ориентиром. Многие из отмеченных отличий отдельно обсуждаются в главах книги.

Главы 2 и 3: управление файлами и каталогами Область Windows UNIX Библиотека С Примечания Консольный ввод/вывод AllocConsole Терминальный ввод/вывод - Консольный ввод/вывод FreeConsole Терминальный ввод/вывод - Консольный ввод/вывод ReadConsole read getc, scanf, gets Консольный ввод/вывод SetConsoleMode ioctl - Консольный ввод/вывод WriteConsole write putc, printf, puts Управление каталогами CreateDirectory mkdir* - Создание нового каталога Управление каталогами FindClose closedir* - Закрытие дескриптора поиска Управление каталогами FindFirstFile opendir*, readdir* - Поиск первого файла, соответствующего шаблону Управление каталогами FindNextFile readdir* - Поиск следующих файлов, соответствующих шаблону Управление каталогами GetCurrentDirectory getcwd* - Управление каталогами GetFullPathName - - Управление каталогами GetSystemDirectory Известные пути доступа - Управление каталогами RemoveDirectory rmdir, unlink* remove Управление каталогами SearchPath Используйте opendir, readdir - Поиск указанного файла по указанному пути Управление каталогами SetCurrentDirectory chdir*, fchdir - Смена рабочего каталога Обработка ошибок FormatMessage strerror perror Обработка ошибок GetLastError errno errno Глобальная переменная Обработка ошибок SetLastError errno errno Глобальная переменная Блокирование файлов LockFile fcntl(cmd=F_GETLK,…) - Блокирование файлов LockFileEx fcntl(cmd=F_GETLK,…) - Блокирование файлов UnlockFile fcntl(cmd=F_GETLK,…) - Блокирование файлов UnlockFileEx fcntl(cmd=F_GETLK,…) - Файловая система CloseHandle (в данном случае закрытие дескриптора файла) close* fclose CloseHandle не ограничивается файлами Файловая система CopyFile open; read; write; close fopen; fread; fwrite; fclose Дублирование файла Файловая система CreateFile open*, creat* fopen Открытие/ создание файла Файловая система DeleteFile unlink* remove Удаление файла Файловая система FlushFileBuffers fsynch fflush Запись буферизованных данных в файл Файловая система GetFileAttributes stat*, fstat*, lstat - Файловая система GetFileInformationByHandle stat*, fstat*, lstat - Заполнение структуры информацией о файле Файловая система GetFileSize stat*, fstat*, lstat ftell, fseek Получение размера файла в байтах Файловая система  GetFileTime stat*, fstat*, lstat - Файловая система GetFileType stat*, fstat*, lstat - Определение типа устройства или файла Файловая система GetStdHandle Используйте файловые дескрипторы 0, 1 или 2 Используйте stdin, stdout, stderr Файловая система GetTempFileName Используйте библиотеку С tmpnam Создание уникального имени файла Файловая система GetTempFileName, CreateFile Используйте библиотеку С tmpfile Создание временного файла Файловая система GetTempPath /temp path - Получение пути к каталогу для временных файлов Файловая система MoveFile, MoveFileEx Используйте библиотеку С rename Переименование файла или каталога Файловая система CreateHardLink link, unlink* - Windows не поддерживает ссылки Файловая система - symlink - Создание символической ссылки Файловая система - readlink - Чтение имени в символической ссылке Файловая система Отсутствует; ReadFile возвращает 0 байт Отсутствует; read возвращает 0 байт feof Количество оставшихся до конца файла байтов Файловая система Отсутствует; используйте многократные вызовы ReadFile readv Отсутствует; используйте многократные вызовы freads Фрагментированное чтение Файловая система Отсутствует; используйте многократные вызовы WriteFile writev Отсутствует; используйте многократные вызовы fwrites Запись со слиянием Файловая система ReadFile read fread Чтение данных из файла Файловая система SetEndOfFile chsize* - Файловая система SetFileAttributes fcntl - Файловая система SetFilePointer lseek fseek Установка указателя файла Файловая система SetFilePointer (установка в 0) lseek(0) rewind Файловая система SetFileTime utime* - Файловая система SetStdHandle close, dup*, dup2* или fcntl freopen dup2 или fcntl Файловая система WriteFile write fwrite Запись данных в файл Получение сведений о системе GetDiskFreeSpace - - Получение сведений о системе GetSystemInfo getrusage - Получение сведений о системе GetVersion uname - Получение сведений о системе GetVolumeInformation - - Получение сведений о системе GlobalMemoryStatus getrlimit - Получение сведений о системе Ряд предопределенных констант sysconf, pathconf, fpathconf - Дата и время GetSystemTime Используйте библиотеку С time, gmtime Дата и время См. программу ls (Программа 3.2) Используйте библиотеку С asctime Дата и время CompareFileTime Используйте библиотеку С difftime Сравнение "календарных" значений даты и времени Дата и время FileTimeToLocalFileTime, FileTimeToSystemTime Используйте библиотеку С localtime Дата и время FileTimeToSystemTime Используйте библиотеку С gmtime Дата и время GetLocalTime Используйте библиотеку С time, localtime Дата и время См. программу touch (программа 3.3) Используйте библиотеку С strftime Дата и время SetLocalTime - - Дата и время SetSystemTime - - Дата и время Вычитание значений отметок времени Используйте библиотеку С difftime Дата и время SystemTimeToFileTime Используйте библиотеку С mktime Глава 4: обработка исключений Область Windows UNIX Библиотека С SEH __try–__except Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH __try–__finally Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH AbnormalTermination Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH GetExceptionCode Используйте сигналы библиотеки С Используйте сигналы библиотеки С SEH RaiseException Используйте сигналы библиотеки С signal, raise Сигналы Используйте блок __finally Используйте библиотеку С atexit Сигналы Используйте библиотеку С или TerminateProcess kill raise Сигналы Используйте библиотеку С Используйте библиотеку С signal Сигналы Используйте SEH, VEH sigemptyset - Сигналы Используйте SEH, VEH sigfillset - Сигналы Используйте SEH, VEH sigaddset - Сигналы Используйте SEH, VEH sigdelset - Сигналы Используйте SEH, VEH sigismember - Сигналы Используйте SEH, VEH sigprocmask - Сигналы Используйте SEH, VEH sigpending - Сигналы Используйте SEH, VEH sigaction - Сигналы Используйте SEH, VEH sigsetjmp - Сигналы Используйте SEH, VEH siglongjmp - Сигналы Используйте SEH, VEH sigsuspendf - Сигналы Используйте SEH, VEH psignal - Сигналы Используйте SEH, VEH или библиотеку С Используйте библиотеку С abort

Примечание. Многие поставщики систем UNIX предоставляют собственные средства обработки исключений.


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Системное программирование в среде Windows"

Книги похожие на "Системное программирование в среде Windows" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Джонсон Харт

Джонсон Харт - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Джонсон Харт - Системное программирование в среде Windows"

Отзывы читателей о книге "Системное программирование в среде Windows", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.