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


Функция 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 в основном используется в фильтрах, ориентированных на закрепление. Дополнительные сведения см. в разделах Обработка, ориентированная на пин-код и Обработка, ориентированная на фильтрацию.

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

Требования

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

См. также раздел

KsPinGetLeadingEdgeStreamPointer

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerClone

KsStreamPointerDelete

KsStreamPointerLock

KsStreamPointerUnlock