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