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


Функция KsPropertyHandlerWithAllocator (ks.h)

KsPropertyHandlerWithAllocator выполняет ту же обработку, что и KsPropertyHandler, с теми же ограничениями, но позволяет использовать дополнительный обратный вызов распределителя для предоставления буфера для параметров. При использовании фильтру может потребоваться освободить буфер нестандартно. флаги IRP_BUFFERED_IO и IRP_DEALLOCATE_BUFFER не задаются при использовании настраиваемого распределителя.

Синтаксис

KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
  [in]           PIRP                 Irp,
  [in]           ULONG                PropertySetsCount,
  [in]           const KSPROPERTY_SET *PropertySet,
  [in, optional] PFNKSALLOCATOR       Allocator,
  [in, optional] ULONG                PropertyItemSize
);

Параметры

[in] Irp

Задает IRP с обрабатываемыми запросами свойств.

[in] PropertySetsCount

Указывает количество передаваемых наборов свойств.

[in] PropertySet

Указывает указатель на массив сведений о наборе свойств.

[in, optional] Allocator

При необходимости указывает на функцию выделения, используемую для выделения памяти для хранения параметров свойства.

[in, optional] PropertyItemSize

При необходимости содержит размер каждой KSPROPERTY_ITEM структуры в свойствах. Элемент свойства может быть расширен для хранения частной информации. Если этот параметр равен нулю, предполагается, что размер структуры является нормальным. Если оно больше или равно структуре элемента свойства, то для возврата указателя на элемент свойства можно использовать макрос KSPROPERTY_ITEM_IRP_STORAGE, чтобы получить пользовательские данные. На 64-разрядных платформах этот параметр должен быть кратным из 8.

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

Функция KsPropertyHandler возвращает STATUS_SUCCESS в случае успешного выполнения или ошибки, конкретной для свойства, обрабатываемого в случае неудачи. Функция задает элемент Irp->IoStatus.Information либо путем задания нуля из-за внутренней ошибки, либо с помощью параметра обработчика свойств. Функция не задает элемент lrp->IoStatus.Status и не завершает IRP.

На 64-разрядных платформах, если параметр PropertyItemSize не является 8, возвращается STATUS_INVALID_PARAMETER, а вызов завершается ошибкой.

Замечания

KsPropertyHandlerWithAllocator помещает указатель на соответствующую KSPROPERTY_ITEM структуру в параметре IRP ->Tail.Overlay.DriverContext. Мини-driver может использовать макрос KSPROPERTY_ITEM_IRP_STORAGE, определенный в ks.h, для доступа к этому указателю.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ks.h (include Ks.h)

См. также

KsFastPropertyHandler

KsPropertyHandler