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