Пример #1
0
        /// <summary>
        /// CreateFile wrapper that attempts to use CreateFile2 if running as Windows Store app.
        /// </summary>
        public static SafeFileHandle CreateFile(
            string path,
            DesiredAccess desiredAccess,
            ShareMode shareMode,
            CreationDisposition creationDisposition,
            FileAttributes fileAttributes     = FileAttributes.NONE,
            FileFlags fileFlags               = FileFlags.NONE,
            SecurityQosFlags securityQosFlags = SecurityQosFlags.NONE)
        {
            // Prefer CreateFile2, falling back to CreateFileEx if we can
            if (s_createFileDelegate == null)
            {
                s_createFileDelegate = CreateFile2;
                try
                {
                    return(s_createFileDelegate(path, desiredAccess, shareMode, creationDisposition, fileAttributes, fileFlags, securityQosFlags));
                }
                catch (Exception exception)
                {
                    // Any error other than EntryPointNotFound we've found CreateFile2, rethrow
                    if (!ErrorHelper.IsEntryPointNotFoundException(exception))
                    {
                        throw;
                    }

                    s_createFileDelegate = Delegates.CreateDelegate <CreateFileDelegate>(
                        "WInterop.FileManagement.Desktop.NativeMethods, " + Delegates.DesktopLibrary,
                        "CreateFileW");
                }
            }

            return(s_createFileDelegate(path, desiredAccess, shareMode, creationDisposition, fileAttributes, fileFlags, securityQosFlags));
        }
Пример #2
0
 /// <summary>
 /// Pass the file handle to the <see cref="System.IO.FileStream"/> constructor.
 /// The <see cref="System.IO.FileStream"/> will close the handle.
 /// </summary>
 public SafeFileHandle CreateHandle(
     CreationDisposition creationDisposition,
     FileAccess fileAccess,
     FileShare fileShare)
 {
     return(ZlpIOHelper.CreateFileHandle(_path, creationDisposition, fileAccess, fileShare));
 }
Пример #3
0
        /// <summary>
        /// CreateFile2 wrapper. Only available on Windows 8 and above.
        /// </summary>
        public static SafeFileHandle CreateFile2(
            string path,
            DesiredAccess desiredAccess,
            ShareMode shareMode,
            CreationDisposition creationDisposition,
            FileAttributes fileAttributes     = FileAttributes.NONE,
            FileFlags fileFlags               = FileFlags.NONE,
            SecurityQosFlags securityQosFlags = SecurityQosFlags.NONE)
        {
            CREATEFILE2_EXTENDED_PARAMETERS extended = new CREATEFILE2_EXTENDED_PARAMETERS();

            extended.dwSize             = (uint)Marshal.SizeOf <CREATEFILE2_EXTENDED_PARAMETERS>();
            extended.dwFileAttributes   = fileAttributes;
            extended.dwFileFlags        = fileFlags;
            extended.dwSecurityQosFlags = securityQosFlags;
            unsafe
            {
                extended.lpSecurityAttributes = null;
            }
            extended.hTemplateFile = IntPtr.Zero;

            SafeFileHandle handle = Direct.CreateFile2(
                lpFileName: path,
                dwDesiredAccess: desiredAccess,
                dwShareMode: shareMode,
                dwCreationDisposition: creationDisposition,
                pCreateExParams: ref extended);

            if (handle.IsInvalid)
            {
                throw ErrorHelper.GetIoExceptionForLastError();
            }

            return(handle);
        }
Пример #4
0
 public WinApiFile(string sFileName,
                   DesiredAccess fDesiredAccess,
                   CreationDisposition fCreationDisposition)
 {
     FileName = sFileName;
     Open(fDesiredAccess, fCreationDisposition);
 }
