다음을 통해 공유


터미널 선택

다음 코드 예제에서는 호출과 연결된 스트림에 터미널을 선택하는 방법을 보여 줍니다.

이 코드 예제를 사용하기 전에 TAPI 초기화주소 선택에서 작업을 수행해야 합니다.

또한 이 예제에서는 애플리케이션에 수신 또는 발신 호출의 ITBasicCallControl 인터페이스에 대한 포인터가 이미 있어야 합니다. 이 포인터를 가져오는 방법에 대한 코드 예제는 전화 걸 기 또는 호출 받기 를 참조하세요.

참고

이 예제에는 오류 검사 및 프로덕션 코드에 적합한 릴리스가 없습니다.

 

// pAddress is an ITAddress interface pointer.
// pBasicCall is an ITBasicCallControl interface pointer.

// Get the ITStreamControl interface.
ITStreamControl * pStreamControl;
HRESULT hr = pBasicCall->QueryInterface(
        IID_ITStreamControl,
        (void **) &pStreamControl
        );
// If ( hr != S_OK ) process the error here. 

// Enumerate the streams and select 
// terminals onto them.
IEnumStream * pEnumStreams;
ITStream    * pStream;
hr = pStreamControl->EnumerateStreams(&pEnumStreams);
// If ( hr != S_OK ) process the error here. 

while ( S_OK == pEnumStreams->Next(1, &pStream, NULL) )
{
    // Get the media type and direction of this stream.
    long                lMediaType;
    TERMINAL_DIRECTION  dir;
    hr = pStream->get_MediaType( &lMediaType );
    // If ( hr != S_OK ) process the error here. 
    hr = pStream->get_Direction( &dir );
    // If ( hr != S_OK ) process the error here. 

    // Create the default terminal for this media type and direction.
    //   If lMediaType == TAPIMEDIATYPE_VIDEO and
    //   dir == TD_RENDER, a dynamic video render terminal
    //   is required. Please see Incoming.cpp in 
    //   the samples section of the SDK. 
    // For all other terminals, get the default static terminal.
    ITTerminal * pTerminal;
    ITTerminalSupport * pTerminalSupport;
    hr = pAddress->QueryInterface( 
            IID_ITTerminalSupport, 
            (void **)&pTerminalSupport
         );
    // If ( hr != S_OK ) process the error here. 
    hr = pTerminalSupport->GetDefaultStaticTerminal(
            lMediaType,
            dir,
            pTerminal
         );
    // If ( hr != S_OK ) process the error here. 
    // Select the terminal on the stream.
    hr = pStream->SelectTerminal(pTerminal);
    // If ( hr != S_OK ) process the error here. 
}

ITAddress

ITBasicCallControl

ITStreamControl

ITStream

IEnumStream

IT터미널

ITTerminalSupport