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.cs

    dort 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 😉


Anmelden zum Antworten