функция обратного вызова EVT_WDF_DRIVER_DEVICE_ADD (wdfdriver.h)
[Относится к KMDF и UMDF]
Функция обратного вызова события EvtDriverDeviceAdd драйвера выполняет операции инициализации устройства, когда диспетчер Plug and Play (PnP) сообщает о существовании устройства.
Синтаксис
EVT_WDF_DRIVER_DEVICE_ADD EvtWdfDriverDeviceAdd;
NTSTATUS EvtWdfDriverDeviceAdd(
[in] WDFDRIVER Driver,
[in, out] PWDFDEVICE_INIT DeviceInit
)
{...}
Параметры
[in] Driver
Дескриптор для объекта драйвера платформы, представляющего драйвер.
[in, out] DeviceInit
Указатель на структуру, выделенную платформой WDFDEVICE_INIT .
Возвращаемое значение
Функцияобратного вызова EvtDriverDeviceAdd должна возвращать STATUS_SUCCESS, если операция выполнена успешно. В противном случае эта функция обратного вызова должна возвращать одно из значений состояния ошибки, определенных в ntstatus.h. Дополнительные сведения см. в разделе "Примечания".
Комментарии
Каждый драйвер на основе платформы, поддерживающий устройства PnP, должен предоставлять функцию обратного вызова EvtDriverDeviceAdd . Перед вызовом WdfDriverCreate драйвер должен поместить адрес функции обратного вызова в свою структуру WDF_DRIVER_CONFIG.
Платформа вызывает функцию обратного вызова EvtDriverDeviceAdd вашего драйвера после того, как драйвер шины обнаруживает устройство с идентификатором оборудования, соответствующим идентификатору оборудования, который поддерживается вашим драйвером. Укажите идентификаторы оборудования, поддерживаемые драйвером, предоставив INF-файл, который операционная система использует для установки драйверов при первом подключении одного из ваших устройств к компьютеру. Дополнительные сведения о том, как система использует INF-файлы и идентификаторы оборудования, см. в разделе Настройка выбора драйверов.
Функция обратного вызова EvtDriverDeviceAdd драйвера обычно выполняет по крайней мере некоторые из следующих операций инициализации:
-
Создайте объект устройства платформы для представления устройства.
-
Создайте очереди ввода-вывода , чтобы драйвер получал запросы ввода-вывода.
-
Создание интерфейсов устройств , которые приложения используют для взаимодействия с устройством.
-
Создание интерфейсов, определяемых драйвером , которые могут использовать другие драйверы.
- Инициализация поддержки инструментария управления Windows (WMI).
-
Создайте объекты прерываний, если драйвер обрабатывает прерывания устройства.
-
Включите транзакции прямого доступа к памяти (DMA), если драйвер обрабатывает операции DMA.
Если функция обратного вызова EvtDriverDeviceAdd драйвера создает объект устройства, но не возвращает STATUS_SUCCESS, платформа удаляет объект устройства и его дочерние устройства.
Если функция обратного вызова EvtDriverDeviceAdd драйвера функции не возвращает STATUS_SUCCESS, диспетчер ввода-вывода не создает стек устройств для устройства.
Если функция обратного вызова EvtDriverDeviceAdd драйвера фильтра не возвращает STATUS_SUCCESS, платформа преобразует возвращаемое значение в STATUS_SUCCESS, а диспетчер операций ввода-вывода создает стек устройств без драйвера фильтра.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfdriver.h (включая Wdf.h) |
IRQL | PASSIVE_LEVEL |