функция lineInitializeExA (tapi.h)
Функция lineInitializeEx инициализирует использование TAPI приложения для последующего использования абстракции строк. Он регистрирует указанный механизм уведомлений приложения и возвращает количество устройств, доступных приложению. Устройство строки — это любое устройство, которое предоставляет реализацию для префиксированных строк функций в API телефонии.
Синтаксис
LONG lineInitializeExA(
LPHLINEAPP lphLineApp,
HINSTANCE hInstance,
LINECALLBACK lpfnCallback,
LPCSTR lpszFriendlyAppName,
LPDWORD lpdwNumDevs,
LPDWORD lpdwAPIVersion,
LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
);
Параметры
lphLineApp
Указатель на расположение, заполненное дескриптором использования приложения для TAPI.
hInstance
Дескриптор экземпляра клиентского приложения или библиотеки DLL. Приложение или БИБЛИОТЕКА DLL могут передавать null для этого параметра, в этом случае TAPI использует дескриптор модуля корневого исполняемого файла процесса (в целях определения целевых объектов передачи вызовов и приоритетов режима мультимедиа).
lpfnCallback
Адрес функции обратного вызова, которая вызывается для определения состояния и событий на устройстве, адресах или вызовах, когда приложение использует метод уведомления о событиях скрытого окна (дополнительные сведения см. в lineCallbackFunc). Этот параметр игнорируется и должен иметь значение NULL, когда приложение выбирает механизмы уведомлений о событиях "дескриптор событий" или "порт завершения".
lpszFriendlyAppName
Указатель на null-завершенную текстовую строку, содержащую только отображаемые символы. Если этот параметр не null, он содержит имя, предоставленное приложением. Это имя предоставляется в структуре lineCALLINFO
lpdwNumDevs
Указатель на расположение DWORDразмера. После успешного завершения этого запроса это расположение заполняется количеством устройств, доступных приложению.
lpdwAPIVersion
Указатель на расположение DWORDразмера. Приложение должно инициализировать этот DWORD, прежде чем вызывать эту функцию, в самую высокую версию API, предназначенную для поддержки (например, то же значение, которое будет передаваться в параметр dwAPIHighVersionlineNegotiateAPIVersion). Искусственные высокие значения не должны использоваться; Значение должно быть точно задано. TAPI преобразует все новые сообщения или структуры в значения или форматы, поддерживаемые версией приложения. После успешного завершения этого запроса это расположение заполняется самой высокой версией API, поддерживаемой TAPI, тем самым позволяя приложению обнаруживать и адаптироваться к установке в системе с другой версией TAPI.
lpLineInitializeExParams
Указатель на структуру типа LINEINITIALIZEEXPARAMS с дополнительными параметрами, используемыми для установления связи между приложением и TAPI (в частности, выбранным механизмом уведомлений о событиях приложения и связанными параметрами).
Возвращаемое значение
Возвращает ноль, если запрос выполнен успешно или отрицательный номер ошибки, если возникает ошибка. Возможные возвращаемые значения:
LINEERR_INVALAPPNAME, LINEERR_OPERATIONFAILED, LINEERR_INIFILECORRUPT, LINEERR_INVALPOINTER, LINEERR_REINIT, LINEERR_NOMEM, LINEERR_INVALPARAM.
Замечания
Приложения должны выбрать один из трех механизмов, с помощью которых TAPI уведомляет приложение событий телефонии: скрытое окно, дескриптор событий или порт завершения.
Механизм "Скрытое окно" выбран путем указания LINEINITIALIZEEXOPTION_USEHIDDENWINDOW в элементе dwOptions
Механизм дескриптора событий выбирается путем указания LINEINITIALIZEEXOPTION_USEEVENT в элементе dwOptions в структуре LINEINITIALIZEEXPARAMS. В этом механизме TAPI создает объект события от имени приложения и возвращает дескриптор в элементе hEvent hEvent в LINEINITIALIZEEXPARAMS. Приложение не должно управлять этим событием каким-либо образом (например, не следует вызывать SetEvent, ResetEvent, CloseHandleи т. д.) или неопределенные результаты поведения; Приложение может ждать только этого события с помощью таких функций, как WaitForSingleObject или MsgWaitForMultipleObjects. TAPI сигнализирует об этом событии всякий раз, когда уведомление о событии телефонии ожидается для приложения; Приложение должно вызвать lineGetMessage, чтобы получить содержимое сообщения. Событие сбрасывается с помощью TAPI, если события не ожидаются. Дескриптор события закрывается и объект события, уничтоженный TAPI во время функции
Механизм порта завершения выбирается путем указания LINEINITIALIZEEXOPTION_USECOMPLETION PORT в элементе dwOptions
Если многопоточное приложение использует механизм дескриптора событий и несколько потоков ожидает обработки дескриптора, или механизма уведомления порта завершения, а несколько потоков ожидается на порту, можно обрабатывать события телефонии вне последовательности. Это не связано с последовательностью доставки событий из TAPI, но может быть вызвано срезом потоков или выполнением потоков на отдельных процессорах.
Если возвращается LINEERR_REINIT и запрашивается повторная инициализация TAPI, Например, в результате добавления или удаления поставщика услуг телефонии lineInitializeEx отклоняются с этой ошибкой до тех пор, пока последнее приложение не завершит использование API (используя lineShutdown), в то время как новая конфигурация становится эффективной, и приложения снова могут вызывать lineInitializeEx.
Если возвращается значение ошибки LINEERR_INVALPARAM, указанный параметр hInstance недопустим.
Приложение может ссылаться на отдельные устройства линии с помощью идентификаторов строк, которые варьируются от нуля до dwNumDevs минус один. Приложение не должно предполагать, что эти устройства могут выполнять какую-либо определенную функцию TAPI без первого запроса возможностей устройства, lineGetDevCaps и lineGetAddressCaps.
Заметка
Заголовок tapi.h определяет lineInitializeEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
целевая платформа | Виндоус |
заголовка | tapi.h |
библиотеки |
Tapi32.lib |
DLL | Tapi32.dll |
См. также
Справочник по службам базовой телефонии
Обзор