Função WdmlibIoConnectInterruptEx (iointex.h)
A função WdmlibIoConnectInterruptEx registra uma rotina de tratamento de interrupção para interrupções de um dispositivo.
Sintaxe
NTSTATUS WdmlibIoConnectInterruptEx(
[in, out] PIO_CONNECT_INTERRUPT_PARAMETERS Parameters
);
Parâmetros
[in, out] Parameters
Ponteiro para uma estrutura IO_CONNECT_INTERRUPT_PARAMETERS que especifica o dispositivo e a rotina de tratamento de interrupção. No retorno, o WdmlibIoConnectInterruptEx atualiza essa estrutura para armazenar informações sobre as interrupções do dispositivo.
Retornar valor
A função retorna STATUS_SUCCESS com êxito ou o valor de erro NTSTATUS apropriado em caso de falha. Os valores de erro possíveis incluem:
Código de retorno | Descrição |
---|---|
|
A operação é inválida para o dispositivo especificado. Por exemplo, Parameters->Version = CONNECT_LINE_BASED e o sistema atribuiu várias mensagens de interrupção ao dispositivo. |
|
O chamador especificou um parâmetro inválido. Esse erro ocorre, por exemplo, quando o chamador especificou NULL para o objeto de dispositivo do dispositivo. |
|
O chamador especificou um valor inválido para o membro Version da estrutura para a qual Parameters aponta. Parâmetros->A versão deve ser uma das CONNECT_LINE_BASED, CONNECT_MESSAGE_BASED ou CONNECT_FULLY_SPECIFIED. |
|
O chamador especificou um valor inválido para o décimo membro da estrutura para a qual Parameters aponta. Esse erro ocorre, por exemplo, quando Parameters->FullySpecified.ProcessorEnableMask não tem nenhum bit definido. |
|
Um dos argumentos não foi encontrado. Por exemplo, o dispositivo especificado não tem interrupções ou o vetor de interrupção especificado não é atribuído a nenhum dispositivo. |
Comentários
O WdmlibIoConnectInterruptEx pode ser usado para registrar uma rotina de tratamento de interrupção para interrupções tradicionais baseadas em linha (como as compatíveis com o barramento PCI) e as interrupções mais recentes sinalizadas por mensagem (como as compatíveis com as versões PCI 2.2 e 3.0).
Os drivers registram uma rotina InterruptService para interrupções baseadas em linha e uma rotina InterruptMessageService para interrupções sinalizadas por mensagem. Para obter mais informações sobre como especificar os membros de Parâmetros em cada caso, consulte IO_CONNECT_INTERRUPT_PARAMETERS.
WdmlibIoConnectInterruptEx atualiza os membros de Parâmetros para fornecer informações sobre as interrupções do dispositivo. Para obter mais informações sobre as informações fornecidas por WdmlibIoConnectInterruptEx, consulte IO_CONNECT_INTERRUPT_PARAMETERS.
Use WdmlibIoDisconnectInterruptEx para cancelar o registro de uma rotina registrada com WdmlibIoConnectInterruptEx.
O driver não deve programar seu dispositivo para gerar interrupções até que ele tenha conectado seu ISR. Portanto, o ISR não pode ser acionado antes que WdmlibIoConnectInterruptEx retorne. No entanto, há determinados dispositivos, como botões, que não são programáveis. Para esses dispositivos, o driver deve estar preparado para lidar com o ISR assim que chamar WdmlibIoConnectInterruptEx. A linha de interrupção já pode ser declarada quando WdmlibIoConnectInterruptEx é chamado e pode ser acionado imediatamente após a linha ser habilitada no controlador de interrupção, antes que a chamada WdmlibIoConnectInterruptEx seja desenrolada.
Para obter mais informações sobre como registrar uma rotina de tratamento de interrupção, consulte Registrando um ISR.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows Vista e versões posteriores do sistema operacional Windows. Os drivers que também devem funcionar no Windows 2000, Windows XP ou Windows Server 2003 podem, em vez disso, vincular ao Iointex.lib para usar a rotina. |
Plataforma de Destino | Universal |
Cabeçalho | iointex.h (inclua Iointex.h, Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDDIs |