EVT_WDF_INTERRUPT_WORKITEM função de retorno de chamada (wdfinterrupt.h)

[Aplica-se a KMDF e UMDF]

A função de retorno de chamada de evento EvtInterruptWorkItem de um driver processa informações de interrupção que a função de retorno de chamada EvtInterruptIsr do driver armazenou.

Sintaxe

EVT_WDF_INTERRUPT_WORKITEM EvtWdfInterruptWorkitem;

void EvtWdfInterruptWorkitem(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFOBJECT AssociatedObject
)
{...}

Parâmetros

[in] Interrupt

Um identificador para um objeto de interrupção de estrutura.

[in] AssociatedObject

Um identificador para o objeto de dispositivo de estrutura que o driver passou para WdfInterruptCreate.

Retornar valor

Nenhum

Comentários

A função de retorno de chamada EvtInterruptWorkItem é executada em IRQL = PASSIVE_LEVEL.

Para registrar uma função de retorno de chamada EvtInterruptWorkItem , o driver deve colocar o endereço da função de retorno de chamada em uma estrutura WDF_INTERRUPT_CONFIG antes de chamar WdfInterruptCreate.

A maioria dos drivers usa uma única função de retorno de chamada EvtInterruptWorkItem para cada tipo de interrupção.

Para agendar a execução de uma função de retorno de chamada EvtInterruptWorkItem , o driver deve chamar WdfInterruptQueueWorkItemForIsr de dentro da função de retorno de chamada EvtInterruptIsr .

Se o driver criar vários objetos de interrupção de estrutura para cada dispositivo, você poderá considerar o uso de um retorno de chamada EvtInterruptWorkItem separado para cada interrupção.

Os drivers que implementam o tratamento de interrupção de DIRQL ou o tratamento de interrupção de nível passivo podem enfileirar um retorno de chamada EvtInterruptWorkItem .

Um driver não pode enfileirar um EvtInterruptDpc e um retorno de chamada EvtInterruptWorkItem .

Se o driver tiver definido o membro AutomaticSerialization como TRUE na estrutura WDF_INTERRUPT_CONFIG da interrupção, a estrutura sincronizará a execução da função de retorno de chamada EvtInterruptWorkItem do objeto de interrupção com funções de retorno de chamada de outros objetos que estão abaixo do objeto pai da interrupção. Para obter informações sobre bloqueios de sincronização de retorno de chamada, consulte Usando bloqueios de estrutura.

Em geral, se o driver precisar adquirir o bloqueio passivo do objeto de interrupção de dentro de EvtInterruptWorkItem, o driver deverá definir o membro AutomaticSerialization de WDF_INTERRUPT_CONFIG como FALSE e, em seguida, chamar WdfInterruptAcquireLock de dentro de EvtInterruptWorkItem.

Se AutomaticSerialization for definido como TRUE, a função de retorno de chamada EvtInterruptWorkItem de um driver não deverá chamar nenhum dos seguintes métodos:

WdfInterruptAcquireLockWdfInterruptSynchronizeWdfInterruptDisableWdfInterruptEnable Para obter mais informações sobre como lidar com interrupções em drivers baseados em estrutura, consulte Manipulando interrupções de hardware.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.11
Versão mínima do UMDF 2,0
Cabeçalho wdfinterrupt.h (inclua Wdf.h)
IRQL PASSIVE_LEVEL