다음을 통해 공유


KSTOPOLOGY_CONNECTION 구조체(ks.h)

KSTOPOLOGY_CONNECTION 구조는 커널 스트리밍 필터 내의 단일 데이터 경로 연결을 설명합니다.

PCCONNECTION_DESCRIPTOR KSTOPOLOGY_CONNECTION 별칭입니다.

구문

typedef struct {
  ULONG FromNode;
  ULONG FromNodePin;
  ULONG ToNode;
  ULONG ToNodePin;
} KSTOPOLOGY_CONNECTION, *PKSTOPOLOGY_CONNECTION;

멤버

FromNode

연결의 업스트림 끝에 있는 노드의 노드 ID를 지정합니다. 연결의 이 끝이 노드의 논리적 핀이 아닌 필터의 외부 핀인 경우 m은 이 멤버를 null 노드 ID 값으로 설정하고 KSFILTER_NODE.

FromNodePin

연결의 업스트림 끝에 대한 핀 ID를 지정합니다. **FromNode **가 KSFILTER_NODE 경우 연결의 이 끝에 있는 핀은 필터의 외부 핀입니다. 그렇지 않은 경우 이 끝의 핀은 내부 노드의 논리적 핀입니다.

ToNode

연결의 다운스트림 끝에 있는 노드의 노드 ID를 지정합니다. 연결의 이 끝이 노드의 논리적 핀이 아닌 필터의 외부 핀인 경우 이 멤버를 null 노드 ID 값으로 설정하고 KSFILTER_NODE.

ToNodePin

연결의 다운스트림 끝에 대한 핀 ID를 지정합니다. ToNode가 KSFILTER_NODE 경우 연결의 이 끝에 있는 핀은 필터의 외부 핀입니다. 그렇지 않은 경우 이 끝의 핀은 내부 노드의 논리적 핀입니다.

설명

KSTOPOLOGY_CONNECTION 외부 핀, 내부 노드 또는 외부 핀과 내부 노드 간에 필터 내부의 단일 연결을 나타냅니다.

스트리밍 드라이버는 KSPROPERTY_TOPOLOGY_CONNECTIONS get-property 요청에 대한 응답으로 KSTOPOLOGY_CONNECTION 구조의 배열을 반환합니다.

두 외부 핀 간의 연결을 나타낼 때 FromNodeToNode 는 모두 KSFILTER_NODE 설정해야 하며 FromNodePinToNodePin 은 해당 핀의 핀 유형 ID여야 합니다. 핀 유형 ID에 대한 설명은 KSPROPSETID_Pin 참조하세요.

그렇지 않으면 FromNodePin 또는 ToNodePin 은 연결에 대해 논리적으로 들어오거나 나가는 핀을 나타냅니다. 논리 핀 번호는 노드 간의 연결을 설명하는 데만 사용됩니다. KSPROPERTY_TOPOLOGY_CONNECTIONS 속성 외부에는 존재하지 않습니다.

PCCONNECTION_DESCRIPTOR

PCCONNECTION_DESCRIPTOR 구조체 이름은 KSTOPOLOGY_CONNECTION 별칭입니다. IMiniport::GetDescription()에 대한 PCCONNECTION_DESCRIPTOR 미니포트에서 구현된 필터의 토폴로지에서 노드 연결에 대한 설명입니다. portcls.h 헤더에서 다음과 같이 정의됩니다.

typedef KSTOPOLOGY_CONNECTION PCCONNECTION_DESCRIPTOR, *PPCCONNECTION_DESCRIPTOR;

매개 변수 설명의 경우 PCFILTER_NODE KSFILTER_NODE 대신 PCCONNECTION_DESCRIPTOR 함께 사용됩니다.

PCCONNECTION_DESCRIPTOR 구조체는 필터 내부의 단일 연결을 지정합니다. 연결은 다음 중 하나일 수 있습니다.

  • 두 내부 노드 간의 연결

  • 필터의 내부 노드와 핀 간의 연결

  • 필터의 두 핀 간 연결

마지막 연결 유형은 필터의 입력 핀이 데이터를 동일한 필터의 출력 핀으로 직접 스트리밍할 때 발생합니다.

어댑터 드라이버는 구조체 배열을 사용하여 필터의 내부 토폴로지를 지정합니다.

데이터 스트림은 FromNode 끝에서 연결의 ToNode 끝으로 흐릅니다.

PCCONNECTION_DESCRIPTOR 구조를 사용하기 위해 드라이버 작성기는 필터 내의 노드에 "논리적" 핀을 할당합니다. 이러한 "핀"은 노드의 연결점이며 필터가 다른 필터에 연결하는 데 사용하는 외부 핀과 유사합니다. 그러나 노드의 논리 핀은 필터 내부의 연결을 지정하는 데만 사용됩니다.

단일 입력과 단일 출력이 있는 간단한 노드는 일반적으로 각각 입력 및 출력 핀 1과 0을 번호로 지정합니다. 규칙에 따라 이 번호 매기기는 데이터 흐름이 아닌 IRP 흐름의 방향을 기반으로 합니다.

더 복잡한 노드는 클라이언트가 특정 핀에 대한 함수 할당을 보다 쉽게 결정할 수 있도록 표준화된 핀 ID가 필요할 수 있습니다. 예를 들어 KSNODETYPE_ACOUSTIC_ECHO_CANCEL 노드는 4개의 핀에 대해 표준화된 ID를 사용합니다.

연결의 한쪽 끝에 있는 핀이 노드의 논리적 핀이 아닌 필터의 입력 또는 출력 핀인 경우 FromNode 또는 ToNode 멤버(지정하는 연결의 끝에 따라 다름)를 null 노드 ID 값인 PCFILTER_NODE 설정합니다.

필터가 다른 필터에 연결하는 데 사용하는 외부 핀과 필터 내 노드의 연결점을 설명하는 데만 사용되는 논리 핀의 혼동을 방지합니다. 논리 핀은 PCCONNECTION_DESCRIPTOR 구조 외부에서 거의 사용되지 않습니다. 이 문서에서 이라는 용어는 달리 명시되지 않는 한 노드의 논리적 핀이 아닌 KS 필터의 핀을 나타냅니다.

IMiniport::GetDescription 메서드는 PCCONNECTION_DESCRIPTOR 배열에 대한 포인터를 포함하는 PCFILTER_DESCRIPTOR 구조를 출력합니다.

PCCONNECTION_DESCRIPTOR 구조체를 사용하는 방법을 보여 주는 간단한 코드 예제는 필터 토폴로지 노출을 참조하세요.

요구 사항

요구 사항
헤더 ks.h(Ks.h 포함)

추가 정보

BdaPropertyTemplateConnections

KSPROPERTY_TOPOLOGY_CONNECTIONS

KSPROPSETID_Pin

KSPROPSETID_Topology