Fjerne COM Metadata i .NET Cache ?
Hej - dette spørgsmål er en opfølgning på spørgsmålet om en Access Violation Exception fundet her: http://www.eksperten.dk/spm/757861Efter at have kontaktet udvikleren af det oprindelige kode eksempel:
http://www.microsoft.com/belux/msdn/nl/community/columns/munoz/extendwmp_part1.mspx
har vedkommende opdateret koden, men erkender at der tilstadighed er et problem med pointer oprydningen.
Udvikleren skriver følgende til mig:
"The Access Violation is because.NET caches COM metadata information, so the next time the COM object is created, the CCW of the “fake” interface (see DECLARE_MANAGED_INTERFACE in my code) is incorrectly mapped to the unmanaged pointer. This happens only when the client (i.e. WMP) creates an object for the second time in the same process passing an IID other than IID_IUnknown to CoCreateInstance."
Hans kode findes her:
http://download.microsoft.com/download/d/f/c/dfc7a022-3426-4868-b23c-3818a6e54305/hellowmp.zip
-----------------------------------------------------------
Spørgsmålet er således hvordan man tilgår de såkaldte COM metadata - og får rydet op så det nedlagte "fake" interface ikke bliver brugt, men derimod et nyt "fake" interface.
Jeg må indrømme at jeg aldrig har hørt om en .NET Cache af COM metainformation, men håber at nogle af jer har en idé om hvordan problemet løses.
//EoniX