Поделиться через


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

В этом разделе объясняется, как использовать 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 нет шаблона для вашего типа драйвера фильтра, выберите Интернет и просмотрите шаблоны, доступные в Интернете.
  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 и драйверов .