Ваше Имя:
Пароль:

+ Регистрация



В.Солдатов - Программирование драйверов Windows
Категория: C++, C, Книги | Добавил: root, 5 марта 2007 | Просмотров: 15455
Программирование драйверов WindowsВ.Солдатов - Программирование драйверов Windows

Издательство: Бином
ISBN: 5-9518-0099-4
Страниц: 432
Год: 2004


Формат: CHM
Размер: 1.1 Mb
 

От издателя
Книга представляет собой систематизированное введение в программирование драйверов Windows 2000/XP/Server 2003 и Windows 98/Me с использованием Microsoft Windows DDK. Начиная с рассмотрения базовых понятий и терминов программирования драйверов, автор затем подробно рассматривает набор программных средств, необходимых для разработки драйверов режима ядра в операционной системе Windows, а после реализации законченного драйвера, что дает накопление стартового опыта, переходит к детальному рассмотрению структуры драйверов модели WDM и "драйверов-в-стиле-NT". Подробно рассмотрены особенности работы с памятью в режиме ядра, вопросы взаимодействия с подсистемой ввода/вывода Windows, создания и синхронизации программных потоков, особенности работы с совместно используемыми данными, процедуры для работы с файлами, текстом, временем и Системным Реестром в режиме ядра. Рассмотрены разные способы инсталляции драйверов - от взаимодействия с системным Мастером Установки новой аппаратуры до динамической загрузки с использованием сервисов SCM Менеджера. Отдельная глава посвящена составлению и отладке inf-файлов - вопросу, крайне редко затрагиваемому в русскоязычной литературе по программированию. Затрагиваются также и общие вопросы работы с аппаратурой, включая обзор шин современного компьютера - PCI, USB, FireWire, PC Cards. Завершается книга рассмотрением методов тестирования и отладки драйверов. В приложениях приводится справочная информация, полезная разработчику драйверных систем как, впрочем, и всем профессиональным программистам в среде Windows.
Материал книги дает ясное представление об основных типах данных и структурах драйверов и механизмах их взаимодействия с операционной системой. Минимальным требованием к читателю является хорошее знание языка программирования С (без расширений С++).
Книга будет полезна студентам и специалистам, интересующимся программированием в режиме ядра Windows и разработкой модулей ядра, которыми, в частности, являются драйверы.


Ссылки для ознакомления:
depositfiles
ifolder




Версия для печати

Комментариев: 1 +
Уважаемый посетитель, вы вошли на сайт как незарегистрированный пользователь. Вы можите зарегистрироваться, либо войти на сайт под своим именем, чтобы добавлять комментарии.

Другие статьи в этой категории
Кристиан Нейгел, Билл Ивьен, Д. Глинн, Уотсон, Морган Скиннер - C# 4.0 и платформа .NET 4 для профессионалов

Издательство: Вильямс
ISBN: 978-5-8459-1656-3
Год: 2010
Страниц: 1440


Формат: DJVU + CD
Размер: 65 Mb
 
Программирование. Принципы и практика использования C++Бьерн Страуструп - Программирование. Принципы и практика использования C++

Издательство: Вильямс
ISBN: 978-5-8459-1705-8
Год: 2011
Страниц: 1246


Формат: DJVU
Размер: 20 Mb
 
#include <stdlib.h>
int wctomb(char *out, wchar_t in);
Функция wctomb() преобразует двухбайтовый символ, содержащийся в параметре in, в его многобайтовый эквивалент и помещает результат в массив, адресуемый параметром out. Массив, адресуемый параметром out, должен иметь длину не меньше MB_CUR_MAX символов.

При успешном выполнении функция wctomb() возвращает количество байтов, содержащихся в многобайтовом символе. При возникновении ошибки возвращается значение -1.

Если параметр out равен нулю, функция wctomb() возвращает ненулевое значение в случае, когда многобайтовый символ имеет кодировку, зависящую от территориально-языковых особенностей. В противном случае возвращается нуль.
#include <stdlib.h>
size_t wcstombs(char *out, const wchar_t *in, size_t size);

Функция wcstombs() преобразует массив двухбайтовых символов, адресуемый параметром-указателем in, в его многобайтовый эквивалент и помещает результат в массив, адресуемый параметром out. Преобразованию подлежат только первые size символов. Процесс преобразования прекращается раньше, если будет обнаружен символ конца строки ('0').

В версии С99 к параметрам out и in применен квалификатор restrict.

При успешном выполнении функция wcstombs() возвращает количество байтов, помещенных в массив out. При возникновении ошибки возвращается значение -1.
#include <stdarg.h>
type va_arg(va_list argptr, type);
void va_copy(va_list target, va_list source);
void va_end(va_list argptr);
void va_start(va_list argptr, last_parm);
Макрос va_copy() добавлен в версии С99.

Для передачи функции переменного числа аргументов совместно используются макросы va_arg, va_start и va_end. Самым распространенным примером функции, которая принимает переменное число аргументов, является функция printf(). Тип va_list определен в заголовке .

Общая процедура создания функции, которая может принимать переменное количество аргументов, такова:

Функция должна иметь по крайней мере один известный параметр (может и больше), указываемый до переменного списка параметров. (Такие параметры называются также обязательными, а параметры, следующие за ними — необязательными.) Крайний правый известный параметр называется last_parm. (Он предшествует первому необязательному параметру.) Его имя используется в качестве второго параметра в обращении к макросу va_start(). Чтобы получить доступ к любому дополнительному параметру, сначала необходимо инициализировать указатель-аргумент argptr, обратившись к макросу va_start(). (Иными словами, необходимо выполнить вызов va_start(argptr, <имя last_parm>).) После этого значения параметров возвращаются в результате вызова макроса va_arg(). В качестве второго аргумента этого макроса (соответствующего параметру type), нужно указать тип следующего параметра. Наконец, после прочтения всех параметров до возвращения из функции необходимо вызвать макрос va_end(), чтобы гарантировать корректное восстановление стека. Если макрос va_end() вызван не будет, высока вероятность аварийного отказа программы.

Макрос va_copy() копирует список аргументов, обозначенный параметром target, в объект, обозначенный параметром source.
#include <stdlib.h>
int system(const char *str);
Функция system() передает строку, адресуемую параметром str, в качестве команды для командного процессора операционной системы.

Если функция system() вызывается с нулевым указателем, она возвращает ненулевое значение при условии доступности командного процессора и нуль в противном случае. (Программы, выполняемые в специальных средах, могут не иметь доступа к командному процессору.) Значение, возвращаемое функцией system(), определяется конкретной реализацией. Но обычно возвращается нуль при успешном выполнении команды, а ненулевое значение кода возврата означает наличие ошибки.
#include <stdlib.h>
unsigned long long int strtoull(const char *restrict start,
char **restrict end, int radix);
Функция strtoull() добавлена в версии С99.

Функция strtoull() аналогична функции strtoul() за исключением того, что она возвращает значение типа unsigned long long int. Если результат не может быть представлен как значение типа unsigned long long int, возвращается значение ULLONG_MAX, а глобальная переменная errno устанавливается равной значению ERANGE, свидетельствующему об ошибке из-за выхода результата за пределы представимых чисел. Если параметр start не указывает на число, никакого преобразования не выполняется и функция возвращает нуль.