Terminal auswählen
Im folgenden Codebeispiel wird veranschaulicht, wie Terminals in Datenströmen ausgewählt werden, die einem Aufruf zugeordnet sind.
Bevor Sie dieses Codebeispiel verwenden, müssen Sie die Vorgänge in TAPI- initialisieren und Eine Adresse auswählen.
Außerdem erfordert dieses Beispiel, dass die Anwendung bereits über einen Zeiger auf die ITBasicCallControl- Schnittstelle eines eingehenden oder ausgehenden Anrufs verfügt. Codebeispiele zum Abrufen dieses Zeigers finden Sie unter oder Empfangen eines Anrufs.
Anmerkung
In diesem Beispiel wird die Fehlerüberprüfung nicht überprüft und für Produktionscode freigegeben.
// 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.
}
Verwandte Themen