MINIPORT_SYNCHRONIZE_INTERRUPT função de retorno de chamada (ndis.h)
Um driver de miniporto deve fornecer um manipulador de MiniportSynchronizeInterrupt se qualquer função de driver executada em menos de DIRQL compartilhar recursos com a função MiniportInterrupt.
Para interrupções sinalizadas por mensagem, o driver de miniporto fornece um manipulador MiniportSynchronizeMessageInterrupt se qualquer função de driver executada em menos de DIRQL compartilhar recursos para uma mensagem sinalizada interrupção com a função MiniportMessageInterrupt.
Sintaxe
MINIPORT_SYNCHRONIZE_INTERRUPT MiniportSynchronizeInterrupt;
BOOLEAN MiniportSynchronizeInterrupt(
[in] NDIS_HANDLE SynchronizeContext
)
{...}
Parâmetros
[in] SynchronizeContext
Um identificador para uma área de contexto fornecida quando o driver de miniporto MiniportXxx ou a função interna chamada de função NdisMSynchronizeWithInterruptEx.
Valor de retorno
MiniportSynchronizeInterrupt retorna um valor booliano com um significado determinado pelo driver. O NDIS retorna o mesmo valor quando o NDIS retorna de NdisMSynchronizeWithInterruptEx.
Observações
Para sincronizar o acesso a recursos compartilhados com MiniportInterrupt, as funções de driver de prioridade mais baixa devem chamar o função NdisMSynchronizeWithInterruptEx. A função MiniportSynchronizeInterrupt do driver acessa os recursos compartilhados no DIRQL. Chamar NdisMSynchronizeWithInterruptEx impede condições de corrida e deadlocks em um piloto de miniporto.
Quaisquer funções de driver de prioridade mais baixa que compartilhem recursos entre si (mas não com qualquer função executada no DIRQL) devem usar um bloqueio de rotação para proteger esses recursos compartilhados.
MiniportSynchronizeInterrupt é executado no DIRQL atribuído quando a função MiniportInitializeEx do driver chama a função função NdisMRegisterInterruptEx. Como qualquer função de driver executada no DIRQL, MiniportSynchronizeInterrupt deve retornar o controle de volta ao chamador o mais rápido possível e pode chamar somente as funções NdisXxx que são seguras para chamar em qualquer IRQL.
exemplos de
Para definir uma função MiniportSynchronizeInterrupt, 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 MiniportSynchronizeInterrupt denominada "MySynchronizeInterrupt", use o tipo MINIPORT_SYNCHRONIZE_INTERRUPT conforme mostrado neste exemplo de código:
MINIPORT_SYNCHRONIZE_INTERRUPT MySynchronizeInterrupt;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
BOOLEAN
MySynchronizeInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Para definir uma função miniportSynchronizeMessageInterrupt para interrupções sinalizadas por mensagem, use o tipo MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT conforme mostrado neste exemplo de código:
MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT MySynchronizeMessageInterrupt;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
BOOLEAN
MySynchronizeMessageInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Os tipos de função MINIPORT_SYNCHRONIZE_INTERRUPT e MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT são definidos 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 às definições de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função 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 | Consulte a seção Comentários |