After beating around a number of bushes, I've decided to jump into interop with both feet. So, I'm trying to put together code to let me use IFilter via LoadIFilter. Do I need to write RCW method signatures for all the methods of an interface, or only the ones I am interested in/going to call?
Thanks, Erick ----- Original Message ----- From: "Peter Stephens" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, May 09, 2002 3:05 PM Subject: Re: [DOTNET] Using IFilter interface from C# > > Erick Thompson spake: > > > > How would I go about using the IFilter[1] interface from C#? From what I > > gather, it's not an automation interface (== not a COM object?), > > so I'm not > > sure where to start. > > > > Thanks, > > Erick > > > > [1] > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/i > ndexsrv/ixrefint_9sfm.asp > > > If there is a type library, you could use the tlbimp utility to generate a > proxy assembly. > > If there is no type library, you can create your own Runtime Callable > Wrappers (RCWs). > > Here is an RCW for IClassFactory: > > ===> > [ComVisible(true)] > [Guid("00000001-0000-0000-c000-000000000046")] > [CLSCompliant(false)] > [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] > public interface IClassFactory > { > [PreserveSig] > Int32 CreateInstance( > IntPtr pUnkOuter, > [In] ref Guid refiid, > IntPtr ppvObject); > void LockServer( > [MarshalAs(UnmanagedType.Bool)] Boolean fLock); > } > <=== > > And here is an RCW for IPersistStreamInit: > ===> > [ComVisible(true)] > [Guid("7fd52380-4e07-101b-ae2d-08002b2ec713")] > [CLSCompliant(false)] > [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] > public interface IPersistStreamInit > { > void GetClassID(out Guid pClassID); > [PreserveSig] > Int32 IsDirty(); > void Load(IStream stream); > void Save(IStream stream, [MarshalAs(UnmanagedType.Bool)] Boolean > fClearDirty); > UInt64 GetSizeMax(); > void InitNew(); > } > <=== > > If you call a DLL routine to get your interface pointer, setup your p/invoke > as follows: > // P/Invoke functions > [DllImport("urlmon.dll")] > private static extern Int32 CoInternetGetSession( > UInt32 dwSessionMode, > ref IInternetSession ppIInternetSession, > UInt32 dwReserved); > > -- > Peter > > You can read messages from the DOTNET archive, unsubscribe from DOTNET, or > subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.