функция _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 гарантирует, что дескриптор pin-descriptor> является динамической памятью, связанной с pin. Обратите внимание, что произвольное изменение дескрипторов и других структур AVStream может привести к нежелательным результатам. Мини-драйверы должны проявлять осторожность при использовании KsEdit в структурах AVStream.

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

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

Требования

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