Пример #5
0
 public ReportedFileAccess(
     ReportedFileOperation operation,
     ReportedProcess process,
     RequestedAccess requestedAccess,
     FileAccessStatus status,
     bool explicitlyReported,
     uint error,
     Usn usn,
     DesiredAccess desiredAccess,
     ShareMode shareMode,
     CreationDisposition creationDisposition,
     FlagsAndAttributes flagsAndAttributes,
     AbsolutePath manifestPath,
     string path,
     string enumeratePatttern)
 {
     Contract.Requires(process != null);
     Operation          = operation;
     Process            = process;
     RequestedAccess    = requestedAccess;
     Status             = status;
     ExplicitlyReported = explicitlyReported;
     Error               = error;
     Usn                 = usn;
     DesiredAccess       = desiredAccess;
     ShareMode           = shareMode;
     CreationDisposition = creationDisposition;
     FlagsAndAttributes  = flagsAndAttributes;
     ManifestPath        = manifestPath;
     Path                = path;
     EnumeratePattern    = enumeratePatttern;
 }
Пример #6
0
 /// <summary>
 /// Pass the file handle to the <see cref="System.IO.FileStream"/> constructor. 
 /// The <see cref="System.IO.FileStream"/> will close the handle.
 /// </summary>
 public SafeFileHandle CreateHandle(
     CreationDisposition creationDisposition,
     FileAccess fileAccess,
     FileShare fileShare)
 {
     return ZlpIOHelper.CreateFileHandle(FullName, creationDisposition, fileAccess, fileShare);
 }
Пример #7
0
        public static ReportedFileAccess Create(
            ReportedFileOperation operation,
            ReportedProcess process,
            RequestedAccess requestedAccess,
            FileAccessStatus status,
            bool explicitlyReported,
            uint error,
            Usn usn,
            DesiredAccess desiredAccess,
            ShareMode shareMode,
            CreationDisposition creationDisposition,
            FlagsAndAttributes flagsAndAttributes,
            FlagsAndAttributes openedFileOrDirectoryAttribute,
            PathTable pathTable,
            string path,
            string enumeratePattern = null)
        {
            Contract.Requires(process != null);
            Contract.Requires(pathTable != null);
            Contract.Requires(path != null);

            AbsolutePath absolutePath;

            if (AbsolutePath.TryGet(pathTable, (StringSegment)path, out absolutePath))
            {
                return(new ReportedFileAccess(
                           operation,
                           process,
                           requestedAccess,
                           status,
                           explicitlyReported,
                           error,
                           usn,
                           desiredAccess,
                           shareMode,
                           creationDisposition,
                           flagsAndAttributes,
                           openedFileOrDirectoryAttribute,
                           absolutePath,
                           null,
                           enumeratePattern));
            }

            return(new ReportedFileAccess(
                       operation,
                       process,
                       requestedAccess,
                       status,
                       explicitlyReported,
                       error,
                       usn,
                       desiredAccess,
                       shareMode,
                       creationDisposition,
                       flagsAndAttributes,
                       openedFileOrDirectoryAttribute,
                       AbsolutePath.Invalid,
                       path,
                       enumeratePattern));
        }
Пример #8
0
        /// <summary>
        /// CreateFile2 wrapper. Only available on Windows 8 and above.
        /// </summary>
        public static unsafe SafeFileHandle CreateFile2(
            StringSpan path,
            DesiredAccess desiredAccess,
            ShareModes shareMode,
            CreationDisposition creationDisposition,
            FileAttributes fileAttributes     = FileAttributes.None,
            FileFlags fileFlags               = FileFlags.None,
            SecurityQosFlags securityQosFlags = SecurityQosFlags.None)
        {
            CREATEFILE2_EXTENDED_PARAMETERS extended = new CREATEFILE2_EXTENDED_PARAMETERS()
            {
                dwSize             = (uint)sizeof(CREATEFILE2_EXTENDED_PARAMETERS),
                dwFileAttributes   = fileAttributes,
                dwFileFlags        = fileFlags,
                dwSecurityQosFlags = securityQosFlags
            };

            SafeFileHandle handle = Imports.CreateFile2(
                lpFileName: ref MemoryMarshal.GetReference(path.GetSpanWithoutTerminator()),
                dwDesiredAccess: desiredAccess,
                dwShareMode: shareMode,
                dwCreationDisposition: creationDisposition,
                pCreateExParams: ref extended);

            if (handle.IsInvalid)
            {
                throw Error.GetExceptionForLastError(path.ToString());
            }

            return(handle);
        }
