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) |