BDA 디바이스 토폴로지 확인

BDA 디바이스 토폴로지는 노드의 연결된 네트워크로 구성되며, 각 네트워크는 신호의 일부 변환을 나타냅니다. 노드는 여러 필터 간에 임의로 그룹화할 수 있습니다. 이 임의 그룹화는 하드웨어 공급업체가 하드웨어 및 드라이버를 구현하는 방법을 자유롭게 제공하므로 이러한 하드웨어 및 드라이버는 지원하려는 다양한 유형의 네트워크에 대해 네트워크 공급자와 일반적인 방식으로 작동합니다.

이 임의 그룹화 아키텍처가 작동하려면 네트워크 공급자가 해당 필터가 신호에서 수행하는 변환의 종류(즉, 필터가 지원할 수 있는 노드 네트워크 유형)에 대한 필터를 쿼리할 수 있어야 합니다. 필터의 기본 링 0 미니 드라이버는 KSPROPSETID_BdaTopology 속성 집합을 통해 지원되는 노드 네트워크의 그림을 네트워크 공급자에게 전달합니다.

필터에 대한 템플릿 토폴로지를 결정할 때 네트워크 공급자는 노드 유형 및 핀 유형 목록을 반복하고 각 노드와 핀에 해당 기능을 쿼리합니다. 네트워크 공급자는 KSPROPSETID_BdaTopology 다음 속성을 사용하여 필터에 대한 템플릿 토폴로지를 확인합니다.

  • KSPROPERTY_BDA_NODE_TYPES

    노드 형식은 필터 내에서 가능한 기능 노드를 나타냅니다. KSPROPERTY_BDA_NODE_TYPES 속성은 BDA 미니드라이버의 필터 instance 제공되는 모든 노드 형식의 목록을 반환합니다. 미니 드라이버는 노드 형식을 식별하기 위해 임의의 값을 할당합니다. 일반적으로 미니드라이버에서는 미니드라이버 노드 형식 목록에 있는 각 요소의 인덱스 를 각 노드 형식의 값으로 사용합니다. BDA 미니드라이버에서는 각 노드 유형에 노드 설명 GUID를 할당합니다. 네트워크 공급자가 현재 지원하는 노드 형식에 대한 설명 GUID는 bdamedia.h에 정의되어 있습니다. 이 노드 설명은 노드가 수행하는 작업을 네트워크 공급자에게 나타냅니다. 템플릿 토폴로지에서 노드 형식은 한 번만 발생할 수 있습니다. 그러나 특정 형식의 둘 이상의 노드에 동일한 노드 설명 GUID가 있을 수 있습니다. 이렇게 하면 네트워크 공급자가 단일 토폴로지 노드를 명확하게 식별할 수 있도록 하면서 필터의 토폴로지에서 둘 이상의 위치에서 특정 신호 변환이 발생할 수 있습니다.

  • KSPROPERTY_BDA_PIN_TYPES

    핀 형식은 그래프의 다른 필터에 대한 가능한 연결을 나타냅니다. KSPROPERTY_BDA_PIN_TYPES 속성은 필터에서 만들 수 있는 모든 핀 유형의 목록을 반환합니다. 템플릿 토폴로지에서 핀 유형은 한 번만 발생할 수 있습니다.

  • KSPROPERTY_BDA_TEMPLATE_CONNECTIONS

    KSPROPERTY_BDA_TEMPLATE_CONNECTIONS 속성은 필터에서 구성할 수 있는 노드 형식과 핀 형식 간의 가능한 모든 연결을 나타내는 배열을 반환합니다. 자세한 내용은 연결 토폴로지 매핑 을 참조하세요.

필터 instance 처음 만들어 그래프에 추가되면 일반적으로 입력 핀이 있지만 출력 핀은 없습니다. 출력 핀을 만들기 위해 네트워크 공급자는 먼저 KSPROPSETID_BdaTopology 속성을 사용하여 필터가 수행할 수 있는 작업을 결정합니다. 이러한 속성에서 네트워크 공급자는 특정 필터 그래프에 대해 수행하는 필터가 필요한 작업을 결정합니다. 그런 다음 네트워크 공급자는 KSMETHODSETID_BdaDeviceConfiguration 메서드 집합을 사용하여 특정 핀 유형과 일치하는 출력 핀을 만들고 해당 핀과 입력 핀 사이에 실제 하드웨어 경로인 내부 토폴로지를 만듭니다. 자세한 내용은 BDA 필터 구성 을 참조하세요.

다음 코드 조각은 BDA 지원 라이브러리에서 내보내는 함수를 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
        )
};