Função FltAdjustDeviceStackSizeForIoRedirection (fltkernel.h)

A rotina FltAdjustDeviceStackSizeForIoRedirection aumenta o tamanho da pilha do dispositivo de origem para permitir que um minifiltro redirecione E/S de uma instância de origem especificada para uma instância de destino especificada quando a pilha de destino for mais profunda que a pilha de origem.

Sintaxe

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

Parâmetros

[in] SourceInstance

A instância de filtro na pilha do dispositivo de origem.

[in] TargetInstance

A instância de filtro na pilha do dispositivo de destino.

[out, optional] SourceDeviceStackSizeModified

Esse parâmetro opcional terá um valor TRUE se a rotina FltAdjustDeviceStackSizeForIoRedirection tiver modificado o tamanho da pilha do dispositivo de origem, caso contrário, FALSE .

Retornar valor

Valor retornado Descrição
STATUS_SUCCESS
Êxito.
STATUS_NOT_SUPPORTED
Não há suporte para o redirecionamento.
STATUS_INVALID_PARAMETER
A pilha de dispositivos de origem seria muito grande depois de chamar essa rotina.

Comentários

O uso de FltAdjustDeviceStackSizeForIoRedirection não garante que cada IRP encontrado pelo minifiltro será suficiente para ser redirecionado para a pilha de destino. IrPs que foram alocados e emitidos antes da chamada para FltAdjustDeviceStackSizeForIoRedirection ainda teriam sido alocados com base no tamanho da pilha antigo.

Um minifiltro poderá ajustar o tamanho da pilha durante a instalação da instância se o filtro souber para qual pilha a E/S será redirecionada.

O filtro pode emitir sua própria operação de criação na nova pilha usando FltCreateFile. Antes de concluir a operação de criação, o filtro pode ajustar o tamanho da pilha para considerar a pilha de destino. Fazer esse ajuste garante que o tamanho da pilha seja ajustado antes que a ação de criação seja concluída. Todos os IRPs alocados para esse objeto de arquivo terão uma pilha grande o suficiente para dar suporte ao redirecionamento.

Durante a instalação da instância ou durante o retorno de chamada pós-criação para um objeto de arquivo redirecionado, use FltIsIoRedirectionAllowed para determinar se o redirecionamento é possível sem modificar a pilha de origem. Se necessário, use FltAdjustDeviceStackSizeForIoRedirection para ajustar a pilha de origem.

No retorno de chamada de pré-operação para cada operação que precisa de redirecionamento, use FltIsIoRedirectionAllowedForOperation para determinar se o redirecionamento é possível sem modificar a pilha de origem. Se necessário, use FltAdjustDeviceStackSizeForIoRedirection para ajustar a pilha de origem.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows 7 e versões posteriores do sistema operacional Windows.
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua FltKernel.h)
Biblioteca FltMgr.lib
IRQL <=DISPATCH_LEVEL

Confira também

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FltIsIoRedirectionAllowed

FltIsIoRedirectionAllowedForOperation

PFLT_PRE_OPERATION_CALLBACK