Пример #9
0
        /// <summary>
        /// Pass the file handle to the <see cref="System.IO.FileStream"/> constructor. 
        /// The <see cref="System.IO.FileStream"/> will close the handle.
        /// </summary>
        public static SafeFileHandle CreateFileHandle(
			string filePath,
			CreationDisposition creationDisposition,
			FileAccess fileAccess,
			FileShare fileShare)
        {
            filePath = CheckAddLongPathPrefix(filePath);

            // Create a file with generic write access
            var fileHandle =
                PInvokeHelper.CreateFile(
                    filePath,
                    fileAccess,
                    fileShare,
                    IntPtr.Zero,
                    creationDisposition,
                    0,
                    IntPtr.Zero);

            // Check for errors.
            var lastWin32Error = Marshal.GetLastWin32Error();
            if (fileHandle.IsInvalid)
            {
                throw new Win32Exception(
                    lastWin32Error,
                    string.Format(
                        "Error {0} creating file handle for file path '{1}': {2}",
                        lastWin32Error,
                        filePath,
                        CheckAddDotEnd(new Win32Exception(lastWin32Error).Message)));
            }

            // Pass the file handle to FileStream. FileStream will close the handle.
            return fileHandle;
        }
Пример #10
0
        /// <summary>
        /// CreateFile wrapper that attempts to use CreateFile2 if running as Windows Store app.
        /// </summary>
        public static SafeFileHandle CreateFile(
            StringSpan path,
            CreationDisposition creationDisposition,
            DesiredAccess desiredAccess       = DesiredAccess.GenericReadWrite,
            ShareModes shareMode              = ShareModes.ReadWrite,
            FileAttributes fileAttributes     = FileAttributes.None,
            FileFlags fileFlags               = FileFlags.None,
            SecurityQosFlags securityQosFlags = SecurityQosFlags.None)
        {
            // Prefer CreateFile2, falling back to CreateFileEx if we can
            if (s_createFileDelegate == null)
            {
                s_createFileDelegate = CreateFile2;
                try
                {
                    return(s_createFileDelegate(path, desiredAccess, shareMode, creationDisposition, fileAttributes, fileFlags, securityQosFlags));
                }
                catch (EntryPointNotFoundException)
                {
                    s_createFileDelegate = Delegates.CreateDelegate <CreateFileDelegate>(
                        "WInterop.Storage.Desktop.NativeMethods, " + Delegates.DesktopLibrary,
                        "CreateFileW");
                }
            }

            return(s_createFileDelegate(path, desiredAccess, shareMode, creationDisposition, fileAttributes, fileFlags, securityQosFlags));
        }
        /// <summary>
        /// Create a file
        /// </summary>
        /// <param name="fileName">Path file</param>
        /// <param name="creationDisposition">Options to creation</param>
        /// <returns>Pointer to file.</returns>
        public static File CreateFile(string fileName, CreationDisposition creationDisposition)
        {
            Transaction t = new Transaction(true);
            File        f = CreateFile(fileName, creationDisposition, t);

            return(f);
        }
