función _KsEdit (ks.h)
La función KsEdit garantiza que un elemento determinado se asigna dinámicamente y se asocia con un objeto AVStream a través del contenedor de objetos.
Sintaxis
KSDDKAPI NTSTATUS _KsEdit(
[in] KSOBJECT_BAG ObjectBag,
[in, out] PVOID *PointerToPointerToItem,
[in] ULONG NewSize,
[in] ULONG OldSize,
[in] ULONG Tag
);
Parámetros
[in] ObjectBag
El KSOBJECT_BAG (equivalente al tipo PVOID) que se va a usar en la comprobación. Si el elemento no está incluido en el contenedor de objetos, KsEdit asigna dinámicamente suficiente memoria para el elemento, copia el contenido antiguo y coloca la memoria recién asignada en este contenedor de objetos.
[in, out] PointerToPointerToItem
Puntero a un puntero al elemento que se está editando.
[in] NewSize
Número de bytes que se asignarán para el elemento.
[in] OldSize
Número de bytes que ocupa actualmente el elemento.
[in] Tag
Contiene la etiqueta de grupo que se va a usar para las asignaciones. Normalmente, los controladores especifican la etiqueta de grupo como una cadena de hasta cuatro caracteres, delimitados por comillas simples. Normalmente, la cadena se especifica en orden invertido. El valor ASCII de cada carácter de la etiqueta debe estar comprendido entre 0 y 127.
Valor devuelto
Devuelve correcto o STATUS_INSUFFICIENT_RESOURCES.
Comentarios
Tenga en cuenta que KsEdit y KsEditSized son macros creadas para facilitar el uso de _KsEdit . Aunque _KsEdit permite cambiar el tamaño de un elemento, KsEdit no. La macro KsEdit llama a _KsEdit, especificando sizeof(** PointerToPointerToItem) como ambos tamaños.
Por ejemplo, considere un pin que necesite modificar su marco de asignador en la creación. Dado que el descriptor está codificado estáticamente y los pin nuevos pueden usarlo, la solución consiste en modificar el descriptor de patillas de la siguiente manera:
KsEdit(Pin, &Pin->Descriptor, Tag);
Pin->Descriptor->AllocatorFraming = NewAllocatorFraming;
La llamada a KsEdit garantiza que Pin-Descriptor> es memoria dinámica asociada a Pin. Tenga en cuenta que la modificación arbitraria de descriptores y otras estructuras AVStream puede provocar resultados no deseados. Los minidrivers deben tener precaución al usar KsEdit en estructuras AVStream.
KsEditSized llama a _KsEdit con los mismos parámetros que recibe, excepto que Object se reemplaza por Object-Bag> y el puntero es typecast a PVOID.
Tenga en cuenta que al llamar a _KsEdit, un llamador debe contener la exclusión mutua asociada con la bolsa. Para obtener más información, vea Bolsas de objetos y exclusión mutua en AVStream.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Microsoft Windows XP y sistemas operativos posteriores y DirectX 8.0 y versiones posteriores de DirectX. |
Plataforma de destino | Universal |
Encabezado | ks.h (incluya Ks.h) |
Library | Ks.lib |
IRQL | PASSIVE_LEVEL |