FILTER_ATTACH função de retorno de chamada (ndis.h)
O NDIS chama a função FilterAttach de um driver de filtro para alocar e inicializar as estruturas de dados de um módulo de filtro.
Sintaxe
FILTER_ATTACH FilterAttach;
NDIS_STATUS FilterAttach(
[in] NDIS_HANDLE NdisFilterHandle,
[in] NDIS_HANDLE FilterDriverContext,
[in] PNDIS_FILTER_ATTACH_PARAMETERS AttachParameters
)
{...}
Parâmetros
[in] NdisFilterHandle
Um identificador NDIS que identifica um módulo de filtro. O driver de filtro deve salvar esse identificador. O identificador é necessário em chamadas subsequentes para funções NdisFXxx .
[in] FilterDriverContext
O identificador que o driver passou para o Função NdisFRegisterFilterDriver que identifica a área de contexto do driver.
[in] AttachParameters
Um ponteiro para um NDIS_FILTER_ATTACH_PARAMETERS estrutura que define os parâmetros de inicialização para o módulo de filtro.
Retornar valor
FilterAttach retorna um dos seguintes valores de status:
Código de retorno | Descrição |
---|---|
|
FilterAttach alocou e inicializou estruturas de dados com êxito para este módulo de filtro. |
|
Falha em FilterAttach devido a recursos insuficientes. |
|
FilterAttach retornará NDIS_STATUS_FAILURE se nenhum dos valores anteriores se aplicar. O driver de filtro deve chamar a função NdisWriteEventLogEntry junto com parâmetros que especificam o motivo da falha. |
Comentários
FilterAttach é uma função necessária. O NDIS chama a função FilterAttach de um driver de filtro quando o módulo de filtro especificado está no estado Desanexado . O NDIS pode chamar FilterAttach a qualquer momento após a chamada para a função FilterSetOptions retornar.
No início da execução em FilterAttach, o módulo de filtro entra no estado Anexando .
Os drivers de filtro devem evitar a emissão de consultas OID desnecessárias. Em vez disso, use as informações em NDIS_FILTER_ATTACH_PARAMETERS, quando disponível, obter informações sobre drivers subjacentes.
Um driver de filtro executa as seguintes operações quando o NDIS chama FilterAttach.
- Cria uma área de contexto para o módulo de filtro e aloca pools de buffers e outros recursos.
- Chama a função NdisFSetAttributes junto com o NdisFilterHandle que o NDIS passou para FilterAttach. O parâmetro FilterModuleContext de NdisFSetAttributes especifica a área de contexto do driver de filtro para este módulo de filtro. O NDIS passa essa área de contexto para as funções FilterXxx do driver de filtro.
- Opcionalmente, lê parâmetros de configuração do registro.
- Se as operações anteriores forem concluídas com êxito, o módulo de filtro entrará no estado Pausado .
- Se as operações anteriores falharem, o driver de filtro deverá liberar todos os recursos alocados na função FilterAttach e retornar o módulo de filtro para o estado Desanexado .
- Retorna NDIS_STATUS_SUCCESS ou um código de falha apropriado.
O NDIS chama a função FilterDetach de um driver de filtro para liberar todos os recursos associados a um módulo de filtro e retornar o módulo de filtro para o estado Desanexado .
O NDIS chama FilterAttach em IRQL = PASSIVE_LEVEL.
Exemplos
Para definir uma função FilterAttach , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para escrever drivers para o sistema operacional Windows.Por exemplo, para definir uma função FilterAttach chamada "MyAttach", use o tipo FILTER_ATTACH conforme mostrado neste exemplo de código:
FILTER_ATTACH MyAttach;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
NDIS_STATUS
MyAttach(
NDIS_HANDLE NdisFilterHandle,
NDIS_HANDLE FilterDriverContext,
PNDIS_FILTER_ATTACH_PARAMETERS AttachParameters
)
{...}
O tipo de função FILTER_ATTACH é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função FILTER_ATTACH no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.
Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no NDIS 6.0 e posterior. |
Plataforma de Destino | Windows |
Cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | PASSIVE_LEVEL |