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 enquanto mantém 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 .
Retornar valor
WdfInterruptSynchronize retorna o valor booliano status que a função de retorno de chamada EvtInterruptSynchronize retorna.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
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, você deve colocar esse código em uma função de retorno de chamada EvtInterruptSynchronize . 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, seu driver pode chamar WdfInterruptAcquireLock e WdfInterruptReleaseLock.
Para obter mais informações sobre o método WdfInterruptSynchronize , consulte Sincronizando código de interrupção.
Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Tratamento de 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 uma função de retorno de chamada EvtInterruptSynchronize .
BOOLEAN synchronizeReturnValue;
synchronizeReturnValue = WdfInterruptSynchronize(
WdfInterrupt,
MyEvtInterruptSynchronize,
CallbackContext
);
Requisitos
Requisito | Valor |
---|---|
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) |