Struttura KSPROCESSPIN (ks.h)
La struttura KSPROCESSPIN descrive lo stato del processo di un pin specifico.
Sintassi
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;
Membri
Pin
Puntatore a una struttura KSPIN descritta dalla struttura KSPROCESSPIN. Tutto nella struttura si riferisce a questo KSPIN.
StreamPointer
Puntatore a una struttura KSSTREAM_POINTER che punta al flusso di input nella posizione di input corrente o nel flusso di output nella posizione di output corrente. Può essere usato, ad esempio, dai pin di output per stampare le informazioni sul KSSTREAM_HEADER associato (ProcessPin->StreamPointer->StreamHeader->Flags=...).
InPlaceCounterpart
Puntatore a una struttura KSPROCESSPIN. Se questo KSPROCESSPIN non fa parte di una trasformazione inplace, AVStream imposta InPlaceCounterpart su NULL. Se questo KSPROCESSPIN è l'input di una trasformazione inplace, InPlaceCounterpart punta al pin del processo di output per la trasformazione. Se questo KSPROCESSPIN è l'output di una trasformazione inplace, InPlaceCounterpart punta al pin del processo di input per la trasformazione.
DelegateBranch
Puntatore a una struttura KSPROCESSPIN. Se i fotogrammi che escono da questo KSPROCESSPIN vengono suddivisi e inviati a più pin sink e la divisione non causa una copia dei dati (ovvero la divisione invia i fotogrammi in modo di sola lettura e tutte le istanze del pin diviso si trovano nella stessa pipe), DelegateBranch punta alla prima istanza del pin del processo. Il separatore gestisce automaticamente qualsiasi pin di processo con unNULLDelegateBranch.
CopySource
Puntatore a una struttura KSPROCESSPIN. Se i fotogrammi che escono da questo pin di processo vengono suddivisi e inviati a più pin sink in modo da causare una copia dei dati (ovvero uno dei filtri downstream sta modificando il frame di dati usando una trasformazione sul posto), CopySource punta al pin del processo da cui è stato copiato il fotogramma. Il componente di divisione gestisce automaticamente qualsiasi pin di processo con unNULLCopySource.
Data
Puntatore a un buffer. Se il pin descritto da questa voce di processo è un pin di input, Data punta al byte successivo disponibile di dati da immettere. Se il pin descritto da questa voce di processo è un pin di output, Data punta a un buffer di output in cui vengono inseriti i dati elaborati.
BytesAvailable
Questo membro specifica il numero di byte di dati disponibili in Data.
BytesUsed
Questo membro specifica il numero di byte di questo frame di dati utilizzato dalla funzione di processo. I driver AVStream devono impostare questo membro per aggiornare la quantità di lettura o scrittura.
Flags
Questo membro contiene una copia dei flag dalla struttura di KSSTREAM_HEADER pertinente, se questo KSPROCESSPIN è un pin di input.
Terminate
Questo membro indica se il frame di dati corrente deve essere inviato a valle al termine dell'invio del processo. Se TRUE, il frame viene inviato downstream anche se tutti i dati non sono stati utilizzati. Se FALSE, il frame non viene rilasciato finché non vengono utilizzati tutti i dati.
Osservazioni
La struttura KSPROCESSPIN viene usata nel modello di elaborazione incentrato sui filtri. È possibile usare questa struttura per accedere ai dati su un pin di input specifico o per scrivere dati elaborati in un pin di output.
Solo i client incentrati sui filtri usano pin di processo. Inoltre, i pin di processo che hanno unNULLDelegateBranch o unNULLCopySource in genere non sono preoccupanti per il client. Il separatore gestisce automaticamente i pin di processo con questi puntatori.
La maggior parte dei client riguarda i membri Pin, Data, BytesAvailable, Byteused, flag e Terminate. I dati possono essere letti dal flusso o scritti nel flusso tramite il membro data; byte Disponibili indica al client il numero di byte di dati disponibili nel frame di dati corrente (buffer) a cui dati punta. Quando il minidriver client legge o scrive nel flusso, byteusi deve essere aggiornato per riflettere il numero di byte di dati utilizzati. Il flag Termina può essere impostato se il minidriver viene eseguito con il fotogramma corrente, nonostante il fatto che ByteUsed non sia uguale a ByteAvailable. Dopo che il minidriver esce dall'invio di elaborazione, i puntatori sono avanzati e i fotogrammi vengono completati in base alle esigenze.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Microsoft Windows XP e nei sistemi operativi successivi e in Microsoft DirectX 8.0 e versioni successive. |
intestazione | ks.h (include Ks.h) |