shvetsov
asked on
TAPI lineAccept
I've created a program using TAPI interface, and here is it's fragment:
void AcceptThread(LPVOID lpVoid)
{ g_lAcceptID = lineAccept((HCALL)lpVoid, NULL, 0);
g_hevtAccept = CreateEvent(NULL, FALSE, FALSE, NULL);
WaitForSingleObject(g_hevt Accept, INFINITE);
g_lAcceptID = 0;
CloseHandle(g_hevtAccept);
if(g_lAcceptResult == LINECALLSTATE_CONNECTED)
{
}
else
HangUp();
}
VOID FAR PASCAL lineCallbackFunc(HANDLE hDevice, DWORD dwMsg,
DWORD dwCallbackInstance, DWORD dwParam1,
DWORD dwParam2, DWORD dwParam3)
{ switch(dwMsg)
{ case LINE_CALLSTATE:
switch(dwParam1)
{
case LINECALLSTATE_OFFERING:
AddToLog("Ring");
RunThread((LPTHREAD_START_ ROUTINE)Ac ceptThread , (LPVOID)hDevice);
break;
case LINECALLSTATE_ACCEPTED:
AddToLog("Call accepted");
}
if(g_lAcceptID != 0)
{ g_lAcceptResult = dwParam1;
SetEvent(g_hevtAccept);
}
}
}
My program receives ring notification, starts lineAccept() in separate thread,
lineAccept() returns Ok, but modem doesn't really answer the call.
void AcceptThread(LPVOID lpVoid)
{ g_lAcceptID = lineAccept((HCALL)lpVoid, NULL, 0);
g_hevtAccept = CreateEvent(NULL, FALSE, FALSE, NULL);
WaitForSingleObject(g_hevt
g_lAcceptID = 0;
CloseHandle(g_hevtAccept);
if(g_lAcceptResult == LINECALLSTATE_CONNECTED)
{
}
else
HangUp();
}
VOID FAR PASCAL lineCallbackFunc(HANDLE hDevice, DWORD dwMsg,
DWORD dwCallbackInstance, DWORD dwParam1,
DWORD dwParam2, DWORD dwParam3)
{ switch(dwMsg)
{ case LINE_CALLSTATE:
switch(dwParam1)
{
case LINECALLSTATE_OFFERING:
AddToLog("Ring");
RunThread((LPTHREAD_START_
break;
case LINECALLSTATE_ACCEPTED:
AddToLog("Call accepted");
}
if(g_lAcceptID != 0)
{ g_lAcceptResult = dwParam1;
SetEvent(g_hevtAccept);
}
}
}
My program receives ring notification, starts lineAccept() in separate thread,
lineAccept() returns Ok, but modem doesn't really answer the call.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Your first answer impressed me very much :-)