Compartir a través de


Función KsMethodHandlerWithAllocator (ks.h)

Las funciones KsMethodHandlerWithAllocator realizan el mismo control que KsMethodHandler, con las mismas restricciones, pero permite usar una devolución de llamada de asignador opcional para proporcionar un búfer para los parámetros. Si se usa, es posible que el filtro tenga que liberar el búfer de alguna manera no convencional. Tenga en cuenta que las marcas IRP_BUFFERED_IO y IRP_DEALLOCATE_BUFFER no se establecen al usar un asignador personalizado.

Sintaxis

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

Parámetros

[in] Irp

Especifica el IRP con la solicitud de método que se está controlando.

[in] MethodSetsCount

Indica el número de estructuras de conjunto de métodos que se pasan.

[in] MethodSet

Especifica el puntero a la lista de información del conjunto de métodos.

[in, optional] Allocator

Opcionalmente, apunta a una función de asignación que se usará para asignar memoria para almacenar los parámetros del método.

[in, optional] MethodItemSize

Opcionalmente, contiene el tamaño de cada estructura de KSMETHOD_ITEM en cada lista de métodos. El elemento de método se puede extender para almacenar información privada. Si este parámetro es cero, se supone que el tamaño de la estructura es normal. Si es mayor o igual que una estructura de elementos de método, se puede usar la macro KSMETHOD_ITEM_IRP_STORAGE para devolver un puntero al elemento de método para que se puedan recuperar los datos personalizados. En plataformas de 64 bits, este parámetro debe ser un múltiplo de 8.

Valor devuelto

La función KsMethodHandler devuelve STATUS_SUCCESS si se ejecuta correctamente o un error específico del método que se está controlando si no se realiza correctamente. La función siempre establece el IO_STATUS_BLOCK. Campo de información del PIRP. Elemento IoStatus dentro del IRP a cero debido a un error interno, o bien un controlador de método establece el elemento . La función no establece el IO_STATUS_BLOCK. Campo de estado ni completado el IRP.

En plataformas de 64 bits, si el parámetro PropertyItemSize no es un múltiplo de 8, se devuelve STATUS_INVALID_PARAMETER y se produce un error en la llamada.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ks.h (incluye Ks.h)
Library Ks.lib