Freigeben über


_KsEdit-Funktion (ks.h)

Die KsEdit-Funktion garantiert, dass ein bestimmtes Element dynamisch zugeordnet und einem AVStream-Objekt über den Objektbehälter zugeordnet wird.

Syntax

KSDDKAPI NTSTATUS _KsEdit(
  [in]      KSOBJECT_BAG ObjectBag,
  [in, out] PVOID        *PointerToPointerToItem,
  [in]      ULONG        NewSize,
  [in]      ULONG        OldSize,
  [in]      ULONG        Tag
);

Parameter

[in] ObjectBag

Die KSOBJECT_BAG (entspricht dem Typ PVOID), die in der Überprüfung verwendet werden soll. Wenn das Element nicht im Objektbehälter enthalten ist, weist KsEdit dynamisch genügend Arbeitsspeicher für das Element zu, kopiert den alten Inhalt und platziert den neu zugewiesenen Speicher in diesem Objektbehälter.

[in, out] PointerToPointerToItem

Ein Zeiger auf einen Zeiger auf das zu bearbeitende Element.

[in] NewSize

Die Anzahl der Bytes, die dem Element zugeordnet werden sollen.

[in] OldSize

Die Anzahl der Bytes, die das Element derzeit beansprucht.

[in] Tag

Enthält das Pooltag, das für die Zuordnungen verwendet werden soll. Treiber geben das Pooltag normalerweise als Zeichenfolge mit bis zu vier Zeichen an, die durch einzelne Anführungszeichen getrennt sind. Die Zeichenfolge wird normalerweise in umgekehrter Reihenfolge angegeben. Der ASCII-Wert jedes Zeichens im Tag muss zwischen 0 und 127 sein.

Rückgabewert

Gibt erfolgreich oder STATUS_INSUFFICIENT_RESOURCES zurück.

Hinweise

Beachten Sie, dass KsEdit und KsEditSized Makros sind, die erstellt wurden, um _KsEdit einfacher zu verwenden. Während _KsEdit ermöglicht, die Größe eines Elements zu ändern, ist dies bei KsEdit nicht der Fall. Das Makro KsEdit ruft _KsEdit auf, wobei sizeof(** PointerToPointerToItem) als beide Größen angegeben wird.

Betrachten Sie beispielsweise einen Pin, der die Zuordnungsrahmen bei der Erstellung ändern muss. Da der Deskriptor statisch codiert ist und neue Pins ihn verwenden können, besteht die Lösung darin, den Pindeskriptor wie folgt zu ändern:

KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;

Der Aufruf von KsEdit garantiert, dass Pin-Descriptor> dynamischer Arbeitsspeicher ist, der pin zugeordnet ist. Beachten Sie, dass willkürliche Änderungen von Deskriptoren und anderen AVStream-Strukturen zu unerwünschten Ergebnissen führen können. Minidriver sollten bei der Verwendung von KsEdit in AVStream-Strukturen Vorsicht walten lassen.

KsEditSized ruft _KsEdit mit denselben Parametern auf, die er empfängt, mit der Ausnahme, dass Object durch Object-Bag> ersetzt wird und der Zeiger typecast auf PVOID ist.

Beachten Sie, dass beim Aufrufen _KsEdit ein Anrufer den Mutex enthalten muss, der der Tasche zugeordnet ist. Weitere Informationen finden Sie unter Objekttaschen und Mutexes in AVStream.

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 PASSIVE_LEVEL