ActiveX и H323Plus (openH323)
От: Skeeet  
Дата: 29.04.08 02:55
Оценка:
Доброго времени суток. Пишу ActiveX обертку для H323Plus. Столкнулся с совсем непонятной проблеммой. При попытке сбросить все текущие звонки библиотека просто падает. Причем падает только если работать с АctiveX. При вызове того же кода из обычного консольного приложения все работает без проблем. Может кто сталкивался с подобной ошибкой, и в чем может быть дело? У меня варианта два: 1-траба с потоками. 2 — с памятью.
Пример кода ниже.

// end point
MyH323EndPoint::MyH323EndPoint()
{
    // Set capability
    AddAllCapabilities(0, 0, "*");
    AddAllUserInputCapabilities(0, P_MAX_INDEX);
}
// call generator
CallGen::CallGen()
: PProcess("SKT", "H323Plus Com Component"),
console(PConsoleChannel::StandardInput)
{
    h323 = new MyH323EndPoint();
    h323->SetSendUserInputMode(H323Connection::SendUserInputModes::SendUserInputAsQ931);
    h323->SetLocalUserName(PString("temp"));
    h323->caller = this;    
}

// COM
class ATL_NO_VTABLE CCOMDemo :
    public IH323_Helper
{
public:

    CallGen *cg;
/// skipped////
public:
    STDMETHOD(MakeCall)(BSTR destination, BSTR *callToken);
    STDMETHOD(ClearCall)(BSTR callToken);
public:
    CCOMDemo(void)
    {
        cg=new CallGen();
    }
};

STDMETHODIMP CCOMDemo::MakeCall(BSTR destination,  BSTR *callToken)
{
    
    PString curToken=NULL;
    PString curDestination="0089525551690000@203.208.199.20";
    cg->h323->MakeCall(curDestination,curToken);
    return S_OK;
}
STDMETHODIMP CCOMDemo::ClearCall( BSTR callToken)
{
    cg->h323->ClearAllCalls();  // После этого вызова собственно и падает
    return S_OK;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.