Создание нового драйвера фильтра
В этом разделе объясняется, как использовать Visual Studio для создания нового драйвера фильтра. Драйверы фильтров отличаются от драйверов функций устройств, программных драйверов и драйверов файловой системы, которые рассматриваются в других разделах. Сведения о драйверах фильтров и их отличиях от других типов драйверов см. в следующих разделах.
- Что такое драйвер?
- Выбор модели драйвера
- Узлы устройств и стеки устройств
- Фильтры драйверов
- Типы драйверов WDM
Сначала определите, какая модель драйвера подходит для драйвера фильтра. Сведения о том, какая модель лучше всего подходит для вас, см. в разделе Выбор модели драйвера. Если вы пишете драйвер фильтра для аппаратного устройства, определите, где устройство впишется в список технологий, описанных в разделе Технологии устройств и драйверов. Ознакомьтесь с документацией по этой конкретной технологии, чтобы узнать, есть ли какие-либо рекомендации по выбору модели драйвера фильтра. Рекомендуемая модель драйвера фильтра зависит от технологии к другой. Для некоторых технологий в документации рекомендуется использовать платформу драйвера пользовательского режима (UMDF), платформу драйвера режима ядра (KMDF) или модель драйвера Windows (WDM). Для других технологий в документации содержатся явные сведения о том, как написать драйвер фильтра. Некоторые технологии имеют модели мини-фильтров. Для некоторых технологий может не быть рекомендаций по модели драйвера фильтра.
Затем определите, в каком из следующих случаев описывается рекомендация по модели драйвера, и выполните указанные ниже действия.
Случай 1. В документации по вашей технологии рекомендуется использовать UMDF.
- В Visual Studio в меню Файл выберите Создать | Проект.
- В диалоговом окне Новый проект на левой панели найдите и выберите Visual C++ | Драйвер Windows | WDF.
- В средней области выберите Драйвер пользовательского режима (UMDF).
- Заполните поля Имя и Расположение и нажмите кнопку ОК. Дополнительные сведения см. в статье Создание драйвера UMDF на основе шаблона. Примечание При создании нового драйвера UMDF необходимо выбрать имя драйвера, которое содержит не более 32 символов. Это ограничение длины определяется в wdfglobals.h.
- На этом этапе у вас есть проект драйвера, реализующий общий код, необходимый большинству драйверов UMDF. Теперь можно указать код, относящееся к вашему фильтру.
Случай 2. В документации по вашей технологии рекомендуется ИСПОЛЬЗОВАТЬ KMDF.
- В Visual Studio в меню Файл выберите Создать | Проект.
- В диалоговом окне Новый проект в области слева найдите и выберите WDF.
- В средней области выберите Драйвер режима ядра (KMDF).
- Заполните поля Имя и Расположение и нажмите кнопку ОК. Дополнительные сведения см. в статье Создание драйвера KMDF на основе шаблона. Примечание При создании нового драйвера KMDF необходимо выбрать имя драйвера, которое содержит не более 32 символов. Это ограничение длины определяется в wdfglobals.h.
- На этом этапе у вас есть проект драйвера, который реализует общий код, необходимый большинству драйверов KMDF. Теперь можно указать код, относящееся к вашему фильтру.
Случай 3. В документации по вашей технологии описывается определенная модель фильтра или мини-фильтра.
Если у вашей технологии устройства есть определенная модель фильтра или минифильтра, проверка, чтобы узнать, есть ли шаблон для модели в Visual Studio.
- В Visual Studio в меню Файл выберите Создать | Проект.
- В диалоговом окне Новый проект на левой панели найдите и выберите Шаблоны | Visual C++ | Драйвер Windows.
- Просмотрите список установленных шаблонов, чтобы узнать, существует ли шаблон для типа фильтра, который необходимо написать. Например, можно выбрать шаблон Драйвер фильтра: NDIS в разделе Сеть.
- Если в разделе Драйвер Windows нет шаблона для вашего типа драйвера фильтра, выберите Интернет и просмотрите шаблоны, доступные в Интернете.
- Если вы нашли шаблон для своего типа драйвера фильтра, выберите шаблон, заполните поля Имя и Расположение и нажмите кнопку ОК.
- На этом этапе у вас есть проект драйвера, который реализует общий код, необходимый драйверу фильтра. Теперь можно указать код, относящееся к вашему фильтру. Сведения о функциях, которые необходимо реализовать, см. в документации по вашей технологии.
Если технология вашего устройства имеет определенную модель фильтра или модель минифильтра и вы не можете найти шаблон для своего типа драйвера фильтра, ознакомьтесь с документацией по конкретной технологии, чтобы определить, следует ли использовать UMDF, KMDF или WDM.
Случай 4. В документации по вашей технологии рекомендуется использовать WDM.
В Visual Studio в меню Файл выберите Создать | Проект.
В Visual Studio в диалоговом окне Новый проект в разделе Драйвер Windows выберите WDM.
Заполните поля Имя и Расположение и нажмите кнопку ОК.
На этом этапе у вас есть пустой проект драйвера WDM. В окне Обозреватель решений выберите и удерживайте (или щелкните правой кнопкой мыши) проект драйвера, а затем выберите Добавить | Новый элемент.
В диалоговом окне Добавление нового элемента выберите Файл C++ (CPP), введите имя файла и нажмите кнопку ОК.
Примечание Если вы хотите создать C-файл вместо CPP-файла, введите имя с расширением C .
Реализуйте функции, необходимые для фильтра. По мере реализации и упорядочения функций вы можете добавить дополнительные CPP- или C-файлы.
Случай 5. В документации по вашей технологии нет рекомендаций по модели драйвера фильтра.
Определите, является ли UMDF, KMDF или WDM лучшей моделью для драйвера фильтра. Справку см. в разделе Выбор модели драйвера.
В Visual Studio в меню Файл выберите Создать | Проект.
В Visual Studio в диалоговом окне Новый проект в разделе Драйвер Windows выберите один из следующих шаблонов:
- WDF | Драйвер пользовательского режима (UMDF)
- WDF | Драйвер режима ядра (KMDF)
- WDM | Пустой драйвер ядра
Примечание При создании нового драйвера KMDF или UMDF необходимо выбрать имя драйвера, которое содержит не более 32 символов. Это ограничение длины определяется в wdfglobals.h.
Реализуйте функции, необходимые для фильтра. При необходимости создайте новые C- или CPP-файлы.
Если вы не уверены, какой шаблон использовать, рассмотрите возможность чтения или публикации на форуме по разработке оборудования Windows WDK и драйверов .