0

我有一个使用 TAPI 2.0 的 windows mobile 6 应用程序。lineGetAddressID()需要获取电话 api 中多个呼叫使用的地址标识符,但我无法使其工作。

我尝试了以下方法无济于事:

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 作为地址 ID,它可能会起作用,但我不能保证它适用于每个平台。我想“正确”解决这个问题。

谢谢,保罗

4

1 回答 1

0

当您调用lineGetDevCapsLINEDEVCAPS 结构的成员之一时dwNumAddresses, 是与线路设备关联的地址数的计数。

TAPI声明地址标识符的值定义如下:

地址标识符的范围从零到比 dwNumAddresses 指示的值小一。

因此,您可以遍历 [0 .. (dwNumAddresses - 1)] 范围内的每个地址标识符值,并lineGetAddressCaps在您提供有效地址标识符时调用。在这种情况下不需要使用lineGetAddressID,因为地址标识符是已知且有效的。

如果这样做,在 LINEADDRESSCAPS 结构中指定的任何地址是否与调用中使用的字符串匹配lineGetAddressID?请注意,您的应用程序配置为使用 Unicode 而不是 ANSI。

于 2010-04-18T07:28:31.750 回答