공장 고정
오디오 필터의 핀 팩터리는 필터가 인스턴스화할 수 있는 모든 핀을 설명합니다. 앞서 언급했듯이 오디오 미니포트 드라이버는 핀 정보를 PCPIN_DESCRIPTOR 구조의 배열에 저장합니다. 각 구조체는 핀 팩터리를 지정하고 핀 팩터리는 배열의 인덱스로 식별됩니다. 이 인덱스는 핀 ID라고도 합니다.
PCPIN_DESCRIPTOR 구조에는 자동화 테이블과 KSPIN_DESCRIPTOR 구조가 포함됩니다.
KSPIN_DESCRIPTOR 구조체에는 핀 팩터리의 핀에 대한 다음 정보가 포함되어 있습니다.
데이터 흐름의 필터 상대 방향
통신 흐름의 필터 상대 방향(모든 현재 Windows 버전에서 KS 필터는 통신에 IRP를 사용합니다.)
고정 범주
이름
인스턴스 기능
데이터 형식 기능
구조체의 범주 및 이름 멤버는 핀 팩터리의 핀 범주와 식별 이름을 지정합니다. 필터의 각 핀 팩터리에 대해 미니포트 드라이버는 핀 팩터리를 고유하게 식별하는 범주 및 이름 GUID의 조합을 지정합니다. 둘 이상의 핀 팩터리에서 동일한 범주 값을 공유하는 경우 각 핀 팩터리에는 다른 핀 팩터리와 구별되는 Name 값이 있습니다. 단일 핀 팩터리에 특정 범주 값만 있는 경우 해당 값은 핀 팩터리를 식별하기에 충분하며 해당 핀 팩터리의 이름 값을 NULL로 설정할 수 있습니다. 코딩 예제는 필터 토폴로지 노출을 참조하세요. 핀 범주에 대한 자세한 내용은 범주 속성 고정을 참조하세요.
핀 팩터리는 확장 KSDATARANGE 구조체의 배열로 지원하는 데이터 형식 범위를 지정합니다.
입력 또는 출력 스트림에 대한 다양한 웨이브 또는 DirectSound 데이터 형식을 지원하는 핀 팩터리는 KSDATARANGE_AUDIO 구조의 배열을 지정합니다.
입력 또는 출력 스트림에 대한 MIDI 또는 DirectMusic 데이터 형식 범위를 지원하는 핀 팩터리는 KSDATARANGE_MUSIC 구조의 배열을 지정합니다.
KSDATARANGE_AUDIO 및 KSDATARANGE_MUSIC KSDATARANGE의 확장 버전입니다. 두 유형의 데이터 범위에 대한 예제는 오디오 데이터 형식 및 데이터 범위를 참조하세요.
한 필터의 싱크 핀을 다른 필터의 원본 핀에 연결하기 전에 그래프 작성기(예: SysAudio 시스템 드라이버)는 데이터 범위에서 호환되는 형식을 검색할 수 있습니다. 그래프 작성기는 일반적으로 필터 자체에서 호환되는 형식을 선택할 수 있도록 하는 필터의 데이터 교차 처리기를 호출합니다.
필터에는 여러 핀 팩터리를 포함할 수 있으며 핀 팩터리는 여러 핀 인스턴스를 지원할 수 있습니다.
필터에 여러 핀 팩터리를 두는 것은 필터를 통해 흐르는 다양한 유형의 데이터에 대해 별도의 데이터 경로를 구분하는 데 유용합니다. 예를 들어 한 핀 팩터리는 PCM 데이터 스트림을 지원할 수 있고 다른 핀 팩터리는 AC-3 스트림을 지원할 수 있습니다.
단일 필터는 동시에 스트림 렌더링 및 캡처를 지원할 수 있습니다. 렌더링 및 캡처 경로에는 별도의 필터 팩터리 집합이 있습니다.
싱크 핀 팩터리에 여러 핀 인스턴스가 있는 것은 혼합을 의미하는 경우가 많습니다. 이 경우 필터에 SUM 노드(KSNODETYPE_SUM)가 포함됩니다.
필터와 마찬가지로 핀은 커널 개체이며 커널 핸들로 식별됩니다. 핀 instance 대한 핸들은 KsCreatePin을 호출하여 생성됩니다. 커널 개체로 핀을 IRP의 대상으로 지정할 수 있습니다. 드라이버의 클라이언트는 IOCTL 요청을 핀으로 보낼 때 핀 핸들을 지정합니다.
오디오 필터 그래프를 빌드할 때 SysAudio는 핀을 연결하여 한 필터를 다른 필터에 연결합니다. 한 필터의 원본 핀을 다른 필터의 싱크 핀에 연결할 수 있습니다. 원본 핀의 데이터 및 IRP는 이 연결을 통해 싱크 핀으로 흐릅니다. 연결을 만들기 위해 그래프 작성기(일반적으로 SysAudio)는 KsCreatePin 을 호출하여 먼저 원본 핀을 만든 다음 , KsCreatePin 을 다시 호출하여 싱크 핀을 만듭니다. 그러나 두 번째 호출에서 클라이언트는 새 싱크 핀이 첫 번째 호출에서 생성된 원본 핀에 연결되도록 지정합니다.