Freigeben über


KSPIN-Struktur (ks.h)

Die KSPIN-Struktur beschreibt einen instanziierten Pin.

Syntax

typedef struct _KSPIN {
  const KSPIN_DESCRIPTOR_EX *Descriptor;
  KSOBJECT_BAG              Bag;
  PVOID                     Context;
  ULONG                     Id;
  KSPIN_COMMUNICATION       Communication;
  BOOLEAN                   ConnectionIsExternal;
  KSPIN_INTERFACE           ConnectionInterface;
  KSPIN_MEDIUM              ConnectionMedium;
  KSPRIORITY                ConnectionPriority;
  PKSDATAFORMAT             ConnectionFormat;
  PKSMULTIPLE_ITEM          AttributeList;
  ULONG                     StreamHeaderSize;
  KSPIN_DATAFLOW            DataFlow;
  KSSTATE                   DeviceState;
  KSRESET                   ResetState;
  KSSTATE                   ClientState;
} KSPIN, *PKSPIN;

Angehörige

Descriptor

Ein Zeiger auf den Pindeskriptor für diesen bestimmten Pin. Weitere Informationen finden Sie unter KSPIN_DESCRIPTOR_EX.

Bag

Dieses Element gibt die KSOBJECT_BAG (die KSOBJECT_BAG-Struktur entspricht dem Typ PVOID) für diese bestimmte Pininstanz an. Objektbehälter sind Strukturen, die verwendet werden, um einem bestimmten AVStream-Objekt dynamischen Speicher zuzuordnen. Alles im Pinobjektbehälter wird automatisch bereinigt, wenn der Pin geschlossen wird.

Context

Ein Zeiger auf einen Puffer. Clients können Kontext- verwenden, um Kontextinformationen einer bestimmten Pininstanz zuzuordnen. In der Regel wird dies für Pin-/Stream-Erweiterungen verwendet und in der in der Pin-Dispatch-Tabelle bereitgestellten Create-Dispatch zugeordnet. Beachten Sie, dass alle für Kontextinformationen zugewiesenen dynamischen Speicher in den Objektbehälter der Pininstanz mit KsAddItemToObjectBagplatziert werden sollten. Context wird initialisiert, um den Wert des Context Member des übergeordneten KSFILTER zum Zeitpunkt der Pinerstellung zu erhalten. Siehe AVStream-Objekthierarchie.

Id

Dieses Element gibt den Pintypbezeichner an. Dies ist der Index im Array von Pindeskriptoren, die für den angegebenen Filtertyp bereitgestellt werden.

Communication

Dieses Element gibt KSPIN_COMMUNICATION_NONE, KSPIN_COMMUNICATION_SINK, KSPIN_COMMUNICATION_SOURCE, KSPIN_COMMUNICATION_BOTH oder KSPIN_COMMUNICATION_BRIDGE an. Siehe KSPROPERTY_PIN_COMMUNICATION für die Bedeutung der einzelnen Werte.

ConnectionIsExternal

Dieser Member gibt einen booleschen Wert an, der, wenn TRUE, angibt, dass der verbundene Pin den AVStream-Verbindungs-Handshake nicht unterstützt. Wenn FALSE-angibt, dass der verbundene Pin den AVStream-Verbindungs-Handshake unterstützt. Dies ist ein Hinweis darauf, ob die Verbindung zwischen diesem Pin und dem Pin verbunden ist, eine Verbindung zwischen zwei AVStream-Pins ist.

ConnectionInterface

Dieses Element enthält eine KSPIN_INTERFACE Struktur, die die schnittstelle identifiziert, die für die Verbindung verwendet wird. Diese Informationen werden vom Graph-Generator bereitgestellt, wenn der Pin erstellt wird.

ConnectionMedium

Dieses Element enthält eine KSPIN_MEDIUM Struktur, die das Verbindungsmedium identifiziert, das dieser Pin verwenden soll. Diese Informationen werden vom Graph-Generator bereitgestellt, wenn der Pin erstellt wird.

ConnectionPriority

Dieses Element enthält eine KSPRIORITY- Struktur, die die Priorität der Verbindung angibt. Diese Informationen werden vom Graph-Generator bereitgestellt, wenn der Pin erstellt wird.

ConnectionFormat

Ein Zeiger auf eine KSDATAFORMAT Struktur, die das Datenformat der Verbindung angibt. Diese Informationen werden anfänglich vom Graph-Generator bereitgestellt, wenn der Pin erstellt wird und möglicherweise über den Eigenschaftenzugriff oder durch Formatänderungsmeldungen geändert werden, die in den Datenstrom eingefügt wurden. Der Zugriff auf dieses Mitglied wird vom Mutex des Filtersteuerelements synchronisiert. Dieses Mitglied sollte nicht vom Client geändert werden.

AttributeList

Ein Zeiger auf eine KSMULTIPLE_ITEM Struktur, die die Liste der Attribute angibt, die während der Pinerstellung bereitgestellt werden, um die Verbindung zu beschreiben. Gibt die Richtung des Datenflusses für diesen Pin an (KSPIN_DATAFLOW_IN oder KSPIN_DATAFLOW_OUT). Diese Informationen sind ein statisches Attribut der Pin und werden im Pindeskriptor angezeigt. Sie wird hier für den Zugriff auf IRQL über PASSIVE_LEVEL zwischengespeichert.

