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 |