Category Archives: COM

.NET 4.0 Type Equivalence causes BadImageFormatException

Interop assemblies containing certain constructs will cause a BadImageFormatException in .NET 4.0

Also posted in .NET, Debugging, WinDbg, Windows | Tagged , , , , , , | 6 Responses

Beware of using stack-based COM objects from .NET

COM objects that don’t have the expected lifetime can cause chaos when combined with .NETs garbage collection system.

Also posted in .NET, Debugging, Software Development, WinDbg | Tagged , , , , , , | 3 Responses

Getting IUnknown from __ComObject

How do you find the unmanaged COM object that’s being referenced by a .NET object?

Also posted in .NET, Debugging, Software Development, WinDbg, Windows | Tagged , , , , | 6 Responses

Getting .NET type information in the unmanaged world

One of the tools that I write and maintain displays type information for COM objects hidden behind “handles” in Excel spreadsheets. The underlying objects can either support an interface that allows them to be richly rendered to XML, or the viewer will fall-back to using metadata and displaying the supported interfaces and their properties and methods. It […]

Also posted in .NET, Debugging, Software Development | Tagged , , , , , | Leave a comment

Beware cached IDispatch

I’ve kinda given it away there with the title, but we had an interesting set of symptoms exhibited the other day while trying to call a function in an Excel workbook via F#. It appeared that the function being called would fail depending on what had been called previously. Very odd. A bit of background: as […]

Also posted in .NET, Debugging, Excel, F# | Tagged , , , , | Leave a comment

Static libraries are Evil

In my opinion. Why? Well, because it’s too easy to use them as an excuse for not defining your shared library interfaces properly. The reason this is on my mind recently is that several hundred, yes, you heard that right, several hundred DLLs have been released by my group over the last, ooh, 10 years […]

Also posted in Excel, Rant, Software Development | Tagged , , | Leave a comment

F# – A little gotcha with GuidAttribute

Be careful when using the [<Guid(“…”)>] attribute on your COM-visible classes in F#. If you mistakenly use the curly-bracket delimited format for the GUID, regasm will silently, yes, silently, fail to add any CLSID entries for your class. That means it will be cocreatable by the prog ID, but not the CLSID. Ouch. No doubt this will […]

Also posted in .NET, F# | Tagged , , | Leave a comment

Getting COM registration data with the activation context API

When moving code from “traditional” registry-based COM to shiny new side-by-side, registration-free COM, there are a few places where you might need an analog for things like looking up a DLL name from a prog ID. E.g. in the registry-based world, you can go from a Prog ID for a class to it’s physical DLL […]

Also posted in Software Development | 1 Response

Tracking COM memory using IMallocSpy

    One of my aims at work is to simplify the development and testing regime as much as possible, and this mostly consists of making sure we’re using the most appropriate tools and technologies wherever possible. In the context of correctness checking this involves determining whether the time we spend installing, configuring and chasing […]

Also posted in Software Development | Leave a comment

Bug in _com_ptr_t::QueryStdInterfaces

Just thought I’d bring people’s attention to a bug in the COM support classes that ship with Visual Studio 2005/VC8. It’s a fairly unusual edge case (at least, if you’re not being passed VARIANTs from a script language), where the _variant_t helper class attempts to extract a standard COM interface (IUnknown or IDispatch) from a […]

Also posted in Software Development | Leave a comment
  • Follow me on Twitter Follow me on Twitter @voyce

  • Check out Wordz my new fast-paced make-a-word game for iOS.
  • Categories

  • Archives