Determinando o pino de controle de um nó
Ao contrário de filtros e pinos, os nós não têm um identificador de arquivo associado pelo qual os aplicativos no Anel 3 podem acessá-los. Como os nós são componentes internos dentro de um filtro, eles existem em algum lugar entre os pinos de entrada e saída do filtro. O provedor de rede deve determinar qual pino de filtro usar e, em seguida, usar o pino para acessar um nó. Esse pino de filtro é chamado de pino de controle para esse nó. Para determinar o pino de controle para cada nó na lista de conexões de modelo BDA de um filtro, o provedor de rede consulta a propriedade KSPROPERTY_BDA_CONTROLLING_PIN_ID do conjunto de propriedades KSPROPSETID_BdaTopology . O minidriver BDA, por sua vez, chama a função de suporte BdaPropertyGetControllingPinId para cada nó. Nessa chamada, o minidriver passa um ponteiro para uma estrutura KSP_BDA_NODE_PIN . Essa estrutura identifica a solicitação de propriedade para recuperar o pino de controle para um tipo de nó específico e um par de pinos de entrada e saída do filtro. A biblioteca de suporte do BDA retorna o identificador do pino de controle para o tipo de nó.
Um minidriver BDA normalmente não intercepta a propriedade KSPROPERTY_BDA_CONTROLLING_PIN_ID. O minidriver envia automaticamente a função de suporte BdaPropertyGetControllingPinId do conjunto de propriedades KSPROPSETID_BdaTopology. Consulte Determining BDA Device Topology (Determinando a topologia do dispositivo BDA ) para obter mais informações.
A biblioteca de suporte é capaz de fazer todo o trabalho de determinar o identificador do pino de controle porque o minidriver BDA forneceu à biblioteca de suporte um ponteiro para a estrutura BDA_FILTER_TEMPLATE quando o minidriver BDA começou a operar. Consulte Iniciando um Minidriver BDA para obter mais informações. Um minidriver BDA informa à biblioteca de suporte do BDA como determinar o controle de pinos por meio de informações contidas em BDA_FILTER_TEMPLATE. Essas informações incluem:
Uma matriz de conexões. Essa matriz é uma matriz KSTOPOLOGY_CONNECTION que fornece uma representação de todas as conexões possíveis entre tipos de nó e pino que podem ser feitas em um filtro ou entre um filtro e filtros adjacentes. Consulte Mapeando topologia de conexão para obter mais informações sobre a matriz KSTOPOLOGY_CONNECTION.
Uma matriz de valores de junção. Uma articulação é um ponto na topologia em que uma entrada se divide em um ou mais caminhos para saídas diferentes ou uma ou mais entradas se unem em um único caminho de saída. O valor fornecido a uma articulação corresponde ao índice de um elemento na matriz KSTOPOLOGY_CONNECTION. A maioria das topologias terá apenas uma articulação.
Uma matriz de estruturas BDA_PIN_PAIRING . Essas estruturas identificam tipos de pino de entrada e saída, o número máximo de instâncias de tipo de entrada que podem ser criadas no filtro e o número máximo de instâncias de tipo de saída que podem ser criadas no filtro. Essas estruturas também contêm um ponteiro para a matriz de valores de articulação entre os pinos de entrada e saída. Consulte Iniciando um minidriver BDA para obter mais informações sobre a matriz de BDA_PIN_PAIRING.
A figura a seguir mostra como a biblioteca de suporte determina o pino de filtro que controla um nó específico: