2008 Jan 12, 2:26If you're like me you need to serialize an object that contains an
HIMAGELIST via IMarshal for COM's marshalling. I could
use
ImageList_Write to actually write the HIMAGELIST to a stream for IMarshal::MarshalInterface, but I needed to know the
size of the data that I was going to write for IMarshal::GetMarshalSizeMax. I thought I'd use
HIMAGELIST_QueryInterface to
get an IPersistStream pointer which works, but alas its implementation of IPersistStream::GetMaxSize just returns E_NOTIMPL. Ultimately I called ImageList_Write on a special stream that ignores the
data passed to it and just records how much data is written to it. In this fashion I could get the size the HIMAGELIST would require when written to a stream.
technical himagelist boring serialize imarshal com