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 |