Interfaccia IInterruptSync (portcls.h)

L'interfaccia IInterruptSync rappresenta un oggetto di sincronizzazione interrupt che sincronizza l'esecuzione di un elenco di routine del servizio di interrupt (ISR) con routine non ISR. Il driver di sistema PortCls implementa questa interfaccia e la espone al driver dell'adattatore. Un driver miniport ottiene un riferimento a un IInterruptSync oggetto chiamando la funzione PortCls PcNewInterruptSync, che crea un nuovo IInterruptSync oggetto che si connette a una risorsa di interrupt. IInterruptSync eredita dall'interfaccia IUnknown .

Il metodo IInterruptSync::RegisterServiceRoutine associa un ISR a un oggetto sync. È possibile associare più isr a un singolo oggetto di sincronizzazione. Quando si verifica l'interrupt, l'oggetto sync esegue gli ISR nell'elenco in un ordine specificato e in base al parametro Mode della funzione PcNewInterruptSync.

Un altro facet di IInterruptSync è la possibilità di sincronizzare l'esecuzione degli ISR con altre routine che non sono ISR. Dopo che una routine non ISR viene passata a IInterruptSync::CallSynchronizedRoutine e inizia l'esecuzione, l'esecuzione di qualsiasi isr registrato con l'oggetto di sincronizzazione viene mantenuta fino al termine dell'esecuzione della routine.

Sia i metodi RegisterServiceRoutine che CallSynchronizedRoutine accettano puntatori a funzione di tipo PINTERRUPTSYNCROUTINE, definiti come segue:

  typedef NTSTATUS (*PINTERRUPTSYNCROUTINE)
  (
      IN  struct IInterruptSync *InterruptSync,
      IN  PVOID                  DynamicContext
  );

Il membro InterruptSync è un puntatore all'oggetto di sincronizzazione. Il membro DynamicContext contiene un valore di contesto passato alla routine quando viene chiamato.

Per altre informazioni, vedere Interrupt Sync Objects.For more information, see Interrupt Sync Objects.

Ereditarietà

L'interfaccia IInterruptSync eredita dall'interfaccia IUnknown.

Metodi

L'interfaccia IInterruptSync include questi metodi.

 
IInterruptSync::CallSynchronizedRoutine

Il metodo CallSynchronizedRoutine chiama una routine che non è una routine del servizio di interruzione (ISR), ma la cui esecuzione deve essere sincronizzata con gli ISR.
IInterruptSync::Connect

Il metodo Connect connette l'oggetto di sincronizzazione all'interrupt.
IInterruptSync::D isconnect

Il metodo Disconnect disconnette l'oggetto di sincronizzazione dall'interrupt.
IInterruptSync::GetKInterrupt

Il metodo GetKInterrupt ottiene un oggetto interrupt WDM da un oggetto di sincronizzazione della classe di porta.
IInterruptSync::RegisterServiceRoutine

Il metodo RegisterServiceRoutine registra una routine del servizio interrupt (ISR) che deve essere chiamata quando si verifica un interrupt.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione portcls.h