Função FltSetStreamHandleContext (fltkernel.h)

A rotina FltSetStreamHandleContext define um contexto para um identificador de fluxo.

Sintaxe

NTSTATUS FLTAPI FltSetStreamHandleContext(
  [in]            PFLT_INSTANCE             Instance,
  [in]            PFILE_OBJECT              FileObject,
  [in]            FLT_SET_CONTEXT_OPERATION Operation,
  [in]            PFLT_CONTEXT              NewContext,
  [out, optional] PFLT_CONTEXT              *OldContext
);

Parâmetros

[in] Instance

Um ponteiro de instância opaco para a instância do driver de minifiltro cujo contexto deve ser inserido, removido ou substituído na lista de contextos anexados ao identificador de fluxo.

[in] FileObject

Um ponteiro para um objeto de arquivo para o fluxo de arquivos. Esse parâmetro é necessário e não pode ser NULL.

[in] Operation

Um sinalizador que especifica detalhes da operação a ser executada. Esse parâmetro deve ser um dos seguintes:

Valor Significado
FLT_SET_CONTEXT_REPLACE_IF_EXISTS Se um contexto já estiver definido para esta Instância, FltSetStreamHandleContext o substituirá pelo contexto especificado em NewContext. Caso contrário, ele inserirá NewContext na lista de contextos do identificador de fluxo.
FLT_SET_CONTEXT_KEEP_IF_EXISTS Se um contexto já estiver definido para esta Instância, FltSetStreamHandleContext retornará STATUS_FLT_CONTEXT_ALREADY_DEFINED e não substituirá o contexto existente ou incrementará a contagem de referência. Se um contexto ainda não tiver sido definido, a rotina inserirá NewContext na lista de contextos para o identificador de fluxo e incrementará a contagem de referência.

[in] NewContext

Um ponteiro para o novo contexto a ser definido para o identificador de fluxo. Esse parâmetro é necessário e não pode ser NULL.

[out, optional] OldContext

Um ponteiro para uma variável alocada pelo chamador que recebe o endereço do contexto de identificador de fluxo existente para o parâmetro Instance , se já estiver definido. Esse parâmetro é opcional e pode ser NULL. Para obter mais informações sobre esse parâmetro, consulte a seção Comentários a seguir.

Retornar valor

A rotina FltSetStreamHandleContext retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes códigos de erro:

Código de retorno Descrição
STATUS_FLT_CONTEXT_ALREADY_DEFINED Se FLT_SET_CONTEXT_KEEP_IF_EXISTS foi especificado para Operação, esse código de erro indica que um contexto já está anexado ao identificador de fluxo.
STATUS_FLT_CONTEXT_ALREADY_LINKED O contexto para o qual NewContext aponta já está vinculado a um objeto . Em outras palavras, esse código de erro indica que NewContext já está em uso devido a uma chamada anterior bem-sucedida de uma rotina de ContextoXxxfltSet .
STATUS_FLT_DELETING_OBJECT A Instância especificada está sendo interrompida. Este é um código de erro.
STATUS_INVALID_PARAMETER Um parâmetro inválido foi passado. Por exemplo, o parâmetro NewContext não aponta para um contexto válido do identificador de fluxo ou um valor inválido foi especificado para Operação.
STATUS_NOT_SUPPORTED Ocorreu uma situação sem suporte, como o sistema de arquivos não dá suporte a contextos por fluxo para esse fluxo de arquivos ou o chamador forneceu um FileObject NULL.

Comentários

Para obter mais informações sobre contextos, consulte Sobre contextos de minifiltro.

A rotina FltSetStreamHandleContext adiciona, remove ou substitui um contexto para uma instância de driver de minifiltro em um identificador de fluxo. Um driver de minifiltro pode anexar um contexto por instância do driver de minifiltro ao identificador de fluxo.

FltSetStreamHandleContext não pode ser chamado em um FileObject não aberto. Portanto, FltSetStreamHandleContext não pode ser chamado de um retorno de chamada de pré-criação para um fluxo porque o fluxo não foi aberto nesse momento. No entanto, um minifiltro pode alocar e configurar o contexto do identificador de fluxo no retorno de chamada de pré-criação, passá-lo para o retorno de chamada pós-criação usando o parâmetro de contexto de conclusão e definir o contexto do identificador de fluxo no fluxo no retorno de chamada pós-criação.

Contagem de referências

Se FltSetStreamHandleContext for bem-sucedido:

  • A contagem de referência em NewContext é incrementada. Quando NewContext não for mais necessário, o minifiltro deverá chamar FltReleaseContext para diminuir sua contagem de referência.

Caso contrário, se FltSetStreamHandleContext falhar:

  • A contagem de referência em NewContext permanece inalterada.
  • Se OldContext não for NULL e não apontar para NULL_CONTEXT , OldContext será um ponteiro referenciado para o contexto atualmente associado ao identificador de fluxo. O filtro que chama FltSetStreamHandleContext deve chamar FltReleaseContext para OldContext também quando o ponteiro de contexto não for mais necessário.

Independentemente do sucesso:

  • O filtro que chama FltSetStreamHandleContext deve chamar FltReleaseContext para diminuir a contagem de referência no objeto NewContext que foi incrementado por FltAllocateContext.

Para obter mais informações, consulte Referenciando contextos.

Outras operações de contexto

Para obter mais informações, consulte Configurando contextos e Liberando contextos:

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível e com suporte no Pacote Cumulativo de Atualizações do Microsoft Windows 2000 1 para SP4, Windows XP SP2, Windows Server 2003 SP1 e sistemas operacionais posteriores.
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca Fltmgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Confira também

FltAllocateContext

FltDeleteContext

FltDeleteStreamHandleContext

FltGetStreamHandleContext

FltReleaseContext