Compartilhar via


função de retorno de chamada PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK (fltkernel.h)

Um driver de minifiltro pode registrar uma rotina do tipo PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK como a rotina InstanceQueryTeardownCallback do driver de minifiltro.

Sintaxe

PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK PfltInstanceQueryTeardownCallback;

NTSTATUS PfltInstanceQueryTeardownCallback(
  [in] PCFLT_RELATED_OBJECTS FltObjects,
  [in] FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags
)
{...}

Parâmetros

[in] FltObjects

Ponteiro para uma estrutura FLT_RELATED_OBJECTS que contém ponteiros opacos para os objetos relacionados à operação atual.

[in] Flags

Máscara de bits de sinalizadores que descrevem por que a rotina de retorno de chamada de desordeira de consulta de instância fornecida foi chamada. Nenhum sinalizador está definido no momento.

Retornar valor

Essa rotina de retorno de chamada retorna STATUS_SUCCESS ou um valor NTSTATUS , como um dos seguintes:

Código de retorno Descrição
STATUS_FLT_DO_NOT_DETACH
Retornar esse valor status impede que a instância do driver de minifiltro seja desanexada. Este é um código de erro.

Comentários

Quando um driver de minifiltro se registra chamando FltRegisterFilter de sua rotina DriverEntry , ele pode registrar uma rotina do tipo PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK como a rotina InstanceQueryTeardownCallback do driver de minifiltro.

Para registrar a rotina InstanceQueryTeardownCallback , o driver de minifiltro armazena o endereço de uma rotina do tipo PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK no membro InstanceQueryTeardownCallback da estrutura FLT_REGISTRATION que o driver de minifiltro passa como o parâmetro Registration de FltRegisterFilter.

O gerenciador de filtros chama essa rotina para permitir que o driver de minifiltro responda a uma solicitação de desanexação manual. Essa solicitação é recebida quando um aplicativo de modo de usuário chama FilterDetach ou um componente do modo kernel chama FltDetachVolume.

Essa rotina não é chamada para solicitações de desanexação automáticas ou obrigatórias, por exemplo, quando o driver de minifiltro é descarregado ou um volume é desmontado.

Se essa rotina retornar um código NTSTATUS de erro ou aviso, como STATUS_FLT_DO_NOT_DETACH, a instância do driver de minifiltro não será desanexada do volume. Caso contrário, a instância será desanexada.

Se um driver de minifiltro não definir uma rotina InstanceQueryTeardownCallback , suas instâncias não poderão ser desanexadas manualmente chamando FilterDetach ou FltDetachVolume.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho fltkernel.h (inclua Fltkernel.h)
IRQL PASSIVE_LEVEL

Confira também

FLT_REGISTRATION

FLT_RELATED_OBJECTS

FilterDetach

FltDetachVolume

FltRegisterFilter

PFLT_INSTANCE_SETUP_CALLBACK

PFLT_INSTANCE_TEARDOWN_CALLBACK