Leer en inglés

Compartir a través de


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

Se llama a una rutina de AVStrMiniFilterCreate de un minidriver de 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 de.

[in] Irp

Puntero al IRP para Filtro.

Valor devuelto

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

Observaciones

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 Crear de su estructura de KSFILTER_DISPATCH. En el punto 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. Esta rutina se llama 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 devolución 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. Una vez completado 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 que se llama a la rutina, se han liberado todos los eventos registrados en el filtro, pero el objeto está intacto. Esta rutina se llama 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 Valor
de la plataforma de destino de Escritorio
encabezado de ks.h (incluya Ks.h)
irQL PASSIVE_LEVEL (consulte la sección Comentarios)

Consulte también

ioMarkIrpPending

KSFILTER_DISPATCH KsCompletePendingRequest