Пример #12
0
        /// <summary>
        /// CreateFile2 wrapper. Only available on Windows 8 and above.
        /// </summary>
        public static unsafe SafeFileHandle CreateFile2(
            string path,
            DesiredAccess desiredAccess,
            ShareModes shareMode,
            CreationDisposition creationDisposition,
            FileAttributes fileAttributes     = FileAttributes.None,
            FileFlags fileFlags               = FileFlags.None,
            SecurityQosFlags securityQosFlags = SecurityQosFlags.None)
        {
            CREATEFILE2_EXTENDED_PARAMETERS extended = new CREATEFILE2_EXTENDED_PARAMETERS()
            {
                dwSize             = (uint)sizeof(CREATEFILE2_EXTENDED_PARAMETERS),
                dwFileAttributes   = fileAttributes,
                dwFileFlags        = fileFlags,
                dwSecurityQosFlags = securityQosFlags
            };

            SafeFileHandle handle = Imports.CreateFile2(
                lpFileName: path,
                dwDesiredAccess: desiredAccess,
                dwShareMode: shareMode,
                dwCreationDisposition: creationDisposition,
                pCreateExParams: ref extended);

            if (handle.IsInvalid)
            {
                throw Errors.GetIoExceptionForLastError(path);
            }

            return(handle);
        }
Пример #13
0
        public static ReportedFileAccess Create(
            ReportedFileOperation operation,
            ReportedProcess process,
            RequestedAccess requestedAccess,
            FileAccessStatus status,
            bool explicitlyReported,
            uint error,
            Usn usn,
            DesiredAccess desiredAccess,
            ShareMode shareMode,
            CreationDisposition creationDisposition,
            FlagsAndAttributes flagsAndAttributes,
            AbsolutePath path,
            string enumeratePattern = null)
        {
            Contract.Requires(process != null);

            return(new ReportedFileAccess(
                       operation,
                       process,
                       requestedAccess,
                       status,
                       explicitlyReported,
                       error,
                       usn,
                       desiredAccess,
                       shareMode,
                       creationDisposition,
                       flagsAndAttributes,
                       path,
                       null,
                       enumeratePattern));
        }
