2010-03-24 2 views
0

TAPI 2.0을 사용하는 Windows Mobile 6 응용 프로그램이 있습니다. lineGetAddressID()은 전화 API에서 여러 통화에 사용되는 주소 식별자를 가져 오는 데 필요하지만 작동하도록 설정할 수는 없습니다.TAPI lineGetAddressID()가 LINEERR_INVALADDRESS와 함께 실패합니다.

는 나는 아무 소용에 다음을 시도했다 :

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을 반환합니다. 아무도 내가 잘못하고있는 것을 지적 할 수 있습니까?

부수적 인 질문으로 프로그래밍 방식으로 주소를 가져올 수 있습니까? lineGetAddressCaps()에 의해 반환 된 LINEADDRESSCAPS 구조체에 나타나지만 주소 식별자가 필요합니다 (주소가 필요한 lineGetAddressID()에서 올 필요가 있습니다).

참고 : 주소 ID로 0을 사용할 수 있으며 실제로 작동하지만 모든 플랫폼에서 작동한다는 보장은 없습니다. 이 문제를 해결하고 싶습니다.

감사합니다, PaulH

답변

0

당신이 LINEDEVCAPS 구조, dwNumAddresses의 회원 lineGetDevCaps 하나를 호출 라인 장치와 관련된 주소의 수의 수입니다.

TAPI 어드레스 식별자의 값이 다음과 같이 정의되는 것을 말한다 :

주소 식별자 0에서 dwNumAddresses로 나타낸 값보다 작은 하나의 범위.

그래서 [0 .. (dwNumAddresses - 1)] 범위에있는 각각의 어드레스 식별자 값을 반복 할 수 있고, 유효한 어드레스 식별자를 제공 한 것처럼 lineGetAddressCaps를 호출한다. 이 경우 주소 식별자가 알려져 있고 유효하므로 lineGetAddressID을 사용할 필요가 없습니다.

이렇게하면 LINEADDRESSCAPS 구조에 지정된 주소 중 어느 하나라도 lineGetAddressID을 호출 할 때 사용되는 문자열과 일치합니까? 응용 프로그램이 ANSI가 아닌 유니 코드를 사용하도록 구성되었다는 점에 유의하십시오.

+0

각 회선 장치에는'dwNumAddresses == 1 '이 있습니다. 'LINEADDRESSCAPS' 구조체에서는'dwAddressSize == 0'을 사용합니다. – PaulH

+0

'lineGetAddressCaps'를 호출 할 때 반환 값은 무엇입니까? 'LINEERR_STRUCTURETOOSMALL'입니까? 이것은 'dwAddressSize' 값이 0 인 이유를 설명 할 수 있습니다. – Henk

+0

반환 값은 0입니다. 다른 값은 dwAddressSeize가 아니라 dwAddressFeatures, dwDeviceClassesSize/Offset, dwAddrCapFlags 등과 같이 채워집니다. – PaulH

관련 문제