TAPI lineGetAddressID () завершается ошибкой с LINEERR_INVALADDRESS - PullRequest
0 голосов
/ 25 марта 2010

У меня есть приложение для Windows Mobile 6, использующее TAPI 2.0. lineGetAddressID() требуется для получения идентификатора адреса, используемого несколькими вызовами в телефонном интерфейсе, но я не могу заставить его работать.

Я пробовал следующее безрезультатно:

HLINE line; // valid handle from lineOpen();
DWORD addr_id = 0;
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"1234", 5 );
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"5551234", 8 );
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"1115551234", 11 );
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"11115551234", 12 );

Все они возвращают LINEERR_INVALADDRESS. Кто-нибудь может указать, что я могу делать неправильно?

В качестве дополнительного вопроса, как я могу программно получить адрес? Он появляется в структуре LINEADDRESSCAPS, возвращаемой lineGetAddressCaps(), но для этого требуется идентификатор адреса (который должен прийти из lineGetAddressID(), для которого требуется адрес ...).

Примечание: я понимаю, что мог бы использовать 0 в качестве идентификатора адреса, и он, вероятно, будет работать, но я не гарантирую, что он будет работать для каждой платформы. Я бы хотел, чтобы это было решено «правильно».

Спасибо, PaulH

1 Ответ

0 голосов
/ 18 апреля 2010

Когда вы вызываете lineGetDevCaps, один из членов структуры LINEDEVCAPS, dwNumAddresses, является счетчиком количества адресов, связанных с линейным устройством.

TAPI указывает, что значение идентификаторов адреса определяется следующим образом:

Идентификаторы адресов в диапазоне от нуля до единицы меньше значения, указанного в dwNumAddresses.

Таким образом, вы можете перебирать каждое значение идентификатора адреса в диапазоне [0 .. (dwNumAddresses - 1)] и вызывать lineGetAddressCaps, поскольку вы указали действительный идентификатор адреса. В этом случае нет необходимости использовать lineGetAddressID, поскольку идентификатор адреса известен и действителен.

Если вы сделаете это, совпадает ли какой-либо из адресов, указанных в структуре LINEADDRESSCAPS, со строкой, используемой в ваших вызовах к lineGetAddressID? Отмечая, что ваше приложение настроено на использование Unicode, а не ANSI.

...