Estructura KSPROCESSPIN (ks.h)

La estructura KSPROCESSPIN describe el estado del proceso de un pin específico.

Sintaxis

typedef struct _KSPROCESSPIN {
  PKSPIN            Pin;
  PKSSTREAM_POINTER StreamPointer;
  PKSPROCESSPIN     InPlaceCounterpart;
  PKSPROCESSPIN     DelegateBranch;
  PKSPROCESSPIN     CopySource;
  PVOID             Data;
  ULONG             BytesAvailable;
  ULONG             BytesUsed;
  ULONG             Flags;
  BOOLEAN           Terminate;
} KSPROCESSPIN, *PKSPROCESSPIN;

Miembros

Pin

Puntero a una estructura KSPIN que describe la estructura KSPROCESSPIN. Todo en la estructura hace referencia a este KSPIN.

StreamPointer

Puntero a una estructura de KSSTREAM_POINTER que apunta al flujo de entrada en la ubicación de entrada actual o en el flujo de salida en la ubicación de salida actual. Esto se puede usar, por ejemplo, mediante patillas de salida para marcar información en el KSSTREAM_HEADER asociado (ProcessPin-StreamPointer-StreamHeader-Flags>>>=...).

InPlaceCounterpart

Puntero a una estructura KSPROCESSPIN. Si este KSPROCESSPIN no forma parte de una transformación inplace , AVStream establece InPlaceCounterpart en NULL. Si este KSPROCESSPIN es la entrada de una transformación inplace, InPlaceCounterpart apunta al pin del proceso de salida para la transformación. Si este KSPROCESSPIN es la salida de una transformación inplace, InPlaceCounterpart apunta al pin del proceso de entrada para la transformación.

DelegateBranch

Puntero a una estructura KSPROCESSPIN. Si los fotogramas que salen de este KSPROCESSPIN se dividen y se envían a varios pines receptores, y la división no provoca una copia de datos (es decir, la división envía los fotogramas de una manera de solo lectura y todas las instancias de patillas divididas están en la misma canalización), DelegateBranch apunta a la primera instancia del pin de proceso. El divisor controla automáticamente cualquier patilla de proceso que tenga un delegateBranch que no sea NULL.

CopySource

Puntero a una estructura KSPROCESSPIN. Si los fotogramas que salen de este pin de proceso se dividen y se envían a varios pines receptores de una manera que provoca una copia de datos (es decir, uno de los filtros de bajada está modificando el marco de datos mediante una transformación en contexto), CopySource apunta al pin de proceso desde el que se copió el fotograma. El divisor controla automáticamente cualquier patilla de proceso que tenga un CopySource que no sea NULL.

Data

Puntero a un búfer. Si el pin descrito por esta entrada de proceso es un pin de entrada, Data apunta al siguiente byte disponible de los datos que se van a introducir. Si el pin descrito por esta entrada de proceso es un pin de salida, Data apunta a un búfer de salida en el que se colocan los datos procesados.

BytesAvailable

Este miembro especifica cuántos bytes de datos están disponibles en Data.

BytesUsed

Este miembro especifica cuántos bytes de esta trama de datos ha usado la función de proceso. Los controladores AVStream deben establecer este miembro para actualizar la cantidad que han leído o escrito.

Flags

Este miembro contiene una copia de las marcas de la estructura de KSSTREAM_HEADER pertinente, si este KSPROCESSPIN es un pin de entrada.

Terminate

Este miembro indica si el marco de datos actual debe enviarse de bajada una vez finalizada la distribución del proceso. Si es TRUE, el marco se envía de bajada incluso si no se han consumido todos los datos. Si es FALSE, el marco no se libera hasta que se consuman todos los datos.

Comentarios

La estructura KSPROCESSPIN se usa en el modelo de procesamiento centrado en filtros . Puede usar esta estructura para acceder a los datos de un pin de entrada específico o para escribir datos procesados en un pin de salida.

Solo los clientes centrados en filtros usan patillas de proceso. Además, los patillas de proceso que tienen un DelegateBranch distinto de NULL o un copySource que no es NULL normalmente no son de preocupación para el cliente. El divisor controla automáticamente las patillas de proceso con estos punteros.

La mayoría de los clientes se preocupan por los miembros Pin, Data, BytesAvailable, BytesUsed, Flags y Terminate. Los datos se pueden leer de la secuencia o escribirlos en el flujo a través del miembro Data ; BytesAvailable indica al cliente cuántos bytes de datos están disponibles en la trama de datos actual (búfer) a la que apunta Data . A medida que el minidriver de cliente lee o escribe en la secuencia, BytesUsed debe actualizarse para reflejar cuántos bytes de datos se han consumido. La marca Terminate se puede establecer si el minidriver se realiza con el marco actual a pesar de que BytesUsed no es igual a BytesAvailable. Una vez que el minidriver sale del envío de procesamiento, los punteros están avanzados y los marcos se completan según corresponda.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Microsoft Windows XP y sistemas operativos posteriores y en Microsoft DirectX 8.0 y versiones posteriores.
Encabezado ks.h (incluya Ks.h)

Consulte también

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER