_KsEdit, fonction (ks.h)
La fonction KsEdit garantit qu’un élément donné est alloué dynamiquement et associé à un objet AVStream via le conteneur d’objets.
Syntaxe
KSDDKAPI NTSTATUS _KsEdit(
[in] KSOBJECT_BAG ObjectBag,
[in, out] PVOID *PointerToPointerToItem,
[in] ULONG NewSize,
[in] ULONG OldSize,
[in] ULONG Tag
);
Paramètres
[in] ObjectBag
Le KSOBJECT_BAG (équivalent au type PVOID) à utiliser dans le case activée. Si l’élément n’est pas contenu dans le conteneur d’objets, KsEdit alloue dynamiquement suffisamment de mémoire pour l’élément, copie l’ancien contenu et place la mémoire nouvellement allouée dans ce conteneur d’objets.
[in, out] PointerToPointerToItem
Pointeur vers un pointeur vers l’élément en cours de modification.
[in] NewSize
Nombre d’octets à allouer à l’élément.
[in] OldSize
Nombre d’octets que l’élément prend actuellement.
[in] Tag
Contient la balise de pool à utiliser pour les allocations. Les pilotes spécifient normalement la balise de pool sous la forme d’une chaîne de quatre caractères maximum, délimitée par des guillemets simples. La chaîne est généralement spécifiée dans l’ordre inverse. La valeur ASCII de chaque caractère de la balise doit être comprise entre 0 et 127.
Valeur retournée
Retourne une réussite ou une STATUS_INSUFFICIENT_RESOURCES.
Remarques
Notez que KsEdit et KsEditSized sont des macros créées pour faciliter l’utilisation de _KsEdit . Bien que _KsEdit vous permet de redimensionner un élément, KsEdit ne le fait pas. La macro KsEdit appelle _KsEdit, en spécifiant sizeof(** PointerToPointerToItem) comme deux tailles.
Par exemple, considérez une broche qui doit modifier son encadrement d’allocateur lors de la création. Étant donné que le descripteur est codé de manière statique et que de nouvelles broches peuvent l’utiliser, la solution consiste à modifier le descripteur de broche comme suit :
KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;
L’appel à KsEdit garantit que Pin-Descriptor> est une mémoire dynamique associée à Pin. Notez que la modification arbitraire des descripteurs et d’autres structures AVStream peut entraîner des résultats indésirables. Les mini-disques doivent faire preuve de prudence lors de l’utilisation de KsEdit sur des structures AVStream.
Les appels KsEditSized_KsEdit avec les mêmes paramètres qu’il reçoit, sauf que Object est remplacé par Object-Bag> et que le pointeur est de typecast vers PVOID.
Notez que lors de l’appel de _KsEdit, un appelant doit contenir le mutex associé au conteneur. Pour plus d’informations, consultez Object Bags and Mutexes in AVStream.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Microsoft Windows XP et les systèmes d’exploitation ultérieurs et DirectX 8.0 et versions ultérieures de DirectX. |
Plateforme cible | Universal |
En-tête | ks.h (inclure Ks.h) |
Bibliothèque | Ks.lib |
IRQL | PASSIVE_LEVEL |