Функция 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)

См. также раздел

KsFastPropertyHandler

KsPropertyHandler