Partager via


fonction _KsEdit (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 la vérification. Si l’élément n’est pas contenu dans le conteneur d’objets, KsEdit alloue dynamiquement une mémoire suffisante 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 pour 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 allant jusqu’à quatre caractères, délimitées 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 de retour

Retourne la réussite ou 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 taille de(** PointerToPointerToItem) comme tailles.

Par exemple, considérez une broche qui doit modifier son cadre d’allocateur lors de la création. Étant donné que le descripteur est codé statiquement 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 >Descript eur>est une mémoire dynamique associée à . Notez que la modification arbitraire des descripteurs et d’autres structures AVStream peut entraîner des résultats indésirables. Les minidrivers doivent faire preuve de prudence lors de l’utilisation de KsEdit sur les structures AVStream.

KsEditSized appelle _KsEdit avec les mêmes paramètres qu’il reçoit, sauf que 'objet 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 sacs d’objets et mutexes dans AVStream.

Exigences

Exigence Valeur
client minimum 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 Universel
d’en-tête ks.h (include Ks.h)
bibliothèque Ks.lib
IRQL PASSIVE_LEVEL