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.
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) |