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

Функции KsMethodHandlerWithAllocator выполняют ту же обработку, что и KsMethodHandler, с теми же ограничениями, но позволяют использовать необязательный обратный вызов распределителя для предоставления буфера для параметров. При использовании фильтра может потребоваться освободить буфер каким-то нестандартным способом. Обратите внимание, что флаги IRP_BUFFERED_IO и IRP_DEALLOCATE_BUFFER не устанавливаются при использовании пользовательского распределителя.

Синтаксис

KSDDKAPI NTSTATUS KsMethodHandlerWithAllocator(
  [in]           PIRP               Irp,
  [in]           ULONG              MethodSetsCount,
  [in]           const KSMETHOD_SET *MethodSet,
  [in, optional] PFNKSALLOCATOR     Allocator,
  [in, optional] ULONG              MethodItemSize
);

Параметры

[in] Irp

Указывает IRP с обрабатываемым запросом метода.

[in] MethodSetsCount

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

[in] MethodSet

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

[in, optional] Allocator

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

[in, optional] MethodItemSize

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

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

Функция KsMethodHandler возвращает STATUS_SUCCESS в случае успешного выполнения или ошибку, специфичную для обрабатываемого метода в случае сбоя. Функция всегда задает IO_STATUS_BLOCK. Информационное поле ПИРП. Элемент IoStatus в IRP равен нулю из-за внутренней ошибки или элемент задается обработчиком метода. Функция не задает IO_STATUS_BLOCK. Поле состояния и не заполнение IRP.

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib