функция _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 |