Подтвердить что ты не робот

Начало работы по разработке драйверов

Есть ли у кого-нибудь книги/учебники, которые могут быть полезны при запуске в разработке драйверов устройств Windows?

Для простой разработки Win32/GUI книга Петцольда, по-видимому, является основной ссылкой. Существует ли такое для драйверов?

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

Billy3

4b9b3361

Ответ 1

Остерегайтесь того, что разработка драйверов устройств (архитектура и инструменты) меняет больше, чем разработка Win32... так что книга Петцольда с 1990-х годов отлично подходит для Win32 и может считаться вневременной классикой, архитектура для многих видов драйверов (драйверов принтеров, сетевых драйверов и т.д.) варьируется в различных выпусках O/S.

Вот запись в блоге, в которой рассматриваются различные книги: Обзоры книг драйверов устройств Windows.

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

Ответ 2

Чтобы хорошо изучить разработку ядра:

а. множество программ ядра ядра:

Пример DDK для Windows:

http://social.msdn.microsoft.com/Forums/en-US/softwaretesting/thread/08690203-1757-4129-b59a-6bae10bcdce8/

Образцы WDK:

http://msdn.microsoft.com/en-us/windows/hardware/gg487428

Или просто выполните поиск:

http://www.google.com/search?q=windows+ddk+samples

(потому что выше URL-адрес может измениться, но Google, скорее всего, вернет вам самый подходящий/доступный)

б. много методов отладки, и среди них я нашел лучшее, что VMware (или VirtualBox) + windbg + последовательный порт отладки:

http://www.google.com/search?q=windbg+vmware+kernel+debug

и эта статья является классической для использования VMWare + windbg (Lord of the Ring0):

http://silverstr.ufies.org/lotr0/windbg-vmware.html

с. а также системные административные инструменты, которые другие построили:

http://technet.microsoft.com/en-us/sysinternals/bb545021

(Раньше назывался SysInternals, созданный Марком Руссиновичем, соавтором "Windows Internal" - ДОЛЖЕН ПРОЧИТАТЬ!!)

http://technet.microsoft.com/en-us/sysinternals/bb963901

из этих инструментов у вас будут огромные варианты отладки.

д. Присоединитесь к списку рассылки OSR (ntdev особенно активен, но есть другие, такие как windbg):

http://www.osronline.com/page.cfm?name=ListServer

е. Посмотрите много видео, связанных с ядром Windows + на канале9 (google вернул более 1000 ссылок):

http://www.google.com/search?q=site:channel9.msdn.com+kernel+video&num=100

ф. Дискуссионный форум:

http://social.microsoft.com/Forums/en-us/kernel/threads

http://social.msdn.microsoft.com/Forums/en-US/wdk/threads

Подписано также бесплатному журналу OSR (печатная версия). Я получил мое с 1998 года по настоящее время - и он доставлен на полпути вокруг земли!

Ответ 3

Я бы искал учебники с богатыми примерами, например этот. Суть в разработке драйверов Windows - получить представление о слоях и IRP, IRQL, а также узнать термины, такие как драйверы фильтров. Если вы ищете примеры кода, вот мой код драйвера Spodek: ссылка sf.net. Вы найдете там драйвер фильтра (для клавиатуры, keyb.c), очередь пространства ядра (queue.c) и методы, чтобы скрыть присутствие в системе. Это старый (sys) драйвер, хотя.

Ответ 4

Вероятно, вы должны использовать совершенно новую инфраструктуру Windows Driver Foundation (WDF) вместо старой среды WDM. Хорошей отправной точкой является чтение Документы WDF Обзор Word.

Если вы хотите прочитать книгу, "Разработка драйверов с помощью Windows Driver Foundation" - это тот, который вы ищете.

Ответ 5

Лично лучший способ начать разработку - это реальная экспозиция. Имея это в виду, я бы пересмотрел эту книгу

Арсенал Rootkit: побег и уклонение в темных углах системы

The Rootkit Arsenal Cover

Этого должно быть достаточно, чтобы вы начали запускать какой-то код, который выполняет "что-то", после того, как у вас будет общая картина, на которой вы могли бы остановиться на таких вопросах, как: - Разница между методами Buffered/Neither/Direct и связанными с ними особенностями.

"Программирование модели драйверов Windows, второе издание" также является отличной помощью, когда вам нужны детали в отношении некоторых конкретных тем. Но сначала я считаю, что самое главное - положить вещи в контекст, а затем основываться на этом.