Compartilhar via


função _KsEdit (ks.h)

A função KsEdit garante que um determinado item seja alocado dinamicamente e associado a um objeto AVStream por meio do recipiente de objetos.

Sintaxe

KSDDKAPI NTSTATUS _KsEdit(
  [in]      KSOBJECT_BAG ObjectBag,
  [in, out] PVOID        *PointerToPointerToItem,
  [in]      ULONG        NewSize,
  [in]      ULONG        OldSize,
  [in]      ULONG        Tag
);

Parâmetros

[in] ObjectBag

O KSOBJECT_BAG (equivalente ao tipo PVOID) a ser usado no marcar. Se o item não estiver contido no recipiente de objetos, KsEdit alocará dinamicamente memória suficiente para o item, copiará o conteúdo antigo e colocará a memória recém-alocada neste recipiente de objetos.

[in, out] PointerToPointerToItem

Um ponteiro para um ponteiro para o item que está sendo editado.

[in] NewSize

O número de bytes a serem alocados para o item.

[in] OldSize

O número de bytes que o item ocupa atualmente.

[in] Tag

Contém a marca de pool a ser usada para as alocações. Os drivers normalmente especificam a marca de pool como uma cadeia de caracteres de até quatro caracteres, delimitada por aspas simples. A cadeia de caracteres geralmente é especificada em ordem invertida. O valor ASCII de cada caractere na marca deve estar entre 0 e 127.

Retornar valor

Retorna êxito ou STATUS_INSUFFICIENT_RESOURCES.

Comentários

Observe que KsEdit e KsEditSized são macros criadas para facilitar o uso de _KsEdit . Embora _KsEdit permita redimensionar um item, ksEdit não. A macro KsEdit chama _KsEdit, especificando sizeof(** PointerToPointerToItem) como ambos os tamanhos.

Por exemplo, considere um pin que precisa modificar seu enquadramento de alocador na criação. Como o descritor é codificado estaticamente e novos pinos podem usá-lo, a solução é modificar o descritor de pino da seguinte maneira:

KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;

A chamada para KsEdit garante que Pin-Descriptor> seja uma memória dinâmica associada ao Pin. Observe que a modificação arbitrária de descritores e outras estruturas AVStream pode causar resultados indesejáveis. Os minidrivers devem ter cuidado ao usar KsEdit em estruturas AVStream.

KsEditSized chama _KsEdit com os mesmos parâmetros que recebe, exceto que Object é substituído por Object-Bag> e o ponteiro é tipado para PVOID.

Observe que, ao chamar _KsEdit, um chamador deve conter o mutex associado ao recipiente. Para obter mais informações, consulte Sacos de objetos e mutexes no AVStream.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Microsoft Windows XP e em sistemas operacionais posteriores e no DirectX 8.0 e versões posteriores do DirectX.
Plataforma de Destino Universal
Cabeçalho ks.h (inclua Ks.h)
Biblioteca Ks.lib
IRQL PASSIVE_LEVEL