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