Partilhar via


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

Um driver de minifiltro pode registrar uma rotina do tipo PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK como rotina de 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 da consulta de instância fornecida foi chamada. Nenhum sinalizador está definido no momento.

Valor de retorno

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

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

Observações

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

Para registrar a rotina de InstanceQueryTeardownCallback, o driver de minifiltro armazena o endereço de uma rotina de PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK de tipo no InstanceQueryTeardownCallback membro da estrutura FLT_REGISTRATION que o driver de minifiltro passa como o parâmetro de Registro 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 erro ou aviso código de NTSTATUS, 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 de InstanceQueryTeardownCallback, suas instâncias não poderão ser desanexadas manualmente chamando FilterDetach ou FltDetachVolume.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho fltkernel.h (inclua Fltkernel.h)
IRQL PASSIVE_LEVEL

Consulte também

FLT_REGISTRATION

FLT_RELATED_OBJECTS

FilterDetach

FltDetachVolume

FltRegisterFilter

PFLT_INSTANCE_SETUP_CALLBACK

PFLT_INSTANCE_TEARDOWN_CALLBACK