In het kort: wie kan mij vertellen hoe ik een .NET assembly kan aanspreken vanuit Win32 (zonder COM)?
Ik heb nl. een Win32-applicatie waarvoor ik een plugin wil schrijven in .NET. De manier waarop de betreffende applicatie plugins ondersteunt is door een Win32 DLL te schrijven die een aantal voorgedefinieerde functies implementeert. Echter, omdat de betreffende functies zich niet houden aan de COM-standaard, betekent dit dat ik geen gebruik kan maken van de interop-functionaliteit die .NET biedt.
Ik weet dat het met behulp van P/Invoke mogelijk is om vanuit .NET een Win32 DLL aan te spreken. Nu schijnt het omgekeerde pad (.NET aanroepen vanuit Win32) heel toepasselijk Inverse P/Invoke te heten. En er is bijna niks over te vinden...
Zo rept het MSDN artikel Interoperating with Unmanaged Code bijvoorbeeld met geen woord over Inverse P/Invoke of iets wat erop lijkt. Volgens het artikel Mixed DLL Loading Problem is het zelfs mogelijk om Win32 en MSIL code te combineren in een DLL, maar wederom: geen referenties naar hoe dat dan zou moeten.
Het enige bruikbare wat ik heb gevonden gaat nota bene over Delphi.NET: .NET Interoperability: .NET <-> Win32. In dit artikel heeft de schrijver het over Creative Round Tripping, een proces waarbij men de .NET assembly moet disassemblen, het assembly manifest moet aanpassen om de Win32 exports te definieren en vervolgens het hele verhaal weer moet reassemblen. Klinkt me behoorlijk als overkill in de oren.
Echter, ik ben dat creative roundtripping verhaal nu meerdere malen tegengekomen, wat doet vermoeden dat het 1 van de weinige oplossingen is om .NET code vanuit Win32 aan te roepen.
Wie kan hier eens zijn licht op laten schijnen?
Ik heb nl. een Win32-applicatie waarvoor ik een plugin wil schrijven in .NET. De manier waarop de betreffende applicatie plugins ondersteunt is door een Win32 DLL te schrijven die een aantal voorgedefinieerde functies implementeert. Echter, omdat de betreffende functies zich niet houden aan de COM-standaard, betekent dit dat ik geen gebruik kan maken van de interop-functionaliteit die .NET biedt.
Ik weet dat het met behulp van P/Invoke mogelijk is om vanuit .NET een Win32 DLL aan te spreken. Nu schijnt het omgekeerde pad (.NET aanroepen vanuit Win32) heel toepasselijk Inverse P/Invoke te heten. En er is bijna niks over te vinden...
Zo rept het MSDN artikel Interoperating with Unmanaged Code bijvoorbeeld met geen woord over Inverse P/Invoke of iets wat erop lijkt. Volgens het artikel Mixed DLL Loading Problem is het zelfs mogelijk om Win32 en MSIL code te combineren in een DLL, maar wederom: geen referenties naar hoe dat dan zou moeten.
Het enige bruikbare wat ik heb gevonden gaat nota bene over Delphi.NET: .NET Interoperability: .NET <-> Win32. In dit artikel heeft de schrijver het over Creative Round Tripping, een proces waarbij men de .NET assembly moet disassemblen, het assembly manifest moet aanpassen om de Win32 exports te definieren en vervolgens het hele verhaal weer moet reassemblen. Klinkt me behoorlijk als overkill in de oren.
Echter, ik ben dat creative roundtripping verhaal nu meerdere malen tegengekomen, wat doet vermoeden dat het 1 van de weinige oplossingen is om .NET code vanuit Win32 aan te roepen.
Wie kan hier eens zijn licht op laten schijnen?