Función KsPropertyHandlerWithAllocator (ks.h)

KsPropertyHandlerWithAllocator realiza el mismo control que KsPropertyHandler, 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. IRP_BUFFERED_IO y las marcas de IRP_DEALLOCATE_BUFFER no se establecen al usar un asignador personalizado.

Sintaxis

KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
  [in]           PIRP                 Irp,
  [in]           ULONG                PropertySetsCount,
  [in]           const KSPROPERTY_SET *PropertySet,
  [in, optional] PFNKSALLOCATOR       Allocator,
  [in, optional] ULONG                PropertyItemSize
);

Parámetros

[in] Irp

Especifica el IRP con la solicitud de propiedad que se está administrando.

[in] PropertySetsCount

Especifica el número de conjuntos de propiedades que se pasan.

[in] PropertySet

Especifica el puntero a una matriz de información del conjunto de propiedades.

[in, optional] Allocator

Opcionalmente, apunta a una función de asignación que se usa para asignar memoria para almacenar los parámetros de propiedad.

[in, optional] PropertyItemSize

Opcionalmente, contiene el tamaño de cada estructura KSPROPERTY_ITEM en las propiedades. El elemento de propiedad 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 propiedad, se puede usar la macro KSPROPERTY_ITEM_IRP_STORAGE para devolver un puntero al elemento de propiedad 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 KsPropertyHandler devuelve STATUS_SUCCESS si se ejecuta correctamente o un error específico de la propiedad que se está controlando si no se realiza correctamente. La función establece el miembro Irp-IoStatus.Information>, ya sea estableciendo en cero debido a un error interno o a través de un controlador de propiedades que lo establece. La función no establece el miembro lrp-IoStatus.Status> ni completa 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.

Comentarios

KsPropertyHandlerWithAllocator coloca un puntero a la estructura de KSPROPERTY_ITEM pertinente en el parámetro Irp-Tail.Overlay.DriverContext> del IRP. El minidriver puede usar la macro KSPROPERTY_ITEM_IRP_STORAGE, definida en ks.h, para acceder a este puntero.

Requisitos

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

Consulte también

KsFastPropertyHandler

KsPropertyHandler