Condividi tramite


Determinazione della topologia del dispositivo BDA

Una topologia del dispositivo BDA è costituita da una rete connessa di nodi, ognuna delle quali rappresenta una trasformazione su un segnale. I nodi possono essere raggruppati arbitrariamente tra filtri diversi. Questo raggruppamento arbitrario fornisce ai fornitori hardware una certa libertà di implementare i propri hardware e driver in modo che tali hardware e driver funzionino in modo generico con i provider di rete per i diversi tipi di reti che desiderano supportare.

Per il funzionamento di questa architettura arbitraria di raggruppamento, il provider di rete deve essere in grado di eseguire query sui filtri in base al tipo di trasformazioni eseguite su un segnale, ovvero i tipi di reti di nodi che il filtro può supportare. Il minidriver anello sottostante 0 per un filtro trasmette un'immagine delle reti di nodi supportate al provider di rete tramite il set di proprietà KSPROPSETID_BdaTopology .

Quando si determina la topologia del modello per un filtro, il provider di rete esegue l'iterazione di elenchi di tipi di nodi e tipi di pin e esegue query su ogni nodo e aggiunge le relative funzionalità. Il provider di rete usa le proprietà seguenti di KSPROPSETID_BdaTopology per determinare la topologia del modello per il filtro:

  • KSPROPERTY_BDA_NODE_TYPES

    I tipi di nodo rappresentano i possibili nodi funzionali all'interno del filtro. La proprietà KSPROPERTY_BDA_NODE_TYPES restituisce un elenco di tutti i tipi di nodo forniti da un'istanza di filtro del minidriver BDA. Il minidriver assegna valori arbitrari per identificare i tipi di nodo. In genere, il minidriver usa l'indice di ogni elemento nell'elenco dei tipi di nodo del minidriver come valore per ogni tipo di nodo. Il minidriver BDA assegna a ogni nodo un GUID della descrizione del nodo. GUID di descrizione per i tipi di nodo attualmente supportati dal provider di rete sono definiti in bdamedia.h. Questa descrizione del nodo indica al provider di rete che cosa fa il nodo. In una topologia di modello, un tipo di nodo può verificarsi una sola volta. Tuttavia, più nodi di un tipo specifico possono avere lo stesso GUID della descrizione del nodo. Ciò consente a una trasformazione di segnale specifica di verificarsi in più posizioni nella topologia del filtro, consentendo al provider di rete di identificare un singolo nodo della topologia senza ambiguità.

  • KSPROPERTY_BDA_PIN_TYPES

    I tipi di pin rappresentano le possibili connessioni ad altri filtri nel grafico. La proprietà KSPROPERTY_BDA_PIN_TYPES restituisce un elenco di tutti i tipi di pin che possono essere creati nel filtro. In una topologia di modello, un tipo di pin può verificarsi una sola volta.

  • KSPROPERTY_BDA_TEMPLATE_CONNECTIONS

    La proprietà KSPROPERTY_BDA_TEMPLATE_CONNECTIONS restituisce una matrice che rappresenta tutte le possibili connessioni tra i tipi di nodo e i tipi di pin che possono essere configurati nel filtro. Per altre informazioni, vedere Mapping della topologia di connessione .

Quando un'istanza di filtro viene creata e aggiunta al grafico, in genere include pin di input ma nessun pin di output. Per creare pin di output, il provider di rete usa prima le proprietà KSPROPSETID_BdaTopology per determinare le operazioni che il filtro può eseguire. Da queste proprietà, il provider di rete determina le operazioni necessarie per eseguire il filtro per un determinato grafico di filtro. Il provider di rete usa quindi il metodo KSMETHODSETID_BdaDeviceConfiguration impostato per creare pin di output corrispondenti a un tipo di pin specifico e creare la topologia interna, ovvero il percorso hardware effettivo, tra i pin e i pin di input. Per altre informazioni, vedere Configurazione di un filtro BDA .

Il frammento di codice seguente illustra come definire le funzioni esportate dalla libreria di supporto BDA come routine di invio per il set di proprietà KSPROPSETID_BdaTopology:

//
//  KSPROPSETID_BdaTopology property set
//
//  Defines the dispatch routines for the filter level
//  topology properties
//
DEFINE_KSPROPERTY_TABLE(FilterTopologyProperties)
{
    DEFINE_KSPROPERTY_ITEM_BDA_NODE_TYPES(
        BdaPropertyNodeTypes,
        NULL
        ),
    DEFINE_KSPROPERTY_ITEM_BDA_PIN_TYPES(
        BdaPropertyPinTypes,
        NULL
        ),
    DEFINE_KSPROPERTY_ITEM_BDA_TEMPLATE_CONNECTIONS(
        BdaPropertyTemplateConnections,
        NULL
        ),
    DEFINE_KSPROPERTY_ITEM_BDA_CONTROLLING_PIN_ID(
        BdaPropertyGetControllingPinId,
        NULL
        )
};