Line doesn't Close after LineDrop

Tech-Archive recommends: Speed Up your PC by fixing your registry



So here is my problem. I started my own TSP using Atsp32 from the Microsoft
SDK, I compile with Visual Studio 2003, and I use Outlook 2003 on Win XP to
test my TSP.
I've had many problems since the start, and most of them have been managed
by all the answers I found on the internet. But now, although I can make a
call and stop it using the two buttons in Outlook, the message displayed
stays in the state 'hang up'. My log shows that the TSP has a call to the
function LineDrop, but it doesn't go further. My only solution is to close
Outlook, and then I have LineDrop again, LineCloseCall, LineClose, and
ProviderShutdown.


Here is my log from the moment I click on 'end call'

TSPI_lineDrop: enter
lpsUserUserInfo=(null)
dwSize=0
callstate: 100
hangUp: enter
hangUp: returning
Disconnect: enter
Disconnect: returning
DropActiveCall: enter
DropActiveCall: returning
SetCallState: enter
SetCallState: returning
TSPI_lineDrop: returning 66201
lpsUserUserInfo=(null)
dwSize=0
--------------------------

and that's when I close Outlook

TSPI_lineDrop: enter
lpsUserUserInfo=(null)
dwSize=0
callstate: 1
DropActiveCall: enter
DropActiveCall: returning
SetCallState: enter
SetCallState: returning
TSPI_lineDrop: returning 66184
lpsUserUserInfo=(null)
dwSize=0
--------------------------
TSPI_lineCloseCall
TSPI_lineCloseCall: returning 0
--------------------------
TSPI_lineClose: enter
TSPI_lineClose: returning 0
--------------------------
TSPI_providerShutdown
TSPI_providerShutdown: returning 0


and here is my function LineDrop
LONG
TSPIAPI
TSPI_lineDrop(
DRV_REQUESTID dwRequestID,
HDRVCALL hdCall,
LPCSTR lpsUserUserInfo,
DWORD dwSize
)
{
PDRVLINE pLine = (PDRVLINE) hdCall;
writeLog("TSPI_lineDrop: enter");
writeLog("\nlpsUserUserInfo=");
writeLogLPCSTR(lpsUserUserInfo);
writeLog("\ndwSize=");
writeLogDWORD(dwSize);
#if DBG
FUNC_PARAM params[] =
{
{ gszdwRequestID, dwRequestID },
{ gszhdCall, hdCall },
{ "lpsUserUserInfo", lpsUserUserInfo },
{ gszdwSize, dwSize }
};
FUNC_INFO info =
{
"TSPI_lineDrop",
4,
params
};
#endif
writeLog("\ncallstate: ");
writeLogDWORD(pLine->dwCallState);
if(pLine->dwCallState == LINECALLSTATE_CONNECTED) hangUp();
if(connected == 1) disconnect();
Prolog (&info);
DropActiveCall (pLine);
SetCallState (pLine, LINECALLSTATE_IDLE, 0);
(*gpfnCompletionProc)(dwRequestID, 0);
//dealloc();
//TSPI_lineCloseCall(hdCall);
//TSPI_lineClose((HDRVLINE)line);
//TSPI_providerShutdown(version, providerID);
writeLog("\nTSPI_lineDrop: returning ");
writeLogLONG(Epilog (&info, dwRequestID));
writeLog("\nlpsUserUserInfo=");
writeLogLPCSTR(lpsUserUserInfo);
writeLog("\ndwSize=");
writeLogDWORD(dwSize);
writeLog("\n--------------------------\n");
return (Epilog (&info, dwRequestID));
//return 0;
}



as you can see, I've tried things bu it doesn't work either. Do you have a
hint ?


--
Adrien HAVAS
Student at ECE, School of Engineering Paris - Information Systems &
Networking


.


Quantcast