Método IWDFDevice3::CreateInterrupt (wudfddi.h)
[Aviso: 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 recurso novo 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 aoda 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.
Valor de retorno
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.
Observações
O 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 que 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 do 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 ao 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 a partir do Windows 8. Se um driver em execução em um sistema operacional anterior ao Windows 8 criar uma interrupção disparada em nível no 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 o hardware e tratando interrupções.
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. |
da Plataforma de Destino | Área de trabalho |
versão mínima do UMDF | 1.11 |
cabeçalho | wudfddi.h |
de DLL | WUDFx.dll |