다음을 통해 공유


BDA 디바이스 토폴로지 확인

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

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

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

  • KSPROPERTY_BDA_NODE_TYPES

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

  • KSPROPERTY_BDA_PIN_TYPES

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

  • KSPROPERTY_BDA_TEMPLATE_CONNECTIONS

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

필터 인스턴스가 처음 만들어지고 그래프에 추가되면 일반적으로 입력 핀이 있지만 출력 핀은 없습니다. 출력 핀을 만들기 위해 네트워크 공급자는 먼저 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
        )
};