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


Функция 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 (include Ks.h)
библиотеки Ks.lib