KsPinGetTrailingEdgeStreamPointer-Funktion (ks.h)
Die KsPinGetTrailingEdgeStreamPointer-Funktion ruft den nachfolgenden Edgestreamzeiger für die Warteschlange ab, die dem angegebenen Pin zugeordnet ist.
Syntax
KSDDKAPI PKSSTREAM_POINTER KsPinGetTrailingEdgeStreamPointer(
[in] PKSPIN Pin,
[in] KSSTREAM_POINTER_STATE State
);
Parameter
[in] Pin
Ein Zeiger auf die KSPIN-Struktur , für deren Warteschlange der nachfolgende Edgestreamzeiger zurückgegeben werden soll.
[in] State
Dieser Parameter gibt den Zustand an, in dem der nachfolgende Edgestreamzeiger abgerufen werden soll. Dabei kann es sich um eine der folgenden Methoden handeln:
KSSTREAM_POINTER_STATE_UNLOCKED
Rufen Sie den führenden Streamzeiger ab, unabhängig davon, ob er auf einen Datenrahmen verweist oder nicht.
Es können keine Versuche unternommen werden, auf daten zuzugreifen, die dem Zeiger zugeordnet sind, bis der Zeiger gesperrt ist. Beachten Sie auch, dass Frames, die einem entsperrten Streamzeiger zugeordnet sind, abgebrochen werden können.
KSSTREAM_POINTER_STATE_LOCKED
Abrufen und Sperren des führenden Streamzeigers. Wenn dem Datenstromzeiger kein Datenrahmen zugeordnet ist, geben Sie NULL zurück. Wenn einNicht-NULL-Zeiger zurückgegeben wird, handelt es sich um einen gesperrten Datenstromzeiger, dem ein Datenrahmen zugeordnet ist. Frames, die einem gesperrten Streamzeiger zugeordnet sind , können nicht abgebrochen werden.
Rückgabewert
KsPinGetTrailingEdgeStreamPointer gibt entweder einen Zeiger auf eine KSSTREAM_POINTER Struktur zurück, die den nachfolgenden Edgestreamzeiger darstellt, oder NULL. Ein Rückgabewert von NULL kann angeben, dass keine nachfolgende Kante für die Warteschlange vorhanden ist, die dem Pin zugeordnet ist. In diesem Fall gibt der Pindeskriptor wahrscheinlich nicht an, dass der Pin eine eindeutige nachgestellte Kante aufweisen soll. Alternativ kann NULL angeben, dass dem Pin keine Warteschlange zugeordnet ist. In diesem Fall verwendet der betreffende Pin nicht den Standardtransportmechanismus. Ein Rückgabewert von NULL kann auch darauf hinweisen, dass ein Versuch, die nachfolgende Edge zu sperren, fehlgeschlagen ist. Mit anderen Worten, es gibt derzeit keinen Datenrahmen, der dem führenden Edge zugeordnet ist.
Hinweise
Der nachfolgende Edgestreamzeiger ist ein spezieller Zeiger auf den Datenstrom, der nur vorhanden ist, wenn der Pindeskriptor für den Pin eine eindeutige nachgestellte Kante angibt. Wenn dieser Zeiger vorhanden ist, verweist er auf die ältesten Daten in der Warteschlange, es sei denn, es wird speziell durch einen KsStreamPointerAdvanceXxx oder einen KsStreamPointerUnlock-Aufruf erweitert. Ältere Daten können auch in der Warteschlange vorhanden sein, wenn geklonte Streamzeiger für Frames vorhanden sind, die älter sind als die, auf die der nachfolgende Edge verweist.
Datenrahmen, die sich im Fenster zwischen dem führenden Streamzeiger und dem nachfolgenden Edgedatenstromzeiger befinden, weisen mindestens eine Verweisanzahl auf und verlassen daher die Warteschlange nicht und werden erst abgeschlossen, wenn sie das Fenster aufgrund der Weiterentwicklung des nachfolgenden Edges verlassen. Beachten Sie, dass Frames zwischen der führenden Kante und der nachfolgenden Kante standardmäßig nicht gesperrt sind und daher abgebrochen werden können.
KsPinGetTrailingEdgeStreamPointer wird hauptsächlich in pinzentrierten Filtern verwendet. Weitere Informationen finden Sie unter Pin-Centric Processing und Filter-Centric Processing.
KsPinGetTrailingEdgeStreamPointer funktioniert nicht, es sei denn, der Pindeskriptor für den Pin gibt an, dass die Warteschlange einen eindeutigen nachgestellten Rand aufweisen soll, indem das KSPIN_FLAG_DISTINCT_TRAILING_EDGE-Flag festgelegt wird.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Microsoft Windows XP und höheren Betriebssystemen und DirectX 8.0 und höher DirectX-Versionen. |
Zielplattform | Universell |
Header | ks.h (einschließlich Ks.h) |
Bibliothek | Ks.lib |
IRQL | <=DISPATCH_LEVEL |
Weitere Informationen
KsPinGetLeadingEdgeStreamPointer