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

Se llama a una rutina AVStrMiniFilterCreate de un minidriver avStream cuando un filtro recibe un IRP.

IRP_MJ_CREATE

IRP_MJ_CLOSE

Sintaxis

PFNKSFILTERIRP Pfnksfilterirp;

NTSTATUS Pfnksfilterirp(
  [in] PKSFILTER Filter,
  [in] PIRP Irp
)
{...}

Parámetros

[in] Filter

Puntero al KSFILTER.

[in] Irp

Puntero al IRP para Filter.

Valor devuelto

Si la rutina se realiza correctamente, devuelva STATUS_SUCCESS o el código de error.

Comentarios

IRP Descripción
IRP_MJ_CREATE Normalmente, los minidrivers usan esta rutina que quieren inicializar el contexto y los recursos asociados al filtro. El minidriver especifica la dirección de esta rutina en el miembro Create de su estructura de KSFILTER_DISPATCH . En el momento en el que se llama a la rutina, el objeto de archivo tiene un contexto asociado y se ha asignado el encabezado del objeto KS. Se llama a esta rutina en IRQL = PASSIVE_LEVEL con la exclusión mutua del dispositivo. Si la rutina se realiza correctamente, se garantiza que la operación de creación se realice correctamente. Devuelve STATUS_SUCCESS o el código de error que se devolvió del intento de crear el filtro. STATUS_PENDING también es un código de retorno legal. Si un minidriver devuelve STATUS_PENDING, AVStream no completará el IRP_MJ_CREATE inmediatamente. Antes de devolver STATUS_PENDING, el minidriver debe llamar a IoMarkIrpPending. Cuando se complete el procesamiento de la creación, el minidriver debe establecer el código de estado del IRP y, a continuación, llamar a KsCompletePendingRequest. Esta rutina es opcional.
IRP_MJ_CLOSE El minidriver especifica la dirección de esta rutina en el miembro Close de su estructura de KSFILTER_DISPATCH . En el momento en el que se llama a la rutina, se han liberado los eventos registrados en el filtro, pero el objeto está intacto. Se llama a esta rutina en IRQL = PASSIVE_LEVEL con la exclusión mutua del dispositivo. Para obtener más información sobre las exclusión mutuas, vea Exclusión mutua en AVStream. Esta rutina es opcional. Devuelve STATUS_SUCCESS o STATUS_PENDING. Si un minidriver devuelve STATUS_PENDING, AVStream no completará el IRP_MJ_CLOSE inmediatamente. Sin embargo, antes de devolver STATUS_PENDING, el minidriver debe llamar a IoMarkIrpPending. Una vez completado el procesamiento del cierre, el minidriver debe establecer el código de estado del IRP y, a continuación, llamar a KsCompletePendingRequest.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado ks.h (incluya Ks.h)
IRQL PASSIVE_LEVEL (consulte la sección Comentarios)

Consulte también

IoMarkIrpPending

KSFILTER_DISPATCHKsCompletePendingRequest