Использование ВДФ для разработки драйвера

В этом разделе представлен общий обзор объектов платформы, которые будут использоваться для разработки драйвера платформы Kernel-Mode Driver Framework (КМДФ). Кроме указанных выше, вы будете использовать те же объекты для разработки драйвера платформы User-Mode Driver Framework (UMDF), начиная с UMDF версии 2.

драйверы Windows платформы драйверов (вдф) состоят из подпрограммы DriverEntry и набора функций обратного вызова событий, которые определяются Windows объектами платформы драйверов , используемыми драйверами на основе платформы. Функции обратного вызова вызывают методы объекта, которые экспортирует платформа. комплект драйверов Windows (WDK) содержит примеры драйверов вдф, демонстрирующих способы реализации функций обратного вызова событий драйвера. эти образцы можно загрузить с Windows Центр разработки-Hardware. Сведения о доступных примерах см. в разделе Sample Кмдф Drivers and Sample Drivers.

При создании драйвера ВДФ вы, как правило, выполняете следующие действия:

  • Используйте объект драйвера платформы для представления драйвера.

    Подпрограмму DriverEntry драйвера необходимо вызвать вдфдриверкреате , чтобы создать объект драйвера платформы, представляющий драйвер. метод вдфдриверкреате также регистрирует функцию обратного вызова евтдривердевицеадд драйвера, которая вызывается платформой каждый раз, когда диспетчер Plug and Play (PnP) сообщает о существовании устройства, поддерживаемого драйвером.

  • Используйте объекты устройств платформы для поддержки PnP и управления питанием в драйвере.

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

    Дополнительные сведения об объектах устройств платформы см. в разделе Поддержка PnP и управления питанием в драйвере.

  • Используйте объекты очереди и объекты запросов платформы для поддержки операций ввода-вывода в драйвере.

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

    Дополнительные сведения об использовании объектов очереди и объектов запроса платформы см. в разделе объекты очереди платформы и объекты запроса платформы.

  • Используйте объекты прерываний платформы для обработки прерываний устройства.

    Драйверы, обрабатывающие прерывания устройств, должны вызывать вдфинтеррупткреате для создания объекта прерывания платформы для каждого прерывания и регистрации функций обратного вызова. Эти функции обратного вызова включают и отключают прерывание и служат в качестве процедуры обработки прерываний (ISR) и отложенного вызова процедур (DPC) для прерывания.

    Дополнительные сведения об объектах прерываний платформы см. в разделе обработка аппаратных прерываний.

  • Драйверы КМДФ могут использовать объекты-модули поддержки DMA платформы и объекты транзакций DMA для управления операциями прямого доступа к памяти (DMA) устройства.

    Если устройство драйвера КМДФ поддерживает операции DMA, драйвер должен вызвать вдфдмаенаблеркреате для создания объекта включения DMA и вдфдматрансактионкреате для создания одного или нескольких объектов транзакций DMA. Объект транзакции DMA определяет функцию обратного вызова евтпрограмдма , которая программирует оборудование устройства для выполнения операции DMA.

    Дополнительные сведения о поддержке операций DMA см. в разделе Обработка операций DMA в драйверах на основе платформы.

  • Используйте целевые объекты платформы ввода-вывода для отправки запросов ввода-вывода в другие драйверы.

    Для передачи запросов ввода-вывода к другим драйверам (обычно следующий более низкий драйвер в стеке драйверов) драйвер отправляет запрос в целевой объект ввода-вывода.

    Дополнительные сведения о целевых объектах ввода-вывода см. в разделе Использование целевых объектов ввода-вывода.

  • драйвер кмдф может использовать объекты поставщика wmi платформы и объекты экземпляра wmi для поддержки возможностей инструментарий управления Windows (WMI) (WMI).

    Большинство драйверов КМДФ должны поддерживать Инструментарий WMI и вызывать вдфвмиинстанцекреате для регистрации функций обратного вызова, которые отправляют или получают данные WMI.

    Дополнительные сведения об инструментарии WMI см. в разделе Поддержка WMI в драйверах на основе платформы.

  • Используйте возможности синхронизации платформы.

    Все драйверы должны быть осведомлены о проблемах синхронизации многопроцессорной среды и должны использовать методы синхронизации , предоставляемые платформой.

  • Используйте дополнительные объекты и функции, предоставляемые платформой.

    Платформа предоставляет дополнительные объекты, которые может использовать драйвер. Дополнительные сведения об этих объектах см. в разделе ВДФ support Objects.