Interface IInterruptSync (portcls.h)
A interface IInterruptSync
representa um objeto de sincronização de interrupção que sincroniza a execução de uma lista de ISRs (rotinas de serviço de interrupção) com rotinas não ISR. O driver do sistema PortCls implementa essa interface e a expõe ao driver do adaptador. Um driver de miniporto obtém uma referência a um objeto IInterruptSync
chamando a função PortCls PcNewInterruptSync, que cria um novo objeto IInterruptSync
que se conecta a um recurso de interrupção.
IInterruptSync
herda da interface IUnknown.
O método IInterruptSync::RegisterServiceRoutine associa um ISR a um objeto de sincronização. Mais de um ISR pode ser associado a um único objeto de sincronização. Quando a interrupção ocorre, o objeto de sincronização executa os ISRs na lista em uma ordem e maneira especificadas de acordo com o parâmetro pcNewInterruptSync modo da função.
Outra faceta de IInterruptSync
é a capacidade de sincronizar a execução de ISRs com outras rotinas que não são ISRs. Depois que uma rotina não ISR é passada para IInterruptSync::CallSynchronizedRoutine e começa a ser executada, a execução de todos os ISRs registrados com o objeto de sincronização é garantida para ser adiada até que essa rotina tenha terminado de ser executada.
Os métodos RegisterServiceRoutine e CallSynchronizedRoutine aceitam ponteiros de função do tipo PINTERRUPTSYNCROUTINE, que é definido da seguinte maneira:
typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
(
IN struct IInterruptSync *InterruptSync,
IN PVOID DynamicContext
);
O membro InterruptSync é um ponteiro para o objeto de sincronização. O membro DynamicContext contém um valor de contexto que é passado para a rotina quando ele é chamado.
Para obter mais informações, consulte interromper objetos de sincronização.
Herança
A interface IInterruptSync herda da interface IUnknown.
Métodos
A interface IInterruptSync tem esses métodos.
IInterruptSync::CallSynchronizedRoutine O método CallSynchronizedRoutine chama uma rotina que não é uma ISR (rotina de serviço de interrupção), mas cuja execução precisa ser sincronizada com ISRs. |
IInterruptSync::Connect O método Connect conecta o objeto de sincronização à interrupção. |
IInterruptSync::D isconnect O método Disconnect desconecta o objeto de sincronização da interrupção. |
IInterruptSync::GetKInterrupt O método GetKInterrupt obtém um objeto de interrupção WDM de um objeto de sincronização de classe de porta. |
IInterruptSync::RegisterServiceRoutine O método RegisterServiceRoutine registra uma ISR (rotina de serviço de interrupção) que deve ser chamada quando ocorre uma interrupção. |
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Windows |
cabeçalho | portcls.h |