Partilhar 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 na verificação. 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.

Valor de retorno

Retorna êxito ou STATUS_INSUFFICIENT_RESOURCES.

Observações

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 chamadas KsEdit _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 pin da seguinte maneira:

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

A chamada para KsEdit garante que de descritor>pin é uma memória dinâmica associada ao de Pino. 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 recebidos, exceto que Object é substituído por Object->Bag e o ponteiro é digitado para PVOID.

Observe que ao chamar _KsEdit, um chamador deve segurar o mutex associado à bolsa. Para obter mais informações, consulte Object Bags and Mutexes in AVStream.

Requisitos

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