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