How do I declare an IStream in idl so visual studio maps it to s.w.interop.comtypes?

Posted by Grahame Grieve on Stack Overflow See other posts from Stack Overflow or by Grahame Grieve
Published on 2010-04-22T13:17:53Z Indexed on 2010/04/22 15:03 UTC
Read the original article Hit count: 579

Filed under:
|
|
|
|

hi

I have a COM object that takes needs to take a stream from a C# client and processes it. It would appear that I should use IStream. So I write my idl like below. Then I use MIDL to compile to a tlb, and compile up my solution, register it, and then add a reference to my library to a C# project.

Visual Studio creates an IStream definition in my own library. How can I stop it from doing that, and get it to use the COMTypes IStream? It seems there would be one of 3 answers: add some import

  • to the idl so it doesn't redeclare IStream (importing MSCOREE does that, but doesn't solve the C# problem)
  • somehow alias the IStream in visual studio - but I don't see how to do this.
  • All my thinking i s completely wrong and I shouldn't be using IStream at all

help...thanks

[
  uuid(3AC11584-7F6A-493A-9C90-588560DF8769),
  version(1.0),
]
library TestLibrary
{

  importlib("stdole2.tlb");

  [
    uuid(09FF25EC-6A21-423B-A5FD-BCB691F93C0C),
    version(1.0),
    helpstring("Just for testing"),
    dual,
    nonextensible,
    oleautomation
  ]
  interface ITest: IDispatch
  {
    [id(0x00000006),helpstring("Testing stream")]
    HRESULT _stdcall LoadFromStream([in] IStream * stream, [out, retval] IMyTest ** ResultValue);
  };

  [
    uuid(CC2864E4-55BA-4057-8687-29153BE3E046),
    noncreatable,
    version(1.0)
  ]
  coclass HCTest
  {
     [default] interface ITest;
  };

};

© Stack Overflow or respective owner

Related posts about idl

Related posts about istream