Método IWDFInterrupt::AcquireInterruptLock (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]
O método AcquireInterruptLock inicia uma sequência de código que é executada enquanto mantém o bloqueio de um objeto de interrupção.
Sintaxe
void AcquireInterruptLock();
Retornar valor
Nenhum
Comentários
Quando um driver chama AcquireInterruptLock, o sistema adquire o bloqueio de interrupção da estrutura.
Quando o driver chama ReleaseInterruptLock, o sistema libera o bloqueio de interrupção.
Você pode usar AcquireInterruptLock e ReleaseInterruptLock se o driver precisar executar algumas linhas de código sem ser preemptado e com a manutenção de interrupção desabilitada.
Seu driver não pode chamar AcquireInterruptLock antes que a estrutura tenha chamado a função de retorno de chamada OnInterruptEnable do driver ou depois que a estrutura tiver chamado a função de retorno de chamada OnInterruptDisable do driver.
Depois que o driver chama AcquireInterruptLock, ele não deve chamar o método novamente para o mesmo objeto de interrupção antes de chamar ReleaseInterruptLock.
Ao executar em um thread arbitrário, como um método de retorno de chamada de fila de E/S, os drivers devem chamar IWDFInterrupt::TryToAcquireInterruptLock em vez de IWDFInterrupt::AcquireInterruptLock. Por exemplo, o driver chama IWDFInterrupt::TryToAcquireInterruptLock de IQueueCallbackRead::OnRead.
Isso evita a possibilidade de deadlock, conforme descrito no cenário a seguir.
- Para determinar se seu dispositivo foi interrompido, um UMDF envia E/S para seu barramento de dentro de seu ISR, com o bloqueio de interrupção mantido.
- O motorista do ônibus conclui uma segunda solicitação no mesmo thread no qual recebeu a solicitação acima.
- A rotina de conclusão da segunda solicitação envia uma solicitação para o driver UMDF.
- A rotina de expedição de E/S do driver UMDF chama IWDFInterrupt::AcquireInterruptLock, que, em seguida, bloqueia a tentativa de adquirir o bloqueio de interrupção.
Para obter mais informações sobre o bloqueio manual de interrupção, consulte Sincronizando o código de interrupção.
Para obter mais informações sobre como lidar com interrupções em drivers UMDF, consulte Acessando interrupções de hardware e tratamento.
Requisitos
Requisito | Valor |
---|---|
Fim do suporte | Indisponível no UMDF 2.0 e posterior. |
Plataforma de Destino | Área de Trabalho |
Versão mínima do UMDF | 1.11 |
Cabeçalho | wudfddi.h |
DLL | WUDFx.dll |