Bill Roper (billroper) wrote,
Bill Roper

The COM Game

We still use OLE compound document files to store our entities on a desktop. This normally works pretty well until someone does something odd in our code. In this case, what someone did was some fancy footwork with opening and closing the storage underneath a document in order to get it to be smaller than it would otherwise be by saving it as a new storage.

The only problem is that it doesn't work. It looks like something else has grabbed a reference to the underlying IStorage and the associated IPropertySetStorage.

Figuring out what did this is just a wee bit challenging since there's no way to directly observe the reference counts in the debugger. The only way to get a reference count on a COM object is to AddRef and Release it, each of which will return the current reference count. And that trick doesn't work if you used a smart COM pointer, because you aren't allowed to AddRef and Release those directly, so you have to create a new reference to the IStorage and AddRef/Release it to get the overall reference count.

At the moment, I am extremely annoyed and getting ready to add a lot of instrumentation to this mess so I can sort it out.


In other news, Katie asked me to send you a message: :)
Tags: home, kids, microsoft, musings, work

  • Mostly Oblivious

    I see the occasional report in electronic print, or on the TV, or even on the radio, but other than that, I have completely ignored this year's…

  • Idle Thoughts

    So after the Battle of Hogwarts, were the fallen of the victors taken to the Voldemortuary?

  • The Tomorrow War

    Gretchen and I got around to watching this tonight. As I said to Gretchen at one point during the film, it's the best bad movie I've seen in a while.…

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded