IStream

実際はマーシャリングしなくても動くけど、忘れないうちにメモ。


// global
IStream* ssf;

// thread01
HRESULT hr;
IShellFolder* sf;
hr = ::CoMarshalInterThreadInterfaceInStream(IID_IShellFolder, sf, &ssf);
sf->Release();

// thread02
HRESULT hr;
IShellFolder* sf;
hr = ::CoGetInterfaceAndReleaseStream(ssf, IID_IShellFolder, (void**)&sf);
sf->Release();
// ssf->Release(); してはいけない!!