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


Функция WdfDeviceConfigureWdmIrpDispatchCallback (wdfdevice.h)

[Относится к KMDF и UMDF]

Метод WdfDeviceConfigureWdmIrpDispatchCallback регистрирует функцию обратного вызова EvtDeviceWdmIrpDispatch драйвера.

Синтаксис

NTSTATUS WdfDeviceConfigureWdmIrpDispatchCallback(
  [in]           WDFDEVICE                      Device,
  [in, optional] WDFDRIVER                      Driver,
  [in]           UCHAR                          MajorFunction,
                 PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
  [in, optional] WDFCONTEXT                     DriverContext
);

Параметры

[in] Device

Дескриптор объекта устройства платформы.

[in, optional] Driver

Дескриптор объекта драйвера платформы драйвера, полученного драйвером при предыдущем вызове WdfDriverCreate или WdfGetDriver. Этот параметр является необязательным.

[in] MajorFunction

Один из следующих кодов основных функций IRP: IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL, IRP_MJ_READ, IRP_MJ_WRITE.

EvtDeviceWdmIrpDispatch

Указатель на функцию обратного вызова EvtDeviceWdmIrpDispatch драйвера.

[in, optional] DriverContext

Нетипизированный указатель на определяемые драйвером сведения о контексте, которые платформа передает функции обратного вызова EvtDeviceWdmIrpDispatch драйвера. Этот параметр является необязательным и может иметь значение NULL.

Возвращаемое значение

Если метод WdfDeviceConfigureWdmIrpDispatchCallback не обнаруживает ошибок, он возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:

Код возврата Описание
STATUS_INVALID_PARAMETER
Указано недопустимое значение MajorFunction .
STATUS_INSUFFICIENT_RESOURCES
Недостаточно памяти.

Комментарии

Драйвер вызывает метод WdfDeviceConfigureWdmIrpDispatchCallback для регистрации функции обратного вызова EvtDeviceWdmIrpDispatch . Затем платформа вызывает EvtDeviceWdmIrpDispatch всякий раз, когда получает пакет запроса ввода-вывода (IRP), содержащий код основной функции IRP, соответствующий параметру MajorFunction этого метода.

Драйвер обычно вызывает WdfDeviceConfigureWdmIrpDispatchCallback из функции обратного вызова EvtDriverDeviceAdd .

Необходимо вызывать WdfDeviceConfigureWdmIrpDispatchCallback один раз для каждой функции MJ, для которой драйвер хочет зарегистрировать функцию обратного вызова. Иными словами, для перехвата нескольких функций MJ требуется несколько вызовов.

Драйвер может вызвать метод WdfDeviceConfigureWdmIrpDispatchCallback по следующим причинам:

  • Например, чтобы проверить IRP и назначить его определенной очереди на основе критериев, относящихся к предметной области, перенаправьте все ввода-вывода, связанные с объектом файла, в определенную очередь.
  • Чтобы выбрать отдельный запрос, необходимо вызвать функцию обратного вызова EvtIoInCallerContext .

Дополнительные сведения об указании очередей для поставщиков интеграции по мере их поступления см. в разделе Отправка irPs в очереди ввода-вывода.

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1.11
Минимальная версия UMDF 2.17
Верхняя часть wdfdevice.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf)

См. также раздел

EvtDeviceWdmIrpDispatch

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue