IStream *CreateStreamFromData(const void *data, size_t len) { if (!data) return NULL; ScopedComPtr<IStream> stream; if (FAILED(CreateStreamOnHGlobal(NULL, TRUE, &stream))) return NULL; ULONG written; if (FAILED(stream->Write(data, (ULONG)len, &written)) || written != len) return NULL; LARGE_INTEGER zero = { 0 }; stream->Seek(zero, STREAM_SEEK_SET, NULL); stream->AddRef(); return stream; }