Функция KsForwardAndCatchIrp (ks.h)
Функция KsForwardAndCatchIrp перенаправит IRP указанному драйверу после инициализации следующего расположения стека и восстанавливает управление IRP при завершении от этого драйвера. Функция используется с устройствами, которые могут быть сложены и не используют объекты файлов для обмена данными.
Если используется объект файла, вызывающий объект должен инициализировать текущее расположение стека с этим объектом перед вызовом функции KsForwardAndCatchIrp. Функция проверяет, есть ли новое расположение стека для копирования перед попыткой сделать это. Если нет нового расположения стека, функция возвращает STATUS_INVALID_DEVICE_REQUEST. Независимо от того, присутствует ли новое расположение стека, IRP не завершен.
Синтаксис
KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp,
[in] PFILE_OBJECT FileObject,
[in] KSSTACK_USE StackUse
);
Параметры
[in] DeviceObject
Указывает устройство для пересылки IRP в.
[in] Irp
Указывает IRP, который пересылается указанному драйверу.
[in] FileObject
Указывает значение объекта файла для копирования в следующее расположение стека. Это может быть null, чтобы не задать объект файла, но значение всегда копируется в следующее расположение стека. Если текущий объект файла должен быть сохранен, его необходимо передать в этом параметре.
[in] StackUse
Указывает значение, перечисленное KSSTACK_USE. Если значение KsStackCopyToNewLocation, параметры копируются в следующее расположение стека. Если значение KsStackReuseCurrentLocation, текущее расположение стека повторно используется при переадресации IRP, а расположение стека возвращается в текущее расположение. Если значение равно KsStackUseNewLocation, новое расположение стека используется как есть.
Возвращаемое значение
Функция KsForwardAndCatchIrp возвращает результат IoCallDriverили возвращает недопустимое состояние, если глубина стека недоступна.
Замечания
Перечисление типа KSSTACK_USE указывает, как стек IRP используется при переадресации IRP на следующий драйвер.
Перечисление | Описание |
---|---|
KsStackCopyToNewLocation | Указывает, что параметры должны быть скопированы в следующее расположение стека. |
KsStackReuseCurrentLocation | Указывает, что текущее расположение стека необходимо повторно использовать. |
KsStackUseNewLocation | Указывает, что следующее расположение стека должно использоваться без изменения. |
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ks.h (include Ks.h) |
библиотеки | Ks.lib |