Partager via


_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