Partilhar via


Criando um objeto de interrupção (UMDF 1)

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.

Um driver UMDF que lida com as interrupções de hardware de um dispositivo deve criar um objeto de interrupção de estrutura para cada interrupção que cada dispositivo pode suportar.

Normalmente, um driver cria objetos de interrupção de framework em IDriverEntry::OnDeviceAdd. No entanto, pode-se também criar objetos de interrupção no IPnpCallbackHardware2::OnPrepareHardware.

Para criar um objeto de interrupção de estrutura, o driver deve inicializar uma estrutura de WUDF_INTERRUPT_CONFIG e passá-la para o método de IWDFDevice3::CreateInterrupt. Esse método registra as seguintes funções de retorno de chamada de evento fornecidas pelo driver:

OnInterruptEnable
Permite uma interrupção de hardware.

OnInterruptDisable
Desativa uma interrupção de hardware.

OnInterruptIsr
A rotina de serviço de interrupção (ISR) do interruptor.

OnInterruptWorkItem
A rotina do trabalhador para a interrupção.

Opcionalmente, o driver pode chamar IWDFInterrupt::SetPolicy ou IWDFInterrupt::SetExtendedPolicy para especificar parâmetros de interrupção adicionais.

A estrutura chama a função de retorno de chamada IDriverEntry::OnDeviceAdd do driver antes que o gestor Plug and Play (PnP) tenha atribuído recursos do sistema, como vetores de interrupção, ao dispositivo. Depois que o gerenciador PnP atribui recursos, a estrutura armazena recursos de interrupção no objeto de interrupção do dispositivo. (Os drivers que não são compatíveis com Plug and Play não podem usar objetos de interrupção.)

As interrupções sinalizadas por mensagem (MSIs) são suportadas no Windows Vista e em versões posteriores do sistema operacional. Para habilitar o sistema operacional para suportar MSIs para o seu dispositivo, o arquivo INF do driver deve definir alguns valores no registro. Para obter informações sobre como definir esses valores, consulte Ativação de Message-Signaled interrupções no Registro.

Se um dispositivo puder suportar um determinado número de mensagens MSI, o gestor PnP tentará atribuir esse número de mensagens ao dispositivo. Se o gerenciador PnP não puder atribuir todas as mensagens que o dispositivo pode suportar, ele atribuirá apenas uma mensagem ao dispositivo.

O seu driver deve criar um objeto de interrupção de enquadramento para cada vetor de interrupção ou mensagem MSI que o dispositivo pode suportar. Se o gerenciador PnP não conceder ao dispositivo todos os recursos de interrupção que o dispositivo pode suportar, os objetos de interrupção extras não serão usados e suas funções de retorno de chamada não serão chamadas.