Función KsPropertyHandlerWithAllocator (ks.h)
El 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 de 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 elemento 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 controla 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.
Observaciones
KsPropertyHandlerWithAllocator coloca un puntero a la estructura de KSPROPERTY_ITEM pertinente en el parámetro Irp->Tail.Overlay.DriverContext en IRP. El minidriver puede usar la macro KSPROPERTY_ITEM_IRP_STORAGE, definida en ks.h, para acceder a este puntero.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Universal |
encabezado de | ks.h (incluya Ks.h) |