IInterruptSync-Schnittstelle (portcls.h)

Die IInterruptSync Schnittstelle stellt ein Interruptsynchronisierungsobjekt dar, das die Ausführung einer Liste von Interruptdienstroutinen (ISRs) mit Nicht-ISR-Routinen synchronisiert. Der PortCls-Systemtreiber implementiert diese Schnittstelle und macht sie für den Adaptertreiber verfügbar. Ein Miniporttreiber ruft einen Verweis auf ein IInterruptSync Objekt ab, indem er die PortCls-Funktion PcNewInterruptSync aufruft, wodurch ein neues IInterruptSync Objekt erstellt wird, das eine Verbindung mit einer Interruptressource herstellt. IInterruptSync erbt von der IUnknown-Schnittstelle .

Die IInterruptSync::RegisterServiceRoutine-Methode ordnet einen ISR einem Synchronisierungsobjekt zu. Einem einzelnen Synchronisierungsobjekt können mehrere ISR zugeordnet werden. Wenn der Interrupt auftritt, führt das Synchronisierungsobjekt die ISRs in der Liste in einer angegebenen Reihenfolge und Weise gemäß dem Modusparameter der PcNewInterruptSync-Funktion aus.

Eine weitere Facette von ist die IInterruptSync Möglichkeit, die Ausführung von ISRs mit anderen Routinen zu synchronisieren, die keine ISRs sind. Sobald eine Nicht-ISR-Routine an IInterruptSync::CallSynchronizedRoutine übergeben wurde und mit der Ausführung beginnt, wird die Ausführung aller ISRs, die beim Synchronisierungsobjekt registriert sind, garantiert unterbrochen, bis die Ausführung dieser Routine abgeschlossen ist.

Sowohl die RegisterServiceRoutine - als auch die CallSynchronizedRoutine-Methode akzeptieren Funktionszeiger vom Typ PINTERRUPTSYNCROUTINE, die wie folgt definiert sind:

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

Das InterruptSync-Element ist ein Zeiger auf das Synchronisierungsobjekt. Das DynamicContext-Element enthält einen Kontextwert, der beim Aufruf an die Routine übergeben wird.

Weitere Informationen finden Sie unter Unterbrechen von Synchronisierungsobjekten.

Vererbung

Die IInterruptSync-Schnittstelle erbt von der IUnknown-Schnittstelle.

Methoden

Die IInterruptSync-Schnittstelle verfügt über diese Methoden.

 
IInterruptSync::CallSynchronizedRoutine

Die CallSynchronizedRoutine-Methode ruft eine Routine auf, die keine Interruptdienstroutine (ISR) ist, deren Ausführung jedoch mit ISRs synchronisiert werden muss.
IInterruptSync::Connect

Die Connect-Methode verbindet das Synchronisierungsobjekt mit dem Interrupt.
IInterruptSync::D isconnect

Die Disconnect-Methode trennt das Synchronisierungsobjekt vom Interrupt.
IInterruptSync::GetKInterrupt

Die GetKInterrupt-Methode ruft ein WDM-Interruptobjekt aus einem Portklassensynchronisierungsobjekt ab.
IInterruptSync::RegisterServiceRoutine

Die RegisterServiceRoutine-Methode registriert eine Interruptdienstroutine(ISR), die aufgerufen werden soll, wenn ein Interrupt auftritt.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile portcls.h