Поделиться через


функция _KsEdit (ks.h)

Функция KsEdit гарантирует, что заданный элемент динамически выделяется и связан с объектом AVStream через контейнер объектов.

Синтаксис

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

Параметры

[in] ObjectBag

KSOBJECT_BAG (эквивалент тип PVOID) для использования в проверке. Если элемент не содержится в контейнере объектов, KsEdit динамически выделяет достаточно памяти для элемента, копирует старое содержимое и помещает только что выделенную память в этот контейнер объектов.

[in, out] PointerToPointerToItem

Указатель на указатель на редактируемый элемент.

[in] NewSize

Количество байтов, выделяемых для элемента.

[in] OldSize

Количество байтов, которое в данный момент занимает элемент.

[in] Tag

Содержит тег пула, используемый для выделения. Драйверы обычно указывают тег пула в виде строки до четырех символов, разделенных одними кавычками. Строка обычно указывается в обратном порядке. Значение ASCII каждого символа в теге должно быть от 0 до 127.

Возвращаемое значение

Возвращает успех или STATUS_INSUFFICIENT_RESOURCES.

Замечания

Обратите внимание, что KsEdit и KsEditSized являются макросами, которые упрощают использование _KsEdit. Хотя _KsEdit позволяет изменить размер элемента, KsEdit нет. Макрос KsEdit вызывает _KsEdit, указав sizeof(** PointerToPointerToItem) в качестве обоих размеров.

Например, рассмотрим пин-код, который должен изменить его выделение при создании. Так как дескриптор статически закодирован и новые пин-коды могут использовать его, решение заключается в изменении дескриптора пин-кода следующим образом:

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

Вызов KsEdit гарантирует, что пин->дескриптор является динамической памятью, связанной с закреплением. Обратите внимание, что произвольное изменение дескрипторов и других структур AVStream может привести к нежелательным результатам. Мини-drivers должны проявлять осторожность при использовании KsEdit в структурах AVStream.

вызовы _KsEdit KsEditSized с теми же параметрами, которые он получает, за исключением того, что объекта заменяется Object->Bag, а указатель будет вводиться в PVOID.

Обратите внимание, что при вызове _KsEditвызывающий объект должен содержать мьютекс, связанный с сумкой. Дополнительные сведения см. в пакетах объектов и мьютексах в AVStream.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Microsoft Windows XP и более поздних операционных системах и версиях DirectX 8.0 и более поздних версий DirectX.
целевая платформа Всеобщий
заголовка ks.h (include Ks.h)
библиотеки Ks.lib
IRQL PASSIVE_LEVEL