Функция 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> в IRP. Мини-диск может использовать макрос KSPROPERTY_ITEM_IRP_STORAGE, определенный в ks.h, для доступа к этому указателю.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ks.h (включая Ks.h) |