byTweet中村です。うか?書き込む前にサイズを調べる必要はありません。ストリームに書き出されるに従って勝手に伸張されます。反する..Destroy.....()的な関数呼び出しは不要でしょうか?COMオブジェクトですから、IStream::Releaseを呼びましょう。書き出しのみ)まず、グローバルメモリは自分で確保する必要はありません。CreateStreamOnHGlobalの第一引数にはNULLを渡します。ImageList_Writeで書き終わったら、IStream::Statを呼び出してストリームのサイズを取得し、そのサイズ分のメモリをVirtualAllocExします。GetHGlobalFromStreamでストリームからHGLOBALを取得し、GlobalLockしてポインタを取得してから確保したメモリにコピーします。実際には、ストリームのサイズも一緒に共有メモリに書き込んでおかないと読み込むときにサイズがわからなくて困ると思いますけど。