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 |