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