Пример #14
0
 internal static extern IntPtr CreateFile(
     string lpFileName,
     FileAccess dwDesiredAccess,
     FileShares dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #15
0
 public static extern SafeFileHandle CreateFile(
     [MarshalAs(UnmanagedType.LPTStr)] string filename,
     [MarshalAs(UnmanagedType.U4)] FileAccess access,
     [MarshalAs(UnmanagedType.U4)] FileShare share,
     IntPtr securityAttributes, // optional SECURITY_ATTRIBUTES struct or IntPtr.Zero
     [MarshalAs(UnmanagedType.U4)] CreationDisposition creationDisposition,
     [MarshalAs(UnmanagedType.U4)] FileAttributes flagsAndAttributes,
     IntPtr templateFile);
Пример #16
0
 public HIDFile(string sFileName,
                DesiredAccess fDesiredAccess,
                ShareMode fShareMode,
                CreationDisposition fCreationDisposition)
 {
     FileName = sFileName;
     Open(fDesiredAccess, fShareMode, fCreationDisposition, 0);
 }
Пример #17
0
 public unsafe static extern SafeFileHandle CreateFileW(
     string lpFileName,
     DesiredAccess dwDesiredAccess,
     ShareModes dwShareMode,
     SECURITY_ATTRIBUTES *lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     uint dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #18
0
 public extern static System.IntPtr CreateFileW(
     [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)] string lpFileName,
     DesiredAccess dwDesiredAccess,
     ShareMode dwShareMode,
     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FlagsAndAttributes dwFlagsAndAttributes,
     System.IntPtr hTemplateFile);
 public static extern Microsoft.Win32.SafeHandles.SafeFileHandle CreateFile(
     string lpFileName,
     FileAccess dwDesiredAccess,
     int dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     Win32FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #20
0
 internal static extern SafeFileHandle CreateFile(
     [MarshalAs(UnmanagedType.LPTStr)] string lpFileName,
     FileAccess dwDesiredAccess,
     FileShare dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
 public static extern Microsoft.Win32.SafeHandles.SafeFileHandle CreateFile(
     string lpFileName,
     FileAccess dwDesiredAccess,
     int dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     Win32FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #22
0
 public static extern SafeFileHandle CreateFile(
     [MarshalAs(UnmanagedType.LPTStr)] string lpFileName,
     [MarshalAs(UnmanagedType.U4)] FileAccess dwDesiredAccess,
     [MarshalAs(UnmanagedType.U4)] FileShare dwShareMode,
     IntPtr lpSecurityAttributes,  // optional SECURITY_ATTRIBUTES struct or IntPtr.Zero
     [MarshalAs(UnmanagedType.U4)] CreationDisposition dwCreationDisposition,
     [MarshalAs(UnmanagedType.U4)] FileFlagsAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #23
0
 public WinApiFile(string sFileName,
                   DesiredAccess fDesiredAccess,
                   ShareMode fShareMode,
                   CreationDisposition fCreationDisposition)
 {
     FileName = sFileName;
     Open(fDesiredAccess, fShareMode, fCreationDisposition, FlagsAndAttributes.FILE_FLAG_OVERLAPPED);
 }
Пример #24
0
 public static extern SafeFileHandle CreateFileW(
     [MarshalAs(UnmanagedType.LPWStr)] string lpFileName,
     [MarshalAs(UnmanagedType.U4)] FileAccess dwDesiredAccess,
     [MarshalAs(UnmanagedType.U4)] FileShare dwShareMode,
     IntPtr lpSecurityAttributes,
     [MarshalAs(UnmanagedType.U4)] CreationDisposition dwCreationDisposition,
     [MarshalAs(UnmanagedType.U4)] FileFlagsAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #25
0
 public static extern IntPtr CreateFile(string fileName
                                        , [MarshalAs(UnmanagedType.U4)]              FileAccess fileAccess
                                        , [MarshalAs(UnmanagedType.U4)]               FileShare fileShare
                                        , IntPtr securityAttributes
                                        , [MarshalAs(UnmanagedType.U4)]     CreationDisposition creationDisposition
                                        , FileAttributes flags
                                        , IntPtr template
                                        );
Пример #26
0
 public static extern SafeFileHandle CreateFile(
     [MarshalAs(UnmanagedType.LPWStr)] string fileName,
     [MarshalAs(UnmanagedType.U4)] FileAccess desiredAccess,
     [MarshalAs(UnmanagedType.U4)] FileShare shareMode,
     IntPtr securityAttributes,
     [MarshalAs(UnmanagedType.U4)] CreationDisposition creationDisposition,
     [MarshalAs(UnmanagedType.U4)] FileAttributes flagsAndAttributes,
     IntPtr templateFile);
Пример #27
0
 public AnnotationRecordOperator(string matFilePath, DesiredAccess desiredAccess,
                                 CreationDisposition creationDisposition)
 {
     _nativeObject = createAnnotationOperator(matFilePath, desiredAccess, creationDisposition);
     if (_nativeObject == IntPtr.Zero)
     {
         throw new ArgumentException();
     }
 }
Пример #28
0
 public static extern IntPtr CreateFile(
     string lpFileName,                         // ファイル名
     DesiredAccess dwDesiredAccess,             // アクセスモード
     ShareMode dwShareMode,                     // 共有モード
     int lpSecurityAttributes,                  // セキュリティ記述子
     CreationDisposition dwCreationDisposition, // 作成方法
     FlagsAndAttributes dwFlagsAndAttributes,   // ファイル属性
     IntPtr hTemplateFile                       // テンプレートファイルのハンドル
     );
 private static extern IntPtr CreateFileW(
     string lpFileName,
     GenericAccessRights dwDesiredAccess,
     FileShare dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FileFlagAttribute dwFlagsAndAttributes,
     IntPtr hTemplateFile
     );
Пример #30
0
 private static extern IntPtr CreateFile(
     string lpFileName,                         // File Name
     DesiredAccess dwDesiredAccess,             // Access Mode
     ShareMode dwShareMode,                     // Shared Mode
     int lpSecurityAttributes,                  // Security Descripter
     CreationDisposition dwCreationDisposition, // Creation
     FlagsAndAttributes dwFlagsAndAttributes,   // Attribute
     IntPtr hTemplateFile                       // Handle
     );
Пример #31
0
 public static extern SafeFileHandle CreateFile(
     string lpFileName,
     FileAccess dwDesiredAccess,
     FileShare dwShareMode,
     IntPtr SecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile
     );
Пример #32
0
 public static LzHandle LzCreateFile(
     string path,
     DesiredAccess access         = DesiredAccess.GenericRead,
     ShareModes share             = ShareModes.ReadWrite,
     CreationDisposition creation = CreationDisposition.OpenExisting)
 {
     return(new LzCreateHandle(ValidateLzResult(
                                   Imports.LZCreateFileW(path, access, share, creation, EmptySafeHandle.Instance), path)));
 }
Пример #33
0
 private static extern SafeFileHandle CreateFile(
     string lpFileName, // ファイル名 
     DesiredAccess dwDesiredAccess, // アクセスモード 
     ShareMode dwShareMode, // 共有モード 
     int lpSecurityAttributes, // セキュリティ記述子 
     CreationDisposition dwCreationDisposition, // 作成方法 
     FlagsAndAttributes dwFlagsAndAttributes, // ファイル属性 
     IntPtr hTemplateFile // テンプレートファイルのハンドル 
     );
Пример #34
0
 public static extern IntPtr CreateFile(
     [MarshalAs(UnmanagedType.LPWStr)] String lpFileName,
     FileAccess dwDesiredAccess,
     ShareMode dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     CreateFileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile
     );
Пример #35
0
 public static extern IntPtr CreateFile(
     [MarshalAs(UnmanagedType.LPWStr)] String lpFileName,
     FileAccess dwDesiredAccess,
     ShareMode dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     CreateFileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile
     );
Пример #36
0
 internal static extern IntPtr CreateFile(string lpFileName, DesiredAccess dwDesiredAccess, ShareMode dwShareMode, IntPtr lpSecurityAttributes, CreationDisposition dwCreationDisposition, FlagsAndAttributes dwFlagsAndAttributes, IntPtr hTemplateFile);
Пример #37
0
 public static extern unsafe SafeObjectHandle CreateFile(
     string filename,
     FileAccess access,
     FileShare share,
     [Friendly(FriendlyFlags.In | FriendlyFlags.Optional)] SECURITY_ATTRIBUTES* securityAttributes,
     CreationDisposition creationDisposition,
     CreateFileFlags flagsAndAttributes,
     SafeObjectHandle templateFile);
Пример #38
0
        /// <summary>
        /// Pass the file handle to the <see cref="System.IO.FileStream"/> constructor. 
        /// The <see cref="System.IO.FileStream"/> will close the handle.
        /// </summary>
        public static SafeFileHandle CreateFileHandle(
            string filePath,
            CreationDisposition creationDisposition,
            FileAccess fileAccess,
            FileShare fileShare)
        {
            filePath = CheckAddLongPathPrefix(filePath);

            // Create a file with generic write access
            var fileHandle =
                PInvokeHelper.CreateFile(
                    filePath,
                    fileAccess,
                    fileShare,
                    IntPtr.Zero,
                    creationDisposition,
                    // Fix by Richard, 2015-04-14.
                    // See https://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx#DIRECTORIES,
                    // See http://stackoverflow.com/q/4998814/107625
                    FileAttributes.BackupSemantics,
                    IntPtr.Zero);

            // Check for errors.
            var lastWin32Error = Marshal.GetLastWin32Error();
            if (fileHandle.IsInvalid)
            {
                throw new Win32Exception(
                    lastWin32Error,
                    string.Format(
                        Resources.ErrorCreatingFileHandle,
                        lastWin32Error,
                        filePath,
                        CheckAddDotEnd(new Win32Exception(lastWin32Error).Message)));
            }

            // Pass the file handle to FileStream. FileStream will close the handle.
            return fileHandle;
        }
Пример #39
0
 internal static extern SafeFileHandle CreateFile(
     [MarshalAs(UnmanagedType.LPTStr)] string lpFileName,
     FileAccess dwDesiredAccess,
     FileShare dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile);
Пример #40
0
 /* ---------------------------------------------------------
  * Open and Close
  * ------------------------------------------------------ */
 // [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
 private static void Open(string sFileName,
     DesiredAccess fDesiredAccess,
     ShareMode fShareMode,
     CreationDisposition fCreationDisposition,
     FlagsAndAttributes fFlagsAndAttributes)
 {
     //System.Security.Principal.WindowsIdentity.Impersonate( x=new System.Security.Principal.WindowsIdentity(
     if (sFileName.Length == 0)
         throw new ArgumentNullException("FileName");
     _hFile = CreateFile(sFileName, fDesiredAccess, fShareMode,
      IntPtr.Zero, fCreationDisposition, fFlagsAndAttributes,
      IntPtr.Zero);
     if (_hFile.IsInvalid)
     {
         _hFile = null;
         ThrowLastWin32Err();
     }
     //_fDisposed = false;
 }
Пример #41
0
        public static FileStream Open(string lpFilename,
            FileAccess dwDesiredAccess,
            FileShare dwShareMode,
            CreationDisposition dwCreationDisposition)
        {
            var file = new File();
            file.FileAccess = dwDesiredAccess;
            var dwFlagsAndAttributes = FileAttributesEnum.Normal;

            int err = 0;

            for (int i = 0;
                (i < 100) && (IntPtr.Zero == file.Handle) && (0 == err);
                i++)
            {
                err = FileSystem.OpenFile(lpFilename,
                                    dwDesiredAccess,
                                    dwShareMode,
                                    dwCreationDisposition,
                                    dwFlagsAndAttributes,
                                    out file.m_hFile);
            }

            if (HtcRoot.HtcRootAccess.ERROR_LEAST_PRIVILEGED_CHAMBER == err)
            {
                throw new HtcRoot.RootException("CreateFile failed for " + lpFilename + " due to Least Privileged Chamber!");
            }
            if (IntPtr.Zero == file.Handle)
            {
                throw new InteropException("CreateFile returned NULL for " + lpFilename + "! GetLastError: " + err + "\n");
            }
            if (FileSystem.INVALID_HANDLE_VALUE == file.Handle)
            {
                throw new InteropException("CreateFile failed for " + lpFilename + "! GetLastError: " + err + "\n");
            }

            file.m_length = FileSystem.GetFileSize(file.Handle);

            return new FileStream(file);
        }
Пример #42
0
 public static extern SafeObjectHandle CreateFile(
     string filename,
     FileAccess access,
     FileShare share,
     SECURITY_ATTRIBUTES securityAttributes,
     CreationDisposition creationDisposition,
     CreateFileFlags flagsAndAttributes,
     SafeObjectHandle templateFile);
Пример #43
0
 internal static extern Win32Handle CreateFile(String lpFileName,
    FileAccess dwDesiredAccess, FileShare dwShareMode,
    IntPtr securityAttrs, CreationDisposition dwCreationDisposition,
    FileAttributes dwFlagsAndAttributes, IntPtr hTemplateFile);
Пример #44
0
 private static extern SafeFileHandle CreateFile(
     string lpFileName,
     FileAccess dwDesiredAccess,
     FileShare dwShareMode,
     IntPtr lpSecurityAttributes,
     CreationDisposition dwCreationDisposition,
     FileAttributes dwFlagsAndAttributes,
     IntPtr hTemplateFile
     );
Пример #45
0
 public static int OpenFile(string lpFilename, FileAccess dwDesiredAccess, FileShare dwShareMode, CreationDisposition dwCreationDisposition, FileAttributesEnum dwFlagsAndAttributes, out IntPtr hFile)
 {
     int ret = m_fileSystemIo.OpenFile(lpFilename, (int)dwDesiredAccess, (int)dwShareMode, (int)dwCreationDisposition, (int)dwFlagsAndAttributes, out hFile);
     return ret;
 }