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

Der KSOBJECT_BAG (entspricht dem Typ PVOID), der in der Prüfung verwendet werden soll. Wenn das Element nicht im Objektbehälter enthalten ist, KsEdit dem Element dynamisch genügend Arbeitsspeicher zuweist, kopiert den alten Inhalt und platziert den neu zugeordneten Speicher in dieser Objektsammlung.

[in, out] PointerToPointerToItem

Ein Zeiger auf einen Zeiger auf das zu bearbeitende Element.

[in] NewSize

Die Anzahl der Bytes, die für das Element zugewiesen 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 von bis zu vier Zeichen an, die durch einfache Anführungszeichen getrennt sind. Die Zeichenfolge wird in der Regel in umgekehrter Reihenfolge angegeben. Der ASCII-Wert jedes Zeichens im Tag muss zwischen 0 und 127 stehen.

Rückgabewert

Gibt Erfolg oder STATUS_INSUFFICIENT_RESOURCES zurück.

Bemerkungen

Beachten Sie, dass KsEdit und KsEditSized- Makros erstellt werden, um _KsEdit einfacher zu verwenden. Während _KsEdit es Ihnen ermöglicht, die Größe eines Elements zu ändern, KsEdit- nicht. Das Makro KsEdit ruft _KsEditauf, wobei Größe(** PointerToPointerToItem) als beide Größen angegeben wird.

Betrachten Sie z. B. einen Pin, der seine Allokatorrahmenerstellung bei der Erstellung ändern muss. Da der Deskriptor statisch codiert ist und neue Pins sie möglicherweise 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->Deskriptor dynamischen Speicher ist, der Pin-zugeordnet ist. Beachten Sie, dass willkürliche Änderungen von Deskriptoren und anderen AVStream-Strukturen unerwünschte Ergebnisse verursachen können. Minidriver sollten bei der Verwendung von KsEdit- auf AVStream-Strukturen Vorsicht walten lassen.

KsEditSized ruft_KsEdit mit denselben empfangenen Parametern auf, außer dass Object durch Object->Bag ersetzt wird und der Zeiger typcast to PVOID ist.

Beachten Sie, dass beim Aufrufen von _KsEditein Anrufer den mit der Tasche verknüpften Mutex halten muss. Weitere Informationen finden Sie unter Object Bags und Mutexes in AVStream.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Microsoft Windows XP und höheren Betriebssystemen und DirectX 8.0 und höher directX-Versionen.
Zielplattform- Universal
Header- ks.h (enthalten Ks.h)
Library Ks.lib
IRQL- PASSIVE_LEVEL