Funzione KsPinGetTrailingEdgeStreamPointer (ks.h)

La funzione KsPinGetTrailingEdgeStreamPointer acquisisce il puntatore del flusso perimetrale 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 perimetrale finale.

[in] State

Questo parametro specifica lo stato in cui acquisire il puntatore del flusso perimetrale finale. Può essere uno dei valori seguenti:

KSSTREAM_POINTER_STATE_UNLOCKED

Acquisire il puntatore al flusso perimetrale principale indipendentemente dal fatto che faccia riferimento a un frame di dati o meno.

Non è possibile eseguire tentativi di accesso a tutti i dati associati al puntatore finché il puntatore non è 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 al flusso perimetrale principale. Se non è associato alcun frame di dati al puntatore di flusso, restituire NULL. Se viene restituito un puntatore nonNull , è un puntatore di flusso bloccato e ha un frame di dati associato. 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 perimetrale 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 non esiste alcuna coda associata al pin. In questo caso, il pin in questione non usa il meccanismo di trasporto standard. Un valore restituito di NULL può anche indicare che un tentativo di blocco del bordo finale non è riuscito. In altre parole, non esiste un frame di dati attualmente associato al bordo principale.

Commenti

Il puntatore di flusso perimetrale finale è un puntatore speciale nel flusso di dati che esiste 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 siano stati avanzati in modo specifico da una chiamata KsStreamPointerAdvanceXxx o KsStreamPointerUnlock . I dati meno recenti possono esistere anche nella coda se i puntatori di flusso clonati esistono per fotogrammi precedenti a quelli puntati dal bordo finale.

I frame di dati che si trovano nella finestra tra il puntatore di flusso perimetrale iniziale e il puntatore di flusso perimetrale finale hanno almeno un numero di riferimenti e quindi non lasceranno la coda e non 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 non sono bloccati per impostazione predefinita e pertanto possono essere annullati.

KsPinGetTrailingEdgeStreamPointer è principalmente usato nei filtri incentrati sui pin. Per altre informazioni, vedere Elaborazione incentrata sul pin e sull'elaborazione incentrata sui filtri.

KsPinGetTrailingEdgeStreamPointer non funzionerà a meno che il descrittore di pin per il pin specifica che la coda deve avere un bordo finale distinto impostando il flag di KSPIN_FLAG_DISTINCT_TRAILING_EDGE.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Microsoft Windows XP e versioni successive e DirectX 8.0 e versioni successive di DirectX.
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib
IRQL <=DISPATCH_LEVEL

Vedi anche

KsPinGetLeadingEdgeStreamPointer

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerClone

KsStreamPointerDelete

KsStreamPointerLock

KsStreamPointerUnlock