디바이스의 데이터 경로 및 제어 노드를 나타내는 토폴로지 정의 후 다음 단계는 구성 가능한 각 핀에 데이터 범위를 정의하는 것입니다. 구성 가능한 핀은 소프트웨어 제어 하에 웨이브 또는 MIDI 스트림에 생성, 구성 및 연결할 수 있습니다. 반면, 물리적 연결 또는 브리지 핀은 암시적으로 존재하며 소프트웨어 제어에서 만들거나 구성할 수 없습니다.
구성 가능한 핀을 연결하여 웨이브 또는 MIDI 스트림의 싱크 또는 원본으로 사용하려면 먼저 스트림의 데이터 형식을 처리하도록 핀을 구성해야 합니다. 일반적으로 핀은 여러 스트림 형식 중 하나를 허용하도록 구성할 수 있습니다. 예를 들어 PCM 웨이브 출력 핀은 다음 범위의 PCM 스트림 매개 변수를 수락할 수 있습니다.
11.025kHz, 22.05kHz, 44.1kHz 및 48kHz의 샘플 속도
8, 16, 24 및 32비트 샘플 크기
1에서 8까지의 채널 수
각 유형의 구성 가능한 핀에 대해 미니포트 드라이버는 핀이 처리할 수 있는 다양한 스트림 데이터 형식을 설명합니다. 다음 코드 예제와 같이 이러한 매개 변수 범위를 데이터 범위 설명자의 배열로 지정할 수 있습니다.
static KSDATARANGE_AUDIO PinDataRangesPcm[] =
{
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
8, // Maximum number of channels
8, // Minimum number of bits-per-sample
32, // Maximum number of bits-per-channel
11025, // Minimum rate
48000 // Maximum rate
}
};
이전 예제의 PinDataRangesPcm
배열에는 KSDATARANGE_AUDIO형식의 단일 데이터 범위 설명자가 포함되어 있습니다. 일반적으로 데이터 범위 배열에는 임의의 수의 설명자가 포함될 수 있습니다. 예를 들어 비 PCM 웨이브 출력 핀은 AC-3 over-S/PDIF 및 WMA Pro-over-S/PDIF 형식을 모두 지원할 수 있습니다. 이러한 두 형식은 각각 별도의 데이터 범위 설명자로 지정됩니다. 따라서 핀의 데이터 범위 배열에는 두 개 이상의 KSDATARANGE_AUDIO 구조체가 포함됩니다.
DirectMusic 또는 Windows 멀티미디어 midiInXxx 및 midiOutXxx 함수를 사용하는 애플리케이션에서 음악 스트림 형식을 지원하는 구성 가능한 핀은 KSDATARANGE_MUSIC형식의 데이터 범위 설명자를 사용합니다.
포트 드라이버는 미니포트 드라이버에서 데이터 범위 정보를 가져오고 가능한 경우 이 정보를 사용하여 각 핀이 지원할 수 있는 데이터 형식에 대한 정보 요청을 처리합니다. 간단한 PCM 데이터 범위가 있는 핀의 경우 포트 드라이버는 해당 핀에 대한 교차 요청을 처리할 수 있습니다. 교차 요청에서 클라이언트는 스트림에 대해 가능한 데이터 형식을 나타내는 데이터 범위 집합을 제공합니다. 가능하면 포트 드라이버의 교차 처리기는 핀의 데이터 범위에 속하는 요청의 데이터 범위에서 특정 데이터 형식을 선택합니다. 이 형식은 두 데이터 범위 집합의 교집합을 나타냅니다. 따라서 클라이언트와 핀 모두 이 형식으로 스트림을 처리할 수 있습니다. 더 복잡한 데이터 범위의 경우 미니포트 드라이버는 자체 교차 처리기를 제공할 수 있으며, 포트 드라이버는 자체 기본 처리기 대신 사용합니다. 미니포트 드라이버의 교차 처리기는 포트 드라이버에 데이터 범위의 배열로 표현하기 어려울 수 있는 모든 형식 요구 사항을 허용할 수 있습니다. 자세한 내용은 Data-Intersection 처리기 및 여러 채널 오디오 데이터 및 WAVE 파일 참조하세요.