Hi,

I have an unmanged interface which i have exposed through COM to C#. I
have been able to implement the interface in one of the C# classes
(say Class1) as well.

But now what i want to do is that i need to pass the reference of the
object of Class1 to this COM wrapper...and then from inside that
wrapper i want to call one of the func of that class1.

What i did roughly is something like this:

/
*********************************************************************************************************/
//this is the interface that was exposed
// IExportedClassWrapper
[
object,
uuid("7DD5445A-A8AE-471C-A065-629C3A004362"),
dual, helpstring("IExportedClassWrapper Interface"),
pointer_default(unique)
]
__interface IExportedClassWrapper : IDispatch
{
[id(4), helpstring("method CheckInterfaceOne")] HRESULT
CheckInterfaceOne(IDispatch* a, [out,retval] LONG* RetParam);
};
/
*********************************************************************************************************/

/
*********************************************************************************************************/
STDMETHODIMP CExportedClassWrapper::CheckInterfaceOne(IDispatch* a,
LONG* RetParam)
{
// TODO: Add your implementation code here
IExportedClassWrapper* objI = static_cast<IExportedClassWrapper*>(a);

//THIS IS THE LINE ON WHICH I'M GETTING EXCEPTION
//SAYING THAT THE CALLING CONVENTION IS NOT RIGHT....
objI->MethodSampleReturn(RetParam);

return S_OK;
}
/
*********************************************************************************************************/

/
*********************************************************************************************************/
//then the C# class implemented it like
public class Class1 : SampleCISCOATLCOMWrapper.IExportedClassWrapper
{
public Class1()
{
//
// TODO: Add constructor logic here
//
}

#region IExportedClassWrapper Members

public int CheckInterfaceOne(object a)
{
// TODO: Add Class1.CheckInterfaceOne implementation
//THIS IS THE METHOD
THAT I WANT TO CALL FROM COM
return 20;
}

#endregion
}
/
*********************************************************************************************************/
//and then i used this interface like this in C#

SampleCISCOATLCOMWrapper.CExportedClassWrapperClass objCl = new
SampleCISCOATLCOMWrapper.CExportedClassWrapperClass();

Class1 objClass = new Class1();

int nRet = objCl.CheckInterfaceOne(objClass);
/
*********************************************************************************************************/

this whole thing is sort of circular....:)

I think you got an idea of what i want to do...
Is it possible? :)
And how?

Note: I dont have much experience in COM ...

Thanks,
Saad.