Да уже клиентов куча наделана, в том числе и такой вариант
#include <atlbase.h>
#include <ole2.h>
CComModule _Module;
#include <atlcom.h>
#include <objbase.h>
#include "../ConPoint.h"
#import "../ConPoint.tlb" named_guids raw_interfaces_only
class CConEvent:
public CComObjectRootEx<CComSingleThreadModel>,
public _ITestEvents
{
public:
// CConEvent(){};
BEGIN_COM_MAP(CConEvent)
COM_INTERFACE_ENTRY(_ITestEvents)
END_COM_MAP()
virtual HRESULT STDMETHODCALLTYPE OnMethod1(int par)
{
char strTemp[10];
sprintf(strTemp,"The result is %d", par);
return S_OK;
};
};
int main(int argc, char* argv[])
{
if(FAILED(::CoInitializeEx(NULL,COINIT_MULTITHREADED)))
return -1;
ITest *pTest;
HRESULT hr;
try
{
if(FAILED(hr = ::CoCreateInstance(CLSID_Test,NULL,CLSCTX_LOCAL_SERVER,IID_ITest,(LPVOID*)&pTest)))throw -1;
typedef CComObject<CConEvent> CConEventImpl;
CConEventImpl*pConImpl = new CConEventImpl;
CComQIPtr<_ITestEvents, &IID__ITestEvents> Cnn(pConImpl);
DWORD dwCookie;
if(FAILED(hr = AtlAdvise((LPUNKNOWN)pTest,(LPUNKNOWN)Cnn.p, IID__ITestEvents, &dwCookie)))throw -2;
pTest->Method1(7);
if(FAILED(hr = AtlUnadvise((LPUNKNOWN)pTest,IID__ITestEvents,dwCookie)))throw -3;
pTest->Release();
delete pConImpl;
}
catch(int er)
{
::CoUninitialize();
return er;
}
pTest->Release();
return 0;
}
Так вот на AtlAdvise hr получается равным -1073741819 (0xc0000005) при любом раскладе, на любом компе и с любым клиентом..
Че делать?!!
Тут никто продуплить не может... И почему с таким точно длл-сервером все адвайзится?
Сроки горят!!!