Estrutura KSPROCESSPIN (ks.h)

A estrutura KSPROCESSPIN descreve o estado do processo de um pin específico.

Sintaxe

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;

Membros

Pin

Um ponteiro para uma estrutura KSPIN que a estrutura KSPROCESSPIN está descrevendo. Tudo na estrutura refere-se a este KSPIN.

StreamPointer

Um ponteiro para uma estrutura KSSTREAM_POINTER que aponta para o fluxo de entrada no local de entrada atual ou no fluxo de saída no local de saída atual. Isso pode ser usado, por exemplo, por pinos de saída para carimbar informações no KSSTREAM_HEADER associado (ProcessPin-StreamPointer-StreamHeader-Flags>>>=...).

InPlaceCounterpart

Um ponteiro para uma estrutura KSPROCESSPIN. Se esse KSPROCESSPIN não fizer parte de uma transformação inplace , o AVStream definirá InPlaceCounterpart como NULL. Se esse KSPROCESSPIN for a entrada para uma transformação inplace, InPlaceCounterpart apontará para o pin do processo de saída para a transformação. Se esse KSPROCESSPIN for a saída de uma transformação inplace, InPlaceCounterpart apontará para o pin do processo de entrada para a transformação.

DelegateBranch

Um ponteiro para uma estrutura KSPROCESSPIN. Se os quadros que saem desse KSPROCESSPIN estiverem sendo divididos e enviados para vários pinos de coletor e a divisão não causar uma cópia de dados (ou seja, a divisão enviará os quadros de maneira somente leitura e todas as instâncias de pino dividido estiverem no mesmo pipe), DelegateBranch apontará para a primeira instância do pin do processo. O divisor manipula automaticamente qualquer pin de processo que tenha um DelegateBranch não NULL.

CopySource

Um ponteiro para uma estrutura KSPROCESSPIN. Se os quadros que saem desse pin de processo estiverem sendo divididos e enviados para vários pinos de coletor de uma maneira que cause uma cópia de dados (ou seja, um dos filtros downstream está modificando o quadro de dados usando uma transformação in-loco), CopySource aponta para o pin de processo do qual o quadro foi copiado. O divisor manipula automaticamente qualquer pin de processo que tenha um CopySource não NULL.

Data

Um ponteiro para um buffer. Se o pin descrito por essa entrada de processo for um pin de entrada, Os dados apontarão para o próximo byte disponível de dados a serem inseridos. Se o pin descrito por essa entrada de processo for um pino de saída, os dados apontarão para um buffer de saída no qual os dados processados são colocados.

BytesAvailable

Esse membro especifica quantos bytes de dados estão disponíveis em Dados.

BytesUsed

Esse membro especifica quantos bytes desse quadro de dados foram usados pela função de processo. Os drivers AVStream devem definir esse membro para atualizar o quanto eles leram ou gravaram.

Flags

Esse membro contém uma cópia dos sinalizadores da estrutura de KSSTREAM_HEADER relevante, se esse KSPROCESSPIN for um pin de entrada.

Terminate

Esse membro indica se o quadro de dados atual deve ser enviado downstream após a conclusão da expedição do processo. Se TRUE, o quadro será enviado downstream mesmo se todos os dados não tiverem sido consumidos. Se FALSE, o quadro não será liberado até que todos os dados sejam consumidos.

Comentários

A estrutura KSPROCESSPIN é usada no modelo de processamento centrado em filtro . Você pode usar essa estrutura para acessar dados em um pin de entrada específico ou para gravar dados processados em um pino de saída.

Somente clientes centrados em filtro usam pinos de processo. Além disso, os pinos de processo que têm um DelegateBranch não NULL ou um CopySource não NULL normalmente não são preocupantes para o cliente. O divisor manipula automaticamente os pinos de processo com esses ponteiros.

A maioria dos clientes está preocupada com os membros Pin, Data, BytesAvailable, BytesUsed, Flags e Terminate. Os dados podem ser lidos do fluxo ou gravados no fluxo por meio do membro Dados ; BytesAvailable informa ao cliente quantos bytes de dados estão disponíveis no quadro de dados atual (buffer) para o qual os dados apontam. À medida que o minidriver do cliente lê ou grava no fluxo, BytesUsed deve ser atualizado para refletir quantos bytes de dados foram consumidos. O sinalizador Terminate poderá ser definido se o minidriver for feito com o quadro atual, apesar do fato de que BytesUsed não é igual a BytesAvailable. Depois que o minidriver sair da expedição de processamento, os ponteiros serão avançados e os quadros serão concluídos conforme apropriado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Microsoft Windows XP e em sistemas operacionais posteriores e no Microsoft DirectX 8.0 e versões posteriores.
Cabeçalho ks.h (inclua Ks.h)

Confira também

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER