IUnknown implementieren
-
Hallo.
Hat einer von euch ne Ahnung wie/ob ich in C# die Release/AddRef methode von IUnknown überschreiben kann (also am Callable Wrapper vorbei direkt auf dem COM object).
Ich muß sofort mitbekommen sobald der ref-count des COM Objects auf 0 null geht, nicht erst sobald sich GC dazu durchringt den Callable Wrapper zu killen (und mein destructor aufgerufen wird)
-
Weiss nicht obs was bringt
http://www.charliepoole.org/source.php?p=FolderBrowser.csdort ist nen Codeschnippel drin vor ner Interfacedefinition
[ComImport, Guid("000214E6-0000-0000-c000-000000000046")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
Wenn ich das richtig verstehe muss man aber die GUID dieser Schnittselle kennen!
mfg sclearscreen
-
Nicht wirklich... das was die da machen ist nur festzulegen, dass das interface vom IUnknown ableitet, nicht von IDispatch wie sonst in C# überlich.
Mit dem PreserveSig kann die methoden so definieren wie sie in der typlib stehen/auftauchen, also mit int rückgabewert und out parameter, allerdings klappt das bei Release nicht.. der macht kurzerhand ein HRESULT Release_2() in meiner typelib draus...
-
Hallo,
ich kann dir zu deinem Problem leider auch nicht helfen, aber vielleicht kannst du über unmanged C++ direkt auf das COM Objekt zugreifen? Dann eine Verbindung zu C# herstellen.. kannst du ja mal versuchen