Compartilhar via


Método IWDFDevice3::CreateInterrupt (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. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

O método CreateInterrupt cria um objeto de interrupção de estrutura.

Sintaxe

HRESULT CreateInterrupt(
  [in]  PWUDF_INTERRUPT_CONFIG Configuration,
  [out] IWDFInterrupt          **ppInterrupt
);

Parâmetros

[in] Configuration

Um ponteiro para uma estrutura WUDF_INTERRUPT_CONFIG que foi inicializada por uma chamada para a macro WUDF_INTERRUPT_CONFIG_INIT .

[out] ppInterrupt

Um ponteiro para um buffer que recebe um ponteiro para a interface IWDFInterrupt para o novo objeto de interrupção.

Retornar valor

O método retornará S_OK se a operação for bem-sucedida. Caso contrário, esse método retornará um dos códigos de erro definidos em Winerror.h.

Comentários

Seu driver deve chamar CreateInterrupt uma vez para cada vetor de interrupção exigido pelo dispositivo. Se o dispositivo der suporte a MSI (interrupções sinalizadas por mensagem), o driver deverá criar um objeto de interrupção para cada mensagem à qual o dispositivo possa dar suporte.

Os drivers normalmente chamam o método CreateInterrupt de uma função de retorno de chamada OnDeviceAdd , mas também podem chamar esse método de IPnpCallbackHardware2::OnPrepareHardware.

Depois que o gerenciador de Plug and Play (PnP) atribui recursos do sistema ao dispositivo, a estrutura armazena informações sobre os recursos de interrupção atribuídos do dispositivo nos objetos de interrupção que o driver criou. (Drivers que não dão suporte a Plug and Play não podem usar objetos de interrupção.)

O sistema pode não atribuir todos os recursos de interrupção aos quais um dispositivo pode dar suporte. Por exemplo, um driver cria oito objetos de interrupção para um dispositivo capaz de dar suporte a oito mensagens MSI. No entanto, o sistema pode atribuir apenas uma mensagem ao dispositivo. Nesse caso, sete dos objetos de interrupção não serão utilizados.

Normalmente, o driver deve armazenar informações específicas de interrupção, como o conteúdo copiado dos registros de interrupção do dispositivo, no espaço de contexto do objeto de interrupção. Um driver chama IWDFObject::AssignContext para registrar um contexto e solicitar notificação quando o objeto se tornar inválido.

O UMDF dá suporte a interrupções disparadas em nível começando no Windows 8. Se um driver em execução em um sistema operacional anterior a Windows 8 criar uma interrupção disparada em nível em OnDeviceAdd, CreateInterrupt terá êxito porque o sistema operacional ainda não atribuiu recursos. No entanto, quando a estrutura tenta conectar a interrupção mais tarde, o dispositivo falha ao iniciar.

Para obter mais informações sobre como lidar com interrupções em drivers UMDF, consulte Acessando interrupções de hardware e manipulação.

Exemplos

HRESULT  hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG  interruptConfig;

WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
                           MyInterruptIsr,
                           MyInterruptWorkItem);

hr = pDevice->Create(&interruptConfig, 
                     &pInterrupt);

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

Confira também

IWDFDevice3

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT