Structure KSPROCESSPIN (ks.h)
La structure KSPROCESSPIN décrit l’état du processus d’une broche spécifique.
Syntaxe
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;
Membres
Pin
Pointeur vers une structure KSPIN que la structure KSPROCESSPIN décrit. Tout ce qui se trouve dans la structure fait référence à ce KSPIN.
StreamPointer
Pointeur vers une structure KSSTREAM_POINTER qui pointe vers le flux d’entrée à l’emplacement d’entrée actuel ou dans le flux de sortie à l’emplacement de sortie actuel. Cela peut être utilisé, par exemple, par des broches de sortie pour marquer des informations sur le KSSTREAM_HEADER associé (ProcessPin->StreamPointer->StreamHeader->Flags=...).
InPlaceCounterpart
Pointeur vers une structure KSPROCESSPIN. Si ce KSPROCESSPIN ne fait pas partie d’une transformation de inplace, AVStream définit InPlaceCounterpart sur NULL. Si ce KSPROCESSPIN est l’entrée d’une transformation inplace, InPlaceCounterpart pointe vers la broche de processus de sortie de la transformation. Si ce KSPROCESSPIN est la sortie d’une transformation inplace, InPlaceCounterpart pointe vers la broche du processus d’entrée pour la transformation.
DelegateBranch
Pointeur vers une structure KSPROCESSPIN. Si les images provenant de ce KSPROCESSPIN sont fractionnées et envoyées à plusieurs broches récepteurs, et que le fractionnement n’entraîne pas de copie de données (autrement dit, le fractionnement envoie les images de manière en lecture seule et toutes les instances de broche fractionnée se trouvent dans le même canal), DelegateBranch pointe vers la première instance de la broche de processus. Le séparateur gère automatiquement n’importe quelle broche de processus qui a uneNULLDelegateBranch.
CopySource
Pointeur vers une structure KSPROCESSPIN. Si les images sortant de cette broche de processus sont fractionnées et envoyées à plusieurs broches récepteurs d’une manière qui provoque une copie de données (autrement dit, l’un des filtres en aval modifie la trame de données à l’aide d’une transformation sur place), CopySource pointe vers la broche de processus à partir de laquelle l’image a été copiée. Le séparateur gère automatiquement toutes les broches de processus qui ont uneNULLCopySource.
Data
Pointeur vers une mémoire tampon. Si l’épingle décrite par cette entrée de processus est une broche d’entrée, Données pointe vers l’octet disponible suivant des données à entrer. Si l’épingle décrite par cette entrée de processus est une broche de sortie, Data pointe vers une mémoire tampon de sortie dans laquelle les données traitées sont placées.
BytesAvailable
Ce membre spécifie le nombre d’octets de données disponibles dans data.
BytesUsed
Ce membre spécifie le nombre d’octets de cette trame de données utilisés par la fonction de processus. Les pilotes AVStream doivent définir ce membre pour mettre à jour la quantité de lecture ou d’écriture.
Flags
Ce membre contient une copie des indicateurs de la structure KSSTREAM_HEADER appropriée, si ce KSPROCESSPIN est une broche d’entrée.
Terminate
Ce membre indique si la trame de données actuelle doit être envoyée en aval une fois la distribution du processus terminée. Si TRUE, la trame est envoyée en aval même si toutes les données n’ont pas été consommées. Si FAUX, le frame n’est pas libéré tant que toutes les données ne sont pas consommées.
Remarques
La structure KSPROCESSPIN est utilisée dans le modèle de traitement centré sur le filtre. Vous pouvez utiliser cette structure pour accéder aux données sur une broche d’entrée spécifique ou pour écrire des données traitées dans une broche de sortie.
Seuls les clients centrés sur les filtres utilisent des broches de processus. De plus, les broches de processus qui ont uneNULLDelegateBranch ou uneNULLCopySource ne sont généralement pas préoccupés par le client. Le séparateur gère automatiquement les broches de processus avec ces pointeurs.
La plupart des clients sont préoccupés par les membres Épingler, Data, BytesAvailable , BytesUsed, Flagset Arrêter. Les données peuvent être lues à partir du flux ou écrites dans le flux via le membre Data ; BytesAvailable indique au client le nombre d’octets de données disponibles dans la trame de données actuelle (mémoire tampon) vers laquelle données pointe. Lorsque le minidriver client lit ou écrit dans le flux, octets utilisés doivent être mis à jour pour refléter le nombre d’octets de données consommés. L’indicateur Terminer peut être défini si le minidriver est effectué avec l’image actuelle malgré le fait que octets Used n’est pas égal à BytesAvailable. Une fois que le minidriver quitte la distribution de traitement, les pointeurs sont avancés et les images sont terminées selon les besoins.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible dans Microsoft Windows XP et les systèmes d’exploitation ultérieurs et dans Microsoft DirectX 8.0 et versions ultérieures. |
d’en-tête | ks.h (include Ks.h) |