Где инициализируются идентификаторы запросов MSTAPI? - PullRequest
0 голосов
/ 18 июня 2009

Я унаследовал некоторый код, который реализует интерфейс MSTAPI и взаимодействует с ним. Мне интересно, где идентификаторы запроса инициализируются (или если они есть). Под идентификатором запроса я имею в виду, например, параметр idRequest для сообщения LINE_REPLY .

Причина, по которой мне любопытно, заключается в том, что когда у меня есть TSP и идентификаторы запросов на отображение клиента, я вижу следующее как типичную последовательность, и обе стороны согласны с числами:

66304
66303
66286
66269
66252
66235
...

Первое значение переводится в 0x00010300 (что для меня ничего не значит, но является круглым числом), а затем идентификаторы запросов уменьшаются оттуда. (Если только идентификатор запроса внутренне не рассматривается как 2-байтовое целое число со знаком, что, я полагаю, возможно.)

Я подозреваю, что одна сторона или другая сторона должна что-то инициализировать, а не инициализирует или делает это чем-то неуместным.

Кто-нибудь знает, как должен работать идентификатор запроса? Это непрозрачный номер, сгенерированный внутри MSTAPI и предоставленный как TSP, так и клиенту? Кто-нибудь может указать на ссылки, которые объясняют это?

Спасибо.

1 Ответ

1 голос
/ 08 ноября 2009

Идентификаторы запросов генерируются внутри TAPI для всех асинхронных операций. Когда ваша программа вызывает асинхронную функцию TAPI, такую ​​как lineMakeCall, TAPI возвращает идентификатор запроса для этой операции. Тот же идентификатор запроса предоставляется TSP в TSPI_lineMakeCall. Когда TSP завершает операцию MakeCall, TSP вызывает обратный вызов CompletionProc с этим идентификатором запроса, сообщая TAPI, что эта операция завершена. После этого TAPI отправляет сообщение LINE_REPLY в ваше приложение с тем же идентификатором запроса, чтобы вы знали, что ваша операция lineMakeCall завершена.

...