Partilhar via


Função WdfInterruptSynchronize (wdfinterrupt.h)

[Aplica-se a KMDF e UMDF]

O método WdfInterruptSynchronize executa uma função de retorno de chamada especificada no DIRQL do dispositivo, mantendo o bloqueio de rotação de um objeto de interrupção.

Para objetos de interrupção de nível passivo, esse método executa uma função de retorno de chamada especificada no nível passivo, mantendo o bloqueio de interrupção de nível passivo de um objeto de interrupção.

Sintaxe

BOOLEAN WdfInterruptSynchronize(
  [in] WDFINTERRUPT                  Interrupt,
  [in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
  [in] WDFCONTEXT                    Context
);

Parâmetros

[in] Interrupt

Um identificador para um objeto de interrupção de estrutura.

[in] Callback

Um ponteiro para uma função de retorno de chamada EvtInterruptSynchronize.

[in] Context

Um ponteiro não tipado para informações fornecidas pelo driver que a estrutura passa para a função de retorno de chamada EvtInterruptSynchronize.

Valor de retorno

WdfInterruptSynchronize retorna o valor de status booliano que a função de retorno de chamada EvtInterruptSynchronize retorna.

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Observações

Se você quiser que o driver execute um código que deve ser executado sem ser preempido e com a manutenção de interrupções de dispositivo efetivamente desabilitada, coloque esse código em um EvtInterruptSynchronize função de retorno de chamada. Para agendar a execução da função de retorno de chamada, o driver deve chamar WdfInterruptSynchronize.

O método WdfInterruptSynchronize retorna após a execução da função de retorno de chamada EvtInterruptSynchronize.

Em vez de chamar WdfInterruptSynchronize, o driver pode chamar WdfInterruptAcquireLock e WdfInterruptReleaseLock.

Para obter mais informações sobre o método WdfInterruptSynchronize, consulte Synchronizing Interrupt Code.

Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Tratando interrupções de hardware.

Para interrupções de nível passivo, o driver deve chamar WdfInterruptSynchronize em IRQL = PASSIVE_LEVEL.

Não chame WdfInterruptSynchronize de um contexto de thread arbitrário, como um manipulador de solicitação .

Exemplos

O exemplo de código a seguir mostra como chamar WdfInterruptSynchronize para agendar a execução de um EvtInterruptSynchronize função de retorno de chamada.

BOOLEAN synchronizeReturnValue;

synchronizeReturnValue = WdfInterruptSynchronize(
                                         WdfInterrupt,
                                         MyEvtInterruptSynchronize,
                                         CallbackContext
                                         );

Requisitos

Requisito Valor
da Plataforma de Destino Universal
versão mínima do KMDF 1.0
versão mínima do UMDF 2.0
cabeçalho wdfinterrupt.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
regras de conformidade de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte também

EvtInterruptSynchronize

WdfInterruptAcquireLock

WdfInterruptReleaseLock