Доброго времени суток. Пишу 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;
}