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) |