Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
AVStream verwendet Logiktore als Steuerungsflussmechanismus. Jedes Logikgate wird durch eine KSGATE-Struktur dargestellt.
AVStream initialisiert jeden Filter oder Pin mit einem einzigen AND-Gate. Ein Minidriver kann diesen Mechanismus dann verwenden, um zu bestimmen, wann dieses bestimmte Objekt Daten verarbeiten kann. Um das Verarbeitungssteuerungsgate für einen Pin abzurufen, ruft der Minidriver KsPinGetAndGate auf. Rufen Sie KsFilterGetAndGate auf, um das Verarbeitungssteuerungsgate für einen Filter abzurufen.
Zum Erstellen neuer Logiktore ruft der Mini-Treiber KsGateInitializeAnd oder KsGateInitializeOr auf. Sie können die Ausgabe eines Gates als Eingabe zu einem anderen Gate verwenden und dadurch Zustandsübergänge weiterleiten. Geben Sie dazu einen NextOrGate - oder NextAndGate-Parameter in diesen Aufrufen an.
Um eine vorhandene Eingabe zu einem Logikgater zu schließen, können Sie KsGateTurnInputOff aufrufen. Der Minidriver kann diesen Aufruf ausführen, um ein aktives Pin zu schließen oder die Verarbeitung für einen unbestimmten Zeitraum anzuhalten.
Rufen Sie in ähnlicher Weise KsGateTurnInputOn auf, um eine vorhandene Eingabe für ein bestimmtes Gate zu öffnen.
Wenn ein Thread für die Verarbeitung bereit ist, versucht er, die Eingabe des AND-Gates zu erfassen, das die Verarbeitung des Verarbeitungsobjekts steuert. Dazu ruft der Minidriver KsGateCaptureThreshold auf.
Wenn das AND-Gate geöffnet ist, deaktiviert AVStream eine Eingabe an das Gate, und die Verarbeitung beginnt. Da das Gate nun während der Verarbeitung geschlossen ist, kann kein anderer Thread die on-Eingabe des Gates aufnehmen. Es kann jeweils nur ein Thread Daten verarbeiten.
Um den Status eines Gates zu überprüfen, ohne ihn zu ändern, kann der Minidriver KsGateGetStateUnsafe aufrufen. Beachten Sie jedoch, dass diese Funktion keine Synchronisierung behandelt.
Rufen Sie zum Löschen eines logischen Gatters KsGateTerminateAnd oder KsGateTerminateOr auf. Das Tor, das Sie löschen, muss am Anfang einer Torkette liegen.
Rufen Sie KsPinAttachAndGate oder KsPinAttachOrGate auf, um einen Pin als Eingabe an ein Logikgater anzufügen und dann dasselbe Logikgate wie die Eingabe mit dem AND-Gate eines Filters zu verbinden.
Bestimmen des Gate-Status
Bei einem AND-Gate ist der Wert des Count-Mitglieds der KSGATE-Struktur eins minus die Anzahl der Aus-Eingänge:
Anzahl = 1 - (Anzahl der Aus-Eingänge)
Wenn dieser Wert kleiner oder gleich Null ist, wird das Gate geschlossen. Wenn dieser Wert größer als Null ist, ist das Tor geöffnet.
Bei einem OR-Gate ist der Wert des Count-Mitglieds von KSGATE die Anzahl der Eingaben an das Gate:
Anzahl = (Anzahl der aktiven Eingänge)
Wenn dieser Wert gleich Null ist, wird das Tor geschlossen. Wenn "Count " größer als null ist, ist das Tor geöffnet.
UND-Gatter haben einen gültigen Bereich von eins oder weniger; OR-Gatter haben einen gültigen Bereich von null oder größer. Count nicht auf ungültige Werte einstellen;AVStream überprüft nicht, ob ein Minidriver das Gate auf einen gültigen Zustand festgelegt hat.