OleSaveToStream (ole32)
Last changed: -151.204.185.153

.

    [System.Runtime.InteropServices.DllImport("OLE32.DLL", EntryPoint = "CreateStreamOnHGlobal")]
    // Create a COM stream from a pointer in unmanaged memory
    extern public static int CreateStreamOnHGlobal(IntPtr ptr, bool delete, out System.Runtime.InteropServices.ComTypes.IStream pOutStm);

    [DllImport("OLE32.DLL", ExactSpelling = true, PreserveSig = false)]
    private static extern void OleSaveToStream(IPersistStreamInit pPStm, IStream pStm);

       public int ByteSizeOfIPStreamInit(IPersistStreamInit pPersistStream)
       {
         int     iSzOfStreamInBytes=0;
         IntPtr  ptrIStream = IntPtr.Zero;
         IStream IPtrStream;

         if (CreateStreamOnHGlobal(ptrIStream, true, out IPtrStream) == 0)
         {
              OleSaveToStream(pPersistStream,IPtrStream);
              iSzOfStreamInBytes = IStreamSizeRead(IPtrStream);
         }
         return (iSzOfStreamInBytes);
       }