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 de 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 de 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 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 del proceso. El divisor controla automáticamente cualquier patilla de proceso que tenga unNULLDelegateBranch.
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 marco. El divisor controla automáticamente cualquier patilla de proceso que tenga unNULLCopySource.
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 datos que se va 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 cuánto 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 la trama de datos actual debe enviarse de bajada después de que finalice el envío del proceso. Si TRUE, el marco se envía de bajada incluso si no se han consumido todos los datos. Si FALSE, el marco no se libera hasta que se consumen todos los datos.
Observaciones
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 pines de proceso que tienen unnull que noNULL o unNULLCopySource normalmente no son preocupantes 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, bytes BytesUsed, Flagsy Terminate. Los datos se pueden leer de la secuencia o escribirlos en ella a través del miembro de Datos; BytesAvailable indica al cliente cuántos bytes de datos están disponibles en el marco de datos actual (búfer) al 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 Finalizar 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 fotogramas se completan según corresponda.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible en Microsoft Windows XP y sistemas operativos posteriores y en Microsoft DirectX 8.0 y versiones posteriores. |
encabezado de | ks.h (incluya Ks.h) |