![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
![]() |
| |
| | #1 (permalink) |
| | Implementing Unmanaged Interface in C# 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. |
My System Specs![]() |
![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| Linker error when linking unmanaged library with manged exe | .NET General | |||
| Unmanaged C++ client invoke C# component to Add PSSnapin Failed | PowerShell | |||
| Problem getting exception info from unmanaged C++ | .NET General | |||
| Dispose Unmanaged resources | .NET General | |||