Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Операция, которая выполняется асинхронно, выполняет ее обработку в вызове функции, выполняемом приложением, и оставшаяся часть его в независимом потоке выполнения после того, как TAPI 2.x вернулся из вызова функции. Чтобы обеспечить завершение обработки вызова, поставщик услуг векторирует запрос к другой активной сущности в системе ( например, локальному серверу, оборудованию надстройки, коммутатору или сети), а затем возвращается в приложение. В настоящее время в приложение возвращается отрицательный результат ошибки или положительный идентификатор запроса.
Во время асинхронного завершения (поставщик услуг получил прерывание от оборудования, то есть сообщение должно быть доставлено), поставщик услуг вызывает TAPISRV и сообщает, что "Событие X только что произошло. Доставляйте соответствующее сообщение всем заинтересованным приложениям". Когда TAPISRV получает это сообщение, оно пересылает сообщение в библиотеку динамической связи TAPI в процессе приложения, который, в свою очередь, отправляет сообщение окна, сигнализирует дескриптор событий или отправляет сообщение в порт завершения ввода-вывода, в соответствии со схемой уведомлений сообщений, выбранной приложением в lineInitializeEx или phoneInitializeEx.
После завершения асинхронной части операции в приложение отправляется сообщение LINE_REPLY (или PHONE_REPLY). Это сообщение содержит один из его параметров идентификатор запроса, возвращаемый вызовом функции. Этот идентификатор запроса позволяет приложению определить, какой исходный запрос завершен. (Приложения должны помнить идентификаторы запросов всех выполняемых запросов, чтобы сообщения ответа могли быть правильно обработаны.) Второй параметр для сообщения LINE_REPLY (или PHONE_REPLY) является асинхронным возвращаемым значением. Это либо отрицательное значение (для ошибки), либо ноль, если операция выполнена успешно. Для асинхронных операций любой из возвращаемых значений можно вернуть как часть возвращаемой функции или как параметр dwParam2 в сообщении LINE_REPLY или PHONE_REPLY. Значение 0, указывающее на успешность, будет возвращено только в сообщении LINE_REPLY и никогда не в качестве возвращаемого значения функции.
Функции инициализации (lineInitializeEx и phoneInitializeEx) сообщают TAPI, как отправлять эти сообщения в приложение.
Заметка
В некоторых случаях, если многопоточное приложение вызывает асинхронную функцию из потока, отличного от потока, из которого приложение инициализировало линию или телефонное устройство, приложение может получить сообщение LINE_REPLY или PHONE_REPLY перед возвратом асинхронной функции. В таких случаях приложение должно сохранять параметры сообщения и ждать, пока асинхронная функция не возвращается, а идентификатор запроса известен перед обработкой сообщения.