_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 |