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


Создание объектов устройств в драйвере шины

Каждый драйвер шины должен создать объект устройства платформы при обнаружении подключения дочернего устройства к родительскому устройству. Родительское устройство обычно является шиной, но это также может быть многофункциональным устройством, для которого для каждой функции требуется отдельный набор драйверов (например, звуковая карта, поддерживающая цифровой звук и MIDI). Объекты устройств, создаваемые драйверами шины, называются объектами физических устройств (PDOS), так как каждый представляет фактическое подключение одного элемента оборудования (дочернего) к другому (родительскому).

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

Дополнительные сведения о перечислении устройств на шине см. в разделе Перечисление устройств на шине.

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

Создание объекта устройства платформы для перечисленного дочернего устройства обычно включает следующие действия:

  • Регистрация функций обратного вызова, специфичных для водителя автобуса.

    Большинство драйверов шины вызывают WdfPdoInitSetEventCallbacks, так как они должны указывать системные аппаратные ресурсы, необходимые устройству. Дополнительные сведения об указании аппаратных ресурсов см. в разделе Аппаратные ресурсы для Framework-Based драйверов. Дополнительные функции обратного вызова можно зарегистрировать, если устройство и драйвер поддерживают удаление.

  • Отчет о строках идентификации устройства .

    Драйверы шины должны сообщать о строках идентификации устройства путем вызова WdfPdoInitAssignDeviceID, WdfPdoInitAssignInstanceID, WdfPdoInitAddCompatibleIDи WdfPdoInitAddHardwareID для каждого типа строки, поддерживаемого устройством. Кроме того, драйверы шины, использующие версию 1.9 или более поздней версии платформы, могут вызывать WdfPdoInitAssignContainerID.

  • Сообщает, может ли драйвер шины поддерживать устройство в необработанном режиме.

    Если драйвер шины поддерживает необработанный режим для устройства, он должен вызывать WdfPdoInitAssignRawDevice.

  • Предоставление отображаемого текста, описывающего устройство.

    Водители автобусов вызывают WdfPdoInitAddDeviceText и WdfPdoInitSetDefaultLocale для предоставления текста, описывающего устройство пользователям на нескольких языках.

  • Создание объекта устройства.

    Последним шагом при создании объекта устройства является вызов WdfDeviceCreate.

Если драйвер обнаруживает ошибку при инициализации структуры WDFDEVICE_INIT, полученной из WdfPdoInitAllocate, драйвер должен вызывать WdfDeviceInitFree вместо WdfDeviceCreate.

После создания объекта устройства драйвер автобуса обычно вызывает WdfDeviceSetPnpCapabilities и WdfDeviceSetPowerCapabilities, чтобы сообщить о возможностях устройства Plug and Play и его энергетических характеристиках.

Каждый драйвер шины также является драйвером-функцией для адаптера шины. Поэтому драйвер также должен предоставить функцию обратного вызова EvtDriverDeviceAdd. Эта функция обратного вызова создает функциональный объект устройства (FDO) для каждого адаптера шины в системе. Дополнительные сведения о создании FDO см. в создании объектов устройств в драйвере функций.