Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Advertência
UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser escritos 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 UMDF 2.
Os exemplos de UMDF 1 arquivados podem ser encontrados na Windows 11, versão 22H2 - Atualização de Amostras de Driver de maio de 2022.
Para obter mais informações, consulte Introdução ao UMDF.
A manutenção de uma interrupção consiste em duas etapas:
- Salvar informações voláteis (como registrar conteúdo) rapidamente, em uma rotina de interrupção de serviço.
- Processamento das informações voláteis guardadas numa rotina de trabalho.
Quando um dispositivo gera uma interrupção de hardware, a estrutura chama a rotina de serviço de interrupção (ISR) do driver, que os drivers baseados na estrutura implementam como uma função de retorno de chamada OnInterruptIsr.
A função de retorno de chamada OnInterruptIsr, que é executada em PASSIVE_LEVEL, deve salvar rapidamente informações de interrupção, como conteúdo dos registos, enfileirar um item de trabalho para processar os dados ainda mais e retornar do ISR para permitir o atendimento de outras interrupções se a linha de interrupção for compartilhada. Como o ISR do driver UMDF é executado em PASSIVE_LEVEL, o tratamento de interrupções baseadas em linha PCI não é recomendado. Essas interrupções geralmente são compartilhadas entre vários dispositivos, alguns dos quais podem não aceitar atrasos ISR. No entanto, você pode manipular interrupções PCI MSI em um driver UMDF. Essas interrupções têm semântica de borda e não são compartilhadas.
Normalmente, a função callback OnInterruptIsr agenda um item de trabalho para processar as informações salvas mais tarde. Drivers baseados em estrutura implementam rotinas do item de trabalho como funções de retorno de chamada OnInterruptWorkItem.
A maioria dos drivers usa uma única função de retorno de chamada OnInterruptWorkItem para cada tipo de interrupção. Para agendar a execução de uma função de callback OnInterruptWorkItem, um driver deve chamar IWDFInterrupt::QueueWorkItemForIsr de dentro da função de callback OnInterruptIsr.
Se o driver criar vários objetos de fila de estrutura para cada dispositivo, você pode considerar o uso de um objeto de item de trabalho separado e da função de retorno de chamada OnWorkItem para cada fila. Para programar a execução de uma função callback OnWorkItem, o driver deve primeiro criar um ou mais objetos de tarefa chamando IWdfDevice3::CreateWorkItem, normalmente a partir da função callback IDriverEntry::OnDeviceAdd do driver. Em seguida, a função de retorno de chamada OnInterruptIsr do driver pode chamar IWDFWorkItem::Enqueue.
Os drivers geralmente concluem solicitações de E/S nas suas funções de retorno de chamada OnInterruptWorkItem ou OnWorkItem.
Para obter um exemplo de um driver UMDF que manipula interrupções, consulte o driver de exemplo SpbAccelerometer , disponível a partir do WDK do Windows 8.