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.
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
[in] Filter
Puntero al KSFILTER de.
[in] Irp
Puntero al IRP para Filtro.
Si la rutina se realiza correctamente, devuelva STATUS_SUCCESS o el código de error.
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. |
Requisito | Valor |
---|---|
de la plataforma de destino de | Escritorio |
encabezado de | ks.h (incluya Ks.h) |
irQL | PASSIVE_LEVEL (consulte la sección Comentarios) |
KSFILTER_DISPATCH KsCompletePendingRequest