Pilih Terminal
Contoh kode berikut menunjukkan cara memilih terminal ke aliran yang terkait dengan panggilan.
Sebelum menggunakan contoh kode ini, Anda harus melakukan operasi di Inisialisasi TAPI dan Pilih Alamat.
Selain itu, contoh ini mengharuskan aplikasi sudah memiliki penunjuk ke antarmuka ITBasicCallControl dari panggilan masuk atau keluar. Lihat Melakukan Panggilan atau Menerima Panggilan untuk contoh kode tentang cara mendapatkan pointer ini.
Catatan
Contoh ini tidak memiliki pemeriksaan kesalahan dan rilis yang sesuai untuk kode produksi.
// 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.
}
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk