Compartir a través de


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 llamadas a KsEnableEventWithAllocator, KsPropertyHandlerWithAllocatory 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

Establézcalo 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.

Observaciones

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 al permitirles 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.

Dado que esta memoria probablemente 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ónicos, 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 Valor
de la plataforma de destino de Escritorio
encabezado de ks.h (incluya Ks.h)