StreamHeaderSize

Dieses Element gibt die Größe in Byte jeder KSSTREAM_HEADER Struktur für diesen Pin an. In der Regel kann ein Client dies auf einen beliebigen Wert festlegen, der größer als Größe (KSSTREAM_HEADER) ist und erweiterte Datenstromheader zugewiesen haben (jeder Datenstromheader wird StreamHeaderSize Bytes lang). Wenn ein Client dieses Element nicht festgelegt hat, gibt dies an, dass keine erweiterten Informationen Streamheader folgen. In einer solchen Situation ist jeder Datenstromheader genau Größe (KSSTREAM_HEADER). Clients können dies im Verteiler für die Pinerstellung festlegen.

DataFlow

Dieses Element gibt die Richtung des Datenflusses für den Pin an. Mögliche Einstellungen sind KSPIN_DATAFLOW_IN und KSPIN_DATAFLOW_OUT. Diese Informationen sind ein statisches Attribut der Pin und werden in relevanter KSPIN_DESCRIPTOR Struktur angezeigt. Sie wird hier für den Zugriff auf IRQL über PASSIVE_LEVEL zwischengespeichert.

DeviceState

Dieses Element enthält eine Enumeration vom Typ KSSTATE, die den Zustand angibt, zu dem der Pin übergangen wurde. Nicht unbedingt identisch mit dem Zustand des Rohrs, der über AVStrMiniPinSetDeviceStategemeldet wird. Zunächst KSSTATE_STOP wird dieser Member geändert, wenn AVStream eine IOCTL-Eigenschaft des Verbindungsstatus empfängt. Access wird mit dem Filtersteuerelement mutexsynchronisiert. Minidriver sollten dieses Mitglied nicht ändern. Weitere Informationen finden Sie im Abschnitt "Hinweise" weiter unten. Siehe auch das ClientState Mitglied.

ResetState

Dieses Element enthält eine Enumeration vom Typ KSRESET, die den aktuellen Zurücksetzungszustand des Pins identifiziert. Mögliche Einstellungen sind KSRESET_BEGIN und KSRESET_END. Dieses Element wird zunächst auf KSRESET_END festgelegt und über den Eigenschaftenzugriff geändert. Der Zugriff auf dieses Mitglied wird vom filtersteuerelement mutexsynchronisiert. Der Client sollte dieses Mitglied nicht ändern.

ClientState

Dieses Element gibt den KSSTATE- an, auf dem der Pin derzeit festgelegt ist. Wird unmittelbar vor dem Aufruf AVStrMiniPinSetDeviceState- aktualisiert. Wenn diese Rückrufroutine fehlschlägt, setzt AVStream ClientState- auf den vorherigen Wert zurück. Minidriver, die Zustandsübergänge fehlschlagen und dieses Element während der Verarbeitung überprüfen, sollten sich dieser Abfolge von Ereignissen bewusst sein.

Bemerkungen

Auf viele Arten sind Pins der Fokus des Filterverhaltens. Dies spiegelt sich in der Tatsache wider, dass die Pinstruktur über eine große Anzahl von Mitgliedern verfügt. Viele Minidriver müssen das Pinverhalten verfeinern und zusätzlichen pin-zugeordneten Kontext beibehalten. Für Filter mit relativ herkömmlichem Pinverhalten ist keine zusätzliche Einschränkung oder kein zusätzlicher Kontext erforderlich. In vielen Fällen reicht das Standardverhalten des Pins aus; auf die Pins wird mithilfe Filter-Centric Verarbeitungzugegriffen.

Für Synchronisierungszwecke ist die Lebensdauer dieses Objekts das Intervall, das beginnt, wenn die PreCreate-Verteilerfunktion des Minidrivers aufgerufen und beendet wird, wenn die Close-Dispatch-Funktion des Minidrivers zurückgegeben wird, vorausgesetzt, die Funktion gibt nicht STATUS_PENDING zurück. Wenn es STATUS_PENDING zurückgibt, endet die Lebensdauer des Objekts, wenn der Client den Abschluss der Close-Anforderung angibt, indem KsCompletePendingRequestaufgerufen wird.

Wenn der Minidriver ermitteln muss, ob er zu einem bestimmten KSSTATE-wechseln muss, ist der Wert des DeviceState Member von KSPIN mit diesem Zustand keine zuverlässige Methode. Sehen Sie sich stattdessen entweder den ClientState Member an, oder erstellen Sie eine Variable im SetDeviceState Callback, und überprüfen Sie dann diese Variable. SetDeviceState ist ein Mitglied von KSPIN_DISPATCH.

Siehe auch Object Bags.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Microsoft Windows XP und höheren Betriebssystemen und in Microsoft DirectX 8.0 und höheren Versionen.
Header- ks.h (enthalten Ks.h)

Siehe auch

KSPIN_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KSPIN_DISPATCH

KsAddItemToObjectBag

KsCompletePendingRequest-