Функция 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