Exemple #1
0
        public static ComStorage CreateStorageOnStream(Stream stream, ComStorage.OpenMode openMode)
        {
            Util.ThrowOnNullArgument(stream, "stream");
            ComStorage.CheckOpenMode(openMode, "openMode", ComStorage.validCreateModes);
            ComStorage comStorage = null;

            Interop.IStorage storage = null;
            try
            {
                LockBytesOnStream lockBytes = new LockBytesOnStream(stream);
                int num = Interop.StgCreateDocfileOnILockBytes(lockBytes, (uint)openMode, 0, out storage);
                if (num != 0)
                {
                    throw new MsgStorageException(MsgStorageErrorCode.CreateStorageOnStreamFailed, MsgStorageStrings.FailedCreateStorage("ILockBytes"), num);
                }
                comStorage = new ComStorage(storage);
            }
            finally
            {
                if (comStorage == null && storage != null)
                {
                    Marshal.ReleaseComObject(storage);
                }
            }
            return(comStorage);
        }
Exemple #2
0
        public static ComStorage CreateFileStorage(string filename, ComStorage.OpenMode openMode)
        {
            Util.ThrowOnNullArgument(filename, "filename");
            ComStorage.CheckOpenMode(openMode, "openMode", ComStorage.validCreateModes);
            object     obj = null;
            ComStorage result;

            try
            {
                Guid iidistorage = Interop.IIDIStorage;
                int  num         = Interop.StgCreateStorageEx(filename, (uint)openMode, 0, 0U, IntPtr.Zero, IntPtr.Zero, ref iidistorage, out obj);
                if (num != 0)
                {
                    throw new MsgStorageException(MsgStorageErrorCode.CreateFileFailed, MsgStorageStrings.FailedCreateStorage(filename), num);
                }
                Interop.IStorage storage = obj as Interop.IStorage;
                if (storage == null)
                {
                    throw new MsgStorageException(MsgStorageErrorCode.CreateFileFailed, MsgStorageStrings.FailedCreateStorage(filename));
                }
                obj    = null;
                result = new ComStorage(storage);
            }
            finally
            {
                if (obj != null)
                {
                    Marshal.ReleaseComObject(obj);
                }
            }
            return(result);
        }
Exemple #3
0
 public ComStorage OpenStorage(string storageName, ComStorage.OpenMode mode)
 {
     this.CheckDisposed("ComStorage::OpenStorage");
     Util.ThrowOnNullArgument(storageName, "storageName");
     ComStorage.CheckOpenMode(mode, "mode", ComStorage.validOpenModes);
     Interop.IStorage iOpenStorage = null;
     Util.InvokeComCall(MsgStorageErrorCode.FailedOpenSubstorage, delegate
     {
         this.iStorage.OpenStorage(storageName, null, (uint)mode, IntPtr.Zero, 0U, out iOpenStorage);
     });
     return(new ComStorage(iOpenStorage));
 }
Exemple #4
0
 public ComStream OpenStream(string streamName, ComStorage.OpenMode openMode)
 {
     this.CheckDisposed("ComStorage::OpenStream");
     Util.ThrowOnNullArgument(streamName, "streamName");
     ComStorage.CheckOpenMode(openMode, "openMode", ComStorage.validOpenModes);
     Interop.IStream iStream = null;
     Util.InvokeComCall(MsgStorageErrorCode.FailedOpenStream, delegate
     {
         this.iStorage.OpenStream(streamName, IntPtr.Zero, (uint)openMode, 0U, out iStream);
     });
     return(new ComStream(iStream));
 }
Exemple #5
0
 private static void CheckOpenMode(ComStorage.OpenMode value, string paramName, params ComStorage.OpenMode[] validValues)
 {
     if (validValues.Length != 0)
     {
         for (int num = 0; num != validValues.Length; num++)
         {
             if (value == validValues[num])
             {
                 return;
             }
         }
         string message = string.Format("Invalid parameter value: {0}", value.ToString());
         throw new ArgumentOutOfRangeException(paramName, message);
     }
 }