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


Функция FltAdjusteviceStackSizeForIoRedirection (fltkernel.h)

Подпрограмма FltAdjusteviceStackSizeForIoRedirection увеличивает размер стека исходного устройства, чтобы позволить минифильтру перенаправлять ввод-вывод из указанного исходного экземпляра в указанный целевой экземпляр, если целевой стек находится глубже исходного стека.

Синтаксис

NTSTATUS FLTAPI FltAdjustDeviceStackSizeForIoRedirection(
  [in]            PFLT_INSTANCE SourceInstance,
  [in]            PFLT_INSTANCE TargetInstance,
  [out, optional] PBOOLEAN      SourceDeviceStackSizeModified
);

Параметры

[in] SourceInstance

Экземпляр фильтра в исходном стеке устройств.

[in] TargetInstance

Экземпляр фильтра в стеке целевого устройства.

[out, optional] SourceDeviceStackSizeModified

Этот необязательный параметр имеет значение TRUE , если подпрограмма FltAdjustDeviceStackSizeForIoRedirection изменила размер исходного стека устройств, в противном случае — FALSE .

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

Возвращаемое значение Описание
STATUS_SUCCESS
Успешно.
STATUS_NOT_SUPPORTED
Перенаправление не поддерживается.
STATUS_INVALID_PARAMETER
После вызова этой процедуры стек исходного устройства будет слишком большим.

Комментарии

Использование FltAdjustDeviceStackSizeForIoRedirection не гарантирует, что размер каждого IRP, обнаруженного минифильтром, будет достаточным для перенаправления в целевой стек. IrP, которые были выделены и выданы до вызова FltAdjustDeviceStackSizeForIoRedirection , по-прежнему были выделены на основе старого размера стека.

Мини-фильтр может настроить размер стека во время настройки экземпляра, если фильтр знает, в какой стек будет перенаправляться ввод-вывод.

Фильтр может выполнить собственную операцию создания в новом стеке с помощью FltCreateFile. Перед завершением операции создания фильтр может настроить размер стека в соответствии с целевым стеком. Эта корректировка гарантирует, что размер стека будет изменен до завершения действия создания. Все irP, выделенные для этого объекта файла, будут иметь достаточно большой стек для поддержки перенаправления.

Во время установки экземпляра или во время обратного вызова после создания для перенаправленного объекта файла используйте FltIsIoRedirectionAllowed , чтобы определить, возможно ли перенаправление без изменения исходного стека. При необходимости используйте FltAdjustDeviceStackSizeForIoRedirection , чтобы настроить исходный стек.

В обратном вызове перед операцией для каждой операции, требующей перенаправления, используйте FltIsIoRedirectionAllowedForOperation , чтобы определить, возможно ли перенаправление без изменения исходного стека. При необходимости используйте FltAdjustDeviceStackSizeForIoRedirection , чтобы настроить исходный стек.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7 и более поздних версиях операционной системы Windows.
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая FltKernel.h)
Библиотека FltMgr.lib
IRQL <=DISPATCH_LEVEL

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

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FltIsIoRedirectionAllowed

FltIsIoRedirectionAllowedForOperation

PFLT_PRE_OPERATION_CALLBACK