Создание драйвера фильтра

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

Сначала определите, какая модель драйвера подходит для драйвера фильтра. Чтобы определить, какая модель лучше всего подходит для вас, см. Выбор модели драйвера. Если вы пишете драйвер фильтра для аппаратного устройства, определите расположение устройства в списке технологий, описанных в разделе "Технологии устройств и драйверов". Ознакомьтесь с документацией по этой конкретной технологии, чтобы узнать, есть ли какие-либо рекомендации по выбору модели драйвера фильтра. Рекомендуемая модель драйвера фильтров зависит от одной технологии к следующей. Для некоторых технологий документация рекомендует использовать платформу драйвера пользовательского режима (UMDF), платформу драйвера режима ядра (KMDF) или модель драйвера Windows (WDM). Для других технологий документация содержит явные сведения о написании драйвера фильтра. Некоторые технологии имеют модели мини-фильтров. Для некоторых технологий может не быть никаких рекомендаций для модели драйвера фильтра.

Затем определите, какие из следующих случаев описывают рекомендации по модели драйверов и выполните следующие действия.

Вариант 1. Документация по вашей технологии рекомендует UMDF.

  1. В Visual Studio в меню Файл выберите Создать | Проект.
  2. В диалоговом окне "Создать проект" на панели слева найдите и выберите Visual C++ | Драйвер Windows | WDF.
  3. В средней области выберите "Драйвер пользовательского режима" (UMDF).
  4. Заполните поля Имя и Место, и выберите ОК. Дополнительные сведения см. в статье "Написание драйвера UMDF на основе шаблона". Заметка При создании нового драйвера UMDF необходимо выбрать имя драйвера с 32 символами или меньше. Это ограничение длины определяется в wdfglobals.h.
  5. На этом этапе у вас есть проект драйвера, реализующий общий код, необходимый большинству драйверов UMDF. Теперь вы можете указать код, относящийся к вашему фильтру.

Вариант 2. Документация по вашей технологии рекомендует KMDF.

  1. В Visual Studio в меню Файл выберите Создать | Проект.
  2. В диалоговом окне "Новый проект" на панели слева найдите и выберите WDF.
  3. В средней области выберите драйвер режима ядра (KMDF).
  4. Заполните поля Имя и Место, и выберите ОК. Дополнительные сведения см. в статье "Написание драйвера KMDF на основе шаблона". Заметка При создании нового драйвера KMDF необходимо выбрать имя драйвера с 32 символами или меньше. Это ограничение длины определяется в wdfglobals.h.
  5. На этом этапе у вас есть проект драйвера, реализующий общий код, необходимый большинству драйверов KMDF. Теперь вы можете предоставить код, относящийся к вашему фильтру.

Вариант 3. Документация по вашей технологии описывает определенную модель фильтра или мини-фильтра.

Если у вашей технологии устройства есть определенный фильтр или модель минифильтра, проверьте, имеет ли Visual Studio шаблон для модели.

  1. В Visual Studio в меню Файл выберите Создать | Проект.
  2. В диалоговом окне "Создать проект" на панели слева найдите и выберите Шаблоны | Visual C++ | Драйвер Windows.
  3. Просмотрите список установленных шаблонов, чтобы узнать, существует ли шаблон для типа фильтра, который требуется написать. Например, можно выбрать драйвер фильтра: шаблон NDIS в разделе "Сеть".
  4. Если нет шаблона для вашего типа драйвера фильтра в драйвере Windows, выберите "Online " и просмотрите шаблоны, доступные в Интернете.
  5. Если вы найдете шаблон для типа драйвера фильтра, выберите шаблон, заполните поля "Имя " и "Расположение " и нажмите кнопку "ОК".
  6. На этом этапе у вас есть проект драйвера, реализующий общий код, необходимый драйверу фильтра. Теперь вы можете указать код, относящийся к вашему фильтру. Ознакомьтесь с документацией по технологии, чтобы узнать о функциях, которые необходимо реализовать.

Если у вашей технологии устройства есть определенная модель фильтра или модель минифильтра, и вы не можете найти шаблон для вашего типа драйвера фильтра, ознакомьтесь с документацией по технологии, чтобы определить, следует ли использовать UMDF, KMDF или WDM.

Вариант 4. Документация по вашей технологии рекомендует WDM.

  1. В Visual Studio в меню Файл выберите Создать | Проект.

  2. В Visual Studio в диалоговом окне "Новый проект" в разделе драйвер Windowsвыберите WDM.

  3. Заполните поля Имя и Место, и выберите ОК.

  4. На этом этапе у вас есть пустой проект драйвера WDM. В окне обозревателя решений выберите и удерживайте (или щелкните правой кнопкой мыши) проект драйвера и выберите Добавить | Новый элемент.

  5. В диалоговом окне "Добавить новый элемент" выберите файл C++ (.cpp), введите имя файла и нажмите кнопку ОК.

    Заметка Если вы хотите создать C-файл вместо файла .cpp, введите имя с расширением C .

  6. Реализуйте функции, необходимые фильтру. При реализации и упорядочении функций можно добавить дополнительные .cpp или C-файлы.

Случай 5. В документации по вашей технологии нет рекомендации по модели драйвера фильтра.

  1. Определите, является ли UMDF, KMDF или WDM лучшей моделью для драйвера фильтра. Дополнительные сведения см. в разделе "Выбор модели драйвера".

  2. В Visual Studio в меню Файл выберите Создать | Проект.

  3. В Visual Studio в диалоговом окне "Новый проект" в разделе "Драйвер Windows" выберите один из следующих шаблонов:

    • WDF | Драйвер пользовательского режима (UMDF)
    • WDF | Драйвер режима ядра (KMDF)
    • WDM | Пустой драйвер ядра

    Примечание При создании нового драйвера KMDF или UMDF необходимо выбрать имя драйвера с 32 символами или меньше. Это ограничение длины определяется в wdfglobals.h.

  4. Реализуйте функции, необходимые фильтру. При необходимости создайте файлы C или .cpp.

Если вы не уверены, какой шаблон следует использовать, рассмотрите возможность чтения или публикации на форуме по разработке оборудования Windows WDK и драйвера .