Compartilhar via


Criando um objeto Interrupt (UMDF 1)

Aviso

O UMDF 2 é a versão mais recente do UMDF e substitui o 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.

Os exemplos de UMDF 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de exemplos de driver de maio de 2022.

Para obter mais informações, consulte Introdução com UMDF.

Um driver UMDF que manipula as interrupções de hardware de um dispositivo deve criar um objeto de interrupção de estrutura para cada interrupção que cada dispositivo possa dar suporte.

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

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

OnInterruptEnable
Habilita uma interrupção de hardware.

OnInterruptDisable
Desabilita uma interrupção de hardware.

OnInterruptIsr
A ISR (rotina de serviço de interrupção) para a interrupção.

OnInterruptWorkItem
A rotina de trabalho 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 gerenciador de 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. (Drivers que não dão suporte a Plug and Play não podem usar objetos de interrupção.)

Há suporte para MSIs (interrupções sinalizadas por mensagem) no Windows Vista e versões posteriores do sistema operacional. Para permitir que o sistema operacional dê suporte a MSIs para seu dispositivo, o arquivo INF do driver deve definir alguns valores no Registro. Para obter informações sobre como definir esses valores, consulte Habilitando interrupções de Message-Signaled no Registro.

Se um dispositivo puder dar suporte a um determinado número de mensagens MSI, o gerenciador de 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 dar suporte, ele atribuirá apenas uma mensagem ao dispositivo.

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