FILTER_PAUSE função de retorno de chamada (ndis.h)
O NDIS chama a função FilterPause de um driver de filtro para iniciar uma operação de pausa para o módulo de filtro especificado.
Sintaxe
FILTER_PAUSE FilterPause;
NDIS_STATUS FilterPause(
[in] NDIS_HANDLE FilterModuleContext,
[in] PNDIS_FILTER_PAUSE_PARAMETERS PauseParameters
)
{...}
Parâmetros
[in] FilterModuleContext
Um identificador para a área de contexto do módulo de filtro que o driver de filtro deve pausar. O driver de filtro criou e inicializou essa área de contexto na função FilterAttach.
[in] PauseParameters
Um ponteiro para um NDIS_FILTER_PAUSE_PARAMETERS estrutura que define os parâmetros de pausa para o módulo de filtro.
Valor de retorno
Os drivers NDIS não podem falhar em uma solicitação de pausa. O driver de filtro deve chamar a função NdisWriteEventLogEntry junto com parâmetros que especificam o motivo de quaisquer erros que ocorram.
Código de retorno | Descrição |
---|---|
|
FilterPause pausado com êxito no módulo de filtro especificado. |
|
O driver de filtro concluirá a solicitação de forma assíncrona com uma chamada para a função NdisFPauseComplete. |
Observações
FilterPause é uma função necessária. O NDIS pode chamar FilterPause quando o módulo de filtro estiver no estado Executando. O módulo de filtro entra no estado pausando no início da execução na função FilterPause.
Um driver de filtro executa as seguintes operações quando o NDIS chama FilterPause:
- Deve chamar o função NdisFSendNetBufferListsComplete para quaisquer buffers de envio enfileirados criados por um driver em excesso.
- Deve chamar o função NdisFReturnNetBufferLists para quaisquer buffers de recebimento enfileirados criados por um driver subjacente.
- Deve aguardar o NDIS retornar todas as solicitações de envio pendentes que o driver originou para o função FilterSendNetBufferListsComplete.
- Deve aguardar que o NDIS retorne todas as indicações de recebimento pendentes de que o driver se originou para o função FilterReturnNetBufferLists.
No pausar ou estados de pausados, um driver de filtro deve continuar a lidar com solicitações de OID ou indicações de status. O driver deve rejeitar chamadas para sua função FilterSendNetBufferLists. O driver pode passar chamadas para o seu função FilterReceiveNetBufferLists. No entanto, o driver não pode passar nenhum buffer criado. O driver não deve originar nenhuma indicação de recebimento ou enviar solicitações.
No estado de pausado, o módulo de filtro não deve gerar solicitações de envio nem receber indicações.
O NDIS chama a função FilterRestart para iniciar uma solicitação de reinicialização para um módulo de filtro que está no estado pausado do.
Chamadas NDIS FilterPause no IRQL = PASSIVE_LEVEL.
exemplos de
Para definir uma função FilterPause, 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 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 gravar drivers para o sistema operacional Windows.Por exemplo, para definir uma função FilterPause chamada "MyPause", use o tipo FILTER_PAUSE conforme mostrado neste exemplo de código:
FILTER_PAUSE MyPause;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
NDIS_STATUS
MyPause(
NDIS_HANDLE FilterModuleContext,
PNDIS_FILTER_PAUSE_PARAMETERS FilterPauseParameters
)
{...}
O tipo de função FILTER_PAUSE é 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_PAUSE 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 |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da Plataforma de Destino | Windows |
cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | PASSIVE_LEVEL |