TAPI (Telephony Application Programming
Interface)
Интерфейс TAPI - множество функций, позволяющих запрограммировать
устройства, передающие данные по телефонным линиям, не зависящим от конкретного
устройства образом, предоставляя пользователям возможность взаимодействия
по телефону. TAPI поддерживает передачу речи и данных, обеспечивает множество
типов соединений и управление вызовами. TAPI позволяет приложениям использовать
все возможности телефона, например, поддержку конференций и передачу звуковой
почты.
В Windows NT подсистема обеспечения взаимодействия по телефону состоит
из следующих компонентов (см. рис. 24):
- 1. TAPI-сервер tapisrv.exe (telephony service), реализующий
TAPI функции;
2. библиотеки динамической загрузки tapi.dll и tapi32.dll, взаимодействующие
посредством механизма RPC с TAPI-сервером;
3. один или несколько провайдеров телефонных сервисов (telephony service
providers), загружаемых TAPI-сервером.
Приложения полагаются на существование провайдеров телефонных
сервисов, которые предоставляют интерфейс TSPI (Telephony Service Provider
Interface). Провайдеры телефонных сервисов могут быть разработаны для
различных технологий, включая: 1) POTS (Plain Old Telephone Service) для
передачи голоса и данных в аналоговом формате по абонентской линии, а
далее везде в цифровом виде; 2) ISDN (Integrated Services Digital Network)
для передачи в цифровом виде; 3) Т1/Е1 для цифровой передачи со скоростью
1.544 Mbps; 4) Switched 56 и т. д.
Провайдер сервиса является библиотекой динамической загрузки (иногда в
его состав входит драйвер устройства), реализующей зависящие от устройства
действия для выполнения телефонных операций на оборудовании, таком как
телефон, модем, факс или ISDN карта. Таким образом, провайдер во взаимодействии
с библиотеками интерфейса TAPI, предохраняет приложения от деталей, зависящих
от типа сервиса и технологий коммуникаций по телефонным сетям.
Приложения вызывают функции только из библиотек tapi.dll (16-разрядные
приложения) и tapi32.dll (32-разрядные приложения), они никогда не вызывают
функции провайдеров напрямую. Библиотека tapi.dll является тонкой прослойкой,
которая отображает 16-разрядные адреса в 32-разрядные, и передает запросы
tapi32.dll. Библиотека tapi32.dll проверяет параметры функции и направляет
запрос на выполнение сервису tapisrv.exe, а когда нужно загружает в процесс
TAPI-приложения библиотеки, обеспечивающие интерфейс с пользователем (Telephony
service provider user interface DLLs), в том случае, если провайдер реализует
какие-либо элементы интерфейса с пользователем
Tapisrv.exe, исполняющийся> в собственном процессе, является
ядром TAPI. Tapisrv.exe обрабатывает вызов и передает запрос соответствующему
провайдеру сервиса. Получив запрос от tapisrv.exe, провайдер сервиса должен
реализовать интерфейс TSPI. Все провайдеры телефонных сервисов исполняются
в процессе tapisrv.exe и могут создавать необходимые для них потоки в
контексте этого процесса.
DLL провайдера может использовать любые системные функции, включая CreateFileQ
и DevicelOControlQ, для работы с драйверами оборудования независимых поставщиков,
а также с драйверами стандартных устройств, таких как последовательные
и параллельные порты. Они также могут обращаться к сетевым интерфейсам,
таким как RPC, Windows Sockets, Named Pipes для клиент-серверного взаимодействия.
В Windows NT есть встроенный провайдер телефонных сервисов юнимодема -unimdm.tsp
(Unimodem Service Provider), взаимодействующий с драйвером модема modem.sys,
и предоставляющий сервисы TAPI с большинством типов модемов. А также встроенный
провайдер сервисов компонента интерфейса TAPI уровня ядра -kmddsp.tsp
(TAPI kernel-mode service provider). Kmddsp.tsp предоставляет интерфейс
провайдера телефонных сервисов (TSPI) и передает преобразованные пользовательские
запросы драйверу ndistapi.sys, который и является компонентом интерфейса
TAPI уровня ядра.
TAPI также включает провайдеров сервиса среды (Media Service Providers,
MSP), которые дают TAPI-приложению улучшенный, определяемый средой контроль
над этой средой. Библиотека MSP, загруженная приложением, имеет соответствующий
TSP в TAPI-сервере.
Пользователь может инсталлировать любое количество провайдеров телефонных
сервисов, если только они не будут обращаться к одному и тому же устройству
одновременно. Пользователь ассоциирует устройство с провайдером сервиса
при инсталляции.
Некоторые провайдеры способны обращаться к нескольким устройствам. В некоторых
случаях пользователю может понадобиться инсталлировать драйвер устройства
вместе с провайдером. |