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 |
---|---|
|
Êxito. |
|
Não há suporte para o redirecionamento. |
|
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 |