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


Структура KSPROCESSPIN (ks.h)

Структура KSPROCESSPIN описывает состояние процесса определенного контакта.

Синтаксис

typedef struct _KSPROCESSPIN {
  PKSPIN            Pin;
  PKSSTREAM_POINTER StreamPointer;
  PKSPROCESSPIN     InPlaceCounterpart;
  PKSPROCESSPIN     DelegateBranch;
  PKSPROCESSPIN     CopySource;
  PVOID             Data;
  ULONG             BytesAvailable;
  ULONG             BytesUsed;
  ULONG             Flags;
  BOOLEAN           Terminate;
} KSPROCESSPIN, *PKSPROCESSPIN;

Члены

Pin

Указатель на структуру KSPIN , описываемую структурой KSPROCESSPIN. Все в структуре относится к этому KSPIN.

StreamPointer

Указатель на структуру KSSTREAM_POINTER , которая указывает на входной поток в текущем входном расположении или выходной поток в текущем выходном расположении. Это можно использовать, например, выходными контактами для пометки сведений в связанном KSSTREAM_HEADER (ProcessPin-StreamPointer-StreamHeader-Flags>>>=...).

InPlaceCounterpart

Указатель на структуру KSPROCESSPIN. Если этот KSPROCESSPIN не является частью преобразования на месте , AVStream присваивает InPlaceCounterpart значение NULL. Если этот KSPROCESSPIN является входными данными для преобразования на месте, InPlaceCounterpart указывает на контакт процесса вывода для преобразования. Если этот KSPROCESSPIN является выходными данными преобразования на месте, InPlaceCounterpart указывает на контакт процесса ввода для преобразования.

DelegateBranch

Указатель на структуру KSPROCESSPIN. Если кадры, исходящие из этого KSPROCESSPIN, разделяются и отправляются в несколько контактов приемника, а разделение не приводит к копированию данных (т. е. разделение отправляет кадры только для чтения, а все экземпляры разделенных контактов находятся в одном канале), DelegateBranch указывает на первый экземпляр закрепления процесса. Разделитель автоматически обрабатывает все контакты процесса с делегатом, не имеющим значения NULL.

CopySource

Указатель на структуру KSPROCESSPIN. Если кадры, поступающие из этого контакта процесса, разделяются и отправляются в несколько контактов приемника способом, который вызывает копирование данных (то есть один из подчиненных фильтров изменяет кадр данных с помощью преобразования на месте), CopySource указывает на контакт процесса, из которого был скопирован кадр. Разделитель автоматически обрабатывает любой контакт процесса, имеющий значение CopySource, отличное от NULL.

Data

Указатель на буфер. Если контакт, описанный в этой записи процесса, является входным контактом, данные указывают на следующий доступный байт данных для ввода. Если контакт, описанный в этой записи процесса, является выходным, данные указывают на выходной буфер, в который помещаются обработанные данные.

BytesAvailable

Этот элемент указывает, сколько байтов данных доступно в data.

BytesUsed

Этот элемент указывает, сколько байтов этого кадра данных было использовано функцией процесса. Драйверы AVStream должны настроить этот элемент для обновления объема операций чтения или записи.

Flags

Этот элемент содержит копию флагов из соответствующей структуры KSSTREAM_HEADER , если KSPROCESSPIN является контактом ввода.

Terminate

Этот элемент указывает, следует ли отправлять текущий кадр данных ниже по завершении отправки процесса. Если задано значение TRUE, кадр отправляется вниз, даже если все данные не были использованы. Если значение РАВНО FALSE, фрейм не освобождается, пока не будут использованы все данные.

Комментарии

Структура KSPROCESSPIN используется в модели обработки, ориентированной на фильтрацию . Эту структуру можно использовать для доступа к данным в определенном входном контакте или для записи обработанных данных в выходной контакт.

Только клиенты, ориентированные на фильтры, используют контакты процесса. Кроме того, контакты процесса с делегатом, не имеющими значения NULL, или CopySource, отличные от NULL, обычно не представляют для клиента проблем. Разделитель автоматически обрабатывает контакты процесса с помощью этих указателей.

Большинство клиентов связаны с элементами Pin, Data, BytesAvailable, BytesUsed, Flags и Terminate. Данные можно считывать из потока или записывать в поток с помощью элемента Data ; BytesAvailable сообщает клиенту, сколько байтов данных доступно в текущем кадре данных (буфере), на который указывает data . По мере того как клиентский мини-накопитель считывает или записывает в поток, необходимо обновить значение BytesUsed , чтобы отразить, сколько байтов данных было использовано. Флаг Завершить можно установить, если мини-диск завершает работу с текущим кадром, несмотря на то, что значение BytesUsed не равно BytesAvailable. После выхода мини-драйвера из диспетчера обработки указатели надвигаются, а кадры заполняются соответствующим образом.

Требования

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

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

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER