Función de devolución de llamada PFNKSALLOCATOR (ks.h)

Los minidrivers pueden proporcionar opcionalmente una función de devolución de llamada de tipo PFNKSALLOCATOR como parámetro en las llamadas a KsEnableEventWithAllocator, KsPropertyHandlerWithAllocator y KsMethodHandlerWithAllocator.

Sintaxis

PFNKSALLOCATOR Pfnksallocator;

NTSTATUS Pfnksallocator(
  [in] PIRP Irp,
  [in] ULONG BufferSize,
  [in] BOOLEAN InputOperation
)
{...}

Parámetros

[in] Irp

Especifica el IRP para el que se realiza la solicitud de asignación del búfer.

[in] BufferSize

Especifica el tamaño del búfer necesario. Este tamaño cubre todos los parámetros de la solicitud.

[in] InputOperation

Se establece en TRUE si se trata de una operación de entrada, lo que significa que, si se devuelve correctamente, el campo Irp-IoStatus.Information> contendrá el número de bytes que se van a copiar en el búfer de entrada original.

Valor devuelto

Devuelve STATUS_SUCCESS si se controla la solicitud. De lo contrario, devuelve un código de error adecuado.

Comentarios

Normalmente, la memoria del grupo se usa para las asignaciones de búfer. Esto permite que los filtros que pasen consultas de eventos, propiedades y métodos directamente al hardware para evitar copias de datos adicionales, lo que les permite proporcionar el búfer en el que las funciones de control estándar colocan dichos datos. Por lo tanto, un filtro puede tener bloques de memoria que ya se han asignado a un adaptador desde el que se pueden producir asignaciones de búfer.

Puesto que esta memoria presumiblemente no es la memoria asignada por el grupo típica, el filtro debe realizar la limpieza del búfer al finalizar irp. Esto significa que para las operaciones de entrada del modo de usuario que no son sincrónicas, el asignador debe asignar un MDL para el búfer de destino, sondearlo y bloquearlo y recuperar una dirección del sistema. Esto debe hacerse para habilitar la copia de los datos devueltos en el búfer original.

Requisitos

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