Поделиться через


Функция KsPinGetTrailingEdgeStreamPointer (ks.h)

Функция KsPinGetTrailingEdgeStreamPointer получает конечный граничный указатель потока для очереди, связанной с указанным пин-кодом.

Синтаксис

KSDDKAPI PKSSTREAM_POINTER KsPinGetTrailingEdgeStreamPointer(
  [in] PKSPIN                 Pin,
  [in] KSSTREAM_POINTER_STATE State
);

Параметры

[in] Pin

Указатель на структуру KSPIN, для которой очередь возвращает указатель на конечный пограничный поток.

[in] State

Этот параметр указывает состояние, в котором необходимо получить конечный указатель пограничного потока. Может быть одним из следующих вариантов:

KSSTREAM_POINTER_STATE_UNLOCKED

Получите указатель потока переднего края независимо от того, ссылается ли он на кадр данных.

Никакие попытки получить доступ к любым данным, связанным с указателем, пока указатель не будет заблокирован. Кроме того, обратите внимание, что кадры, связанные с разблокированной указателем потока, можно отменить.

KSSTREAM_POINTER_STATE_LOCKED

Получение и блокировка указателя потока переднего края. Если кадр данных не связан с указателем потока, возвращается NULL. Если возвращается указатель, отличный отnull, он является заблокированным указателем потока и связан с ним кадром данных. Кадры, связанные с заблокированным указателем потока, не могут быть отменены.

Возвращаемое значение

KsPinGetTrailingEdgeStreamPointer возвращает указатель на структуру KSSTREAM_POINTER, представляющую конечный пограничный указатель потока или NULL. Возвращаемое значение NULL может указывать на отсутствие конечного края очереди, связанной с закреплением. В этом случае дескриптор пин-кода, вероятно, не указывает, что пин-код должен иметь отдельный конечный край. Кроме того, NULL могут указывать на отсутствие очереди, связанной с закреплением. В этом случае пин-код не использует стандартный механизм транспорта. Возвращаемое значение NULL также может указывать на то, что попытка заблокировать конечный край не удалось. Другими словами, в настоящее время кадр данных не связан с передним краем.

Замечания

Указатель на конечный пограничный поток — это специальный указатель на поток данных, который существует, если и только если дескриптор пин-кода для пин-кода указывает отдельный конечный край. Если этот указатель существует, он указывает на самые старые данные в очереди, если только KsStreamPointerAdvanceXxx или вызов KsStreamPointerUnlock. Старые данные могут существовать в очереди, а также если клонированные указатели потока существуют для кадров старше, чем один, на который указывает конечный край.

Кадры данных, находящиеся в окне между указателем потока переднего края и конечным пограничным указателем потока, имеют по крайней мере одно число ссылок, поэтому не покидают очередь и не будут завершены до тех пор, пока они не выходят из окна в результате продвижения конечного края. Обратите внимание, что кадры между передним краем и конечным краем не заблокированы по умолчанию и поэтому могут быть отменены.

KsPinGetTrailingEdgeStreamPointer в основном используется в закрепленных фильтрах. Дополнительные сведения см. в разделе Pin-Centric Обработка и Filter-Centric обработки.

KsPinGetTrailingEdgeStreamPointer не будет работать, если только дескриптор пин-кода для пин-кода указывает, что очередь будет иметь отдельный конечный край, задав флаг KSPIN_FLAG_DISTINCT_TRAILING_EDGE.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Microsoft Windows XP и более поздних операционных системах и версиях DirectX 8.0 и более поздних версий DirectX.
целевая платформа Всеобщий
заголовка ks.h (include Ks.h)
библиотеки Ks.lib
IRQL <=DISPATCH_LEVEL

См. также

KsPinGetLeadingEdgeStreamPointer

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerClone

KsStreamPointerDelete

KsStreamPointerLock

KsStreamPointerUnlock