On Tue, 2012-06-19 at 21:45 +0200, robert.van.herk@serioustoys.com wrote:
We don't have to call SHCreateStreamOnFileEx, we can add a suitable implementation to msi.
Ah, I see.
I guess this stream cannot escape from MSI. The only way it can be accessed is through MsiRecordReadStream and MsiRecordSetStream, but it can never be accessed directly?
In that case, we don't have to use an IStream... I could alter msipriv.h such that MSIFIELD just holds a HANDLE in case the field is a stream. The handle can then be created through CreateFile, and I guess then I could alter the permissions such that it matches the MS implementation...
Do you think that that is the way to go?
Or is there a deep reason why we should use IStream, and create our own IStream implementation?
IStream is not exposed to the user, but an internal interface would probably end up looking a lot like IStream because we need read/write/seek operations, reference counting and the ability to create clones. So we might as well use IStream.