![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Частый гость ![]() ![]() ![]() Группа: Участники Сообщений: 42 Регистрация: 11.8.2008 Пользователь №: 11688 ![]() |
Пишу программу, которая должна отслеживать звонки на АТС (ipLDK 300 3.7Ce) через TAPI.
Подключиться получается, и даже уведомления о звонках получаю, но через пол часа или час, уведомления перестают приходить. Перезапуск программы (как выяснилось позже) дает результат, но уведомления перестают приходить уже через минут 10 - 15. Кто сталкивался с подобным, подскажите где собака зарыта? ) Вот код, который слушает события от АТС. CODE DWORD g_dwAPIVersion = 0x00020001;
DWORD g_dwExtVersion = 0; unsigned __stdcall line_event_proc(void* p) { LINEMESSAGE lm; LPLINECALLSTATUS lpCallStatus; long lResult; DWORD dwLCSSize; TCHAR szBuff[4096]; int nBuffPos; dwLCSSize = sizeof(LINECALLSTATUS) + 4096; lpCallStatus = (LPLINECALLSTATUS)malloc(dwLCSSize); SYSTEMTIME st; while (true) { lResult = lineGetMessage(g_hLineApp, &lm, INFINITE); if (lResult != 0) { if (lResult == LINEERR_INVALAPPHANDLE){ _tprintf(_T("Application shuting down, leaving thread\n")); return 0; } _tprintf(_T("EventThreadFunc: error on lineGetMessage: %x\n"), lResult); Sleep(100); continue; } if (LINE_CALLSTATE == lm.dwMessageID) { memset(lpCallStatus, 0, dwLCSSize); lpCallStatus->dwTotalSize = dwLCSSize; // line status if (!lineGetCallStatus(lm.hDevice, lpCallStatus)) { switch(lpCallStatus->dwCallState) { // здесь обрабатываю сообщения } } } } return 0; } int _tmain(int argc, _TCHAR* argv[]) { LINEINITIALIZEEXPARAMS lip = {}; lip.dwTotalSize = sizeof(LINEINITIALIZEEXPARAMS); lip.dwOptions = LINEINITIALIZEEXOPTION_USEEVENT; lResult = lineInitializeEx(&g_hLineApp, GetModuleHandle(NULL), NULL, _T("TAPI call monitor"), &dwNumDevs, &g_dwAPIVersion, &lip); g_hTAPIEvent = lip.Handles.hEvent; hThread = (HANDLE)_beginthreadex(NULL, 0, &line_event_proc, NULL, 0, &nThreadID); for (DWORD dwDeviceID = 0; dwDeviceID < dwNumDevs; dwDeviceID++) { HLINE hLine; LINEEXTENSIONID lineExtensionID = {}; lResult = lineNegotiateAPIVersion(g_hLineApp, dwDeviceID, dwAPILowVersion, dwAPIHighVersion, &g_dwAPIVersion, &lineExtensionID); lResult = lineOpen (g_hLineApp, dwDeviceID, &hLine, g_dwAPIVersion, g_dwExtVersion, NULL, LINECALLPRIVILEGE_MONITOR, 0, NULL); } getchar(); Sleep(100); } |
|
|
![]() |
![]()
Сообщение
#2
|
|
![]() Ветеран форума ![]() ![]() ![]() ![]() ![]() Группа: Участники Сообщений: 1166 Регистрация: 29.8.2007 Из: Москва Пользователь №: 4065 ![]() |
Станция может обслужить и два хоста (больше не пробовал)
У нас стоял драйвер на серваке и я параллельно запускал на своем компе и работало. |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 18.7.2025, 16:38 |