Функция 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. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Указано недопустимое значение MajorFunction . |
|
Недостаточно памяти. |
Комментарии
Драйвер вызывает метод 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) |