Funzione KsPinGetTrailingEdgeStreamPointer (ks.h)
La funzione KsPinGetTrailingEdgeStreamPointer acquisisce il puntatore del flusso di arco finale per la coda associata al pin specificato.
Sintassi
KSDDKAPI PKSSTREAM_POINTER KsPinGetTrailingEdgeStreamPointer(
[in] PKSPIN Pin,
[in] KSSTREAM_POINTER_STATE State
);
Parametri
[in] Pin
Puntatore alla struttura KSPIN per la cui coda restituisce il puntatore del flusso di bordo finale.
[in] State
Questo parametro specifica lo stato in cui acquisire il puntatore del flusso di arco finale. Può essere uno dei seguenti:
KSSTREAM_POINTER_STATE_UNLOCKED
Acquisire il puntatore del flusso perimetrale iniziale indipendentemente dal fatto che faccia riferimento o meno a un frame di dati.
Non è possibile eseguire alcun tentativo di accesso ai dati associati al puntatore fino a quando il puntatore non viene bloccato. Si noti anche che i fotogrammi associati a un puntatore di flusso sbloccato possono essere annullati.
KSSTREAM_POINTER_STATE_LOCKED
Acquisire e bloccare il puntatore del flusso perimetrale iniziale. Se al puntatore di flusso non è associato alcun frame di dati, restituire NULL. Se viene restituito un puntatore nullnon, si tratta di un puntatore di flusso bloccato e a cui è associato un frame di dati. I fotogrammi associati a un puntatore di flusso bloccato non possono essere annullati.
Valore restituito
KsPinGetTrailingEdgeStreamPointer restituisce un puntatore a una struttura KSSTREAM_POINTER che rappresenta il puntatore del flusso di bordo finale o NULL. Un valore restituito di NULL può indicare che non esiste alcun bordo finale per la coda associata al pin. In questo caso, il descrittore di pin probabilmente non specifica che il pin deve avere un bordo finale distinto. In alternativa, NULL può indicare che al pin non è associata alcuna coda. In questo caso, il pin in questione non utilizza il meccanismo di trasporto standard. Un valore restituito di NULL può anche indicare che un tentativo di bloccare il bordo finale non è riuscito. In altre parole, al bordo iniziale non è attualmente associato alcun frame di dati.
Osservazioni
Il puntatore del flusso di arco finale è un puntatore speciale nel flusso di dati esistente se e solo se il descrittore di pin per il pin specifica un bordo finale distinto. Se questo puntatore esiste, punta ai dati meno recenti nella coda, a meno che non venga specificatamente avanzata da un KsStreamPointerAdvanceXxx o una chiamata KsStreamPointerUnlock. I dati meno recenti possono esistere nella coda anche se esistono puntatori di flusso clonati per fotogrammi precedenti a quelli a cui punta il bordo finale.
I frame di dati che risiedono nella finestra tra il puntatore del flusso del bordo iniziale e il puntatore del flusso di bordo finale hanno almeno un conteggio dei riferimenti e quindi non lasceranno la coda e verranno completati fino a quando non escono dalla finestra in seguito all'avanzamento del bordo finale. Si noti che i fotogrammi tra il bordo iniziale e il bordo finale sono non bloccati per impostazione predefinita e pertanto possono essere annullati.
KsPinGetTrailingEdgeStreamPointer è principalmente utilizzato nei filtri incentrati sui pin. Per altre informazioni, vedere Pin-Centric Processing e Filter-Centric Processing.
KsPinGetTrailingEdgeStreamPointer non funzionerà a meno che il descrittore pin per il pin specifichi che la coda deve avere un bordo finale distinto impostando il flag di KSPIN_FLAG_DISTINCT_TRAILING_EDGE.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Microsoft Windows XP e nei sistemi operativi successivi e in DirectX 8.0 e versioni successive di DirectX. |
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |
IRQL | <=DISPATCH_LEVEL |
Vedere anche
KsPinGetLeadingEdgeStreamPointer