Структура 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) |