Beispiel #1
0
 /// <summary>
 /// Create a new file
 /// </summary>
 /// <param name="name">The path to the file</param>
 /// <param name="root">A root object to parse relative filenames</param>
 /// <param name="desired_access">Desired access for the file</param>
 /// <param name="file_attributes">Attributes for the file</param>
 /// <param name="share_access">Share access for the file</param>
 /// <param name="open_options">Open options for file</param>
 /// <param name="disposition">Disposition when opening the file</param>
 /// <param name="ea_buffer">Extended Attributes buffer</param>
 /// <returns>The created/opened file object.</returns>
 public static NtFile Create(string name, NtObject root, FileAccessRights desired_access, FileAttributes file_attributes, FileShareMode share_access,
                             FileOpenOptions open_options, FileDisposition disposition, EaBuffer ea_buffer)
 {
     using (ObjectAttributes obja = new ObjectAttributes(name, AttributeFlags.CaseInsensitive, root))
     {
         return(Create(obja, desired_access, file_attributes, share_access, open_options, disposition, ea_buffer));
     }
 }
Beispiel #2
0
 public static extern NtStatus NtCreateFile(
     out SafeKernelObjectHandle FileHandle,
     FileAccessRights DesiredAccess,
     ObjectAttributes ObjAttr,
     [Out] IoStatus IoStatusBlock,
     LargeInteger AllocationSize,
     FileAttributes FileAttributes,
     FileShareMode ShareAccess,
     FileDisposition CreateDisposition,
     FileOpenOptions CreateOptions,
     byte[] EaBuffer,
     int EaLength);
Beispiel #3
0
        /// <summary>
        /// Create a new file
        /// </summary>
        /// <param name="obj_attributes">The object attributes</param>
        /// <param name="desired_access">Desired access for the file</param>
        /// <param name="file_attributes">Attributes for the file</param>
        /// <param name="share_access">Share access for the file</param>
        /// <param name="open_options">Open options for file</param>
        /// <param name="disposition">Disposition when opening the file</param>
        /// <param name="ea_buffer">Extended Attributes buffer</param>
        /// <returns>The created/opened file object.</returns>
        public static NtFile Create(ObjectAttributes obj_attributes, FileAccessRights desired_access, FileAttributes file_attributes, FileShareMode share_access,
                                    FileOpenOptions open_options, FileDisposition disposition, EaBuffer ea_buffer)
        {
            SafeKernelObjectHandle handle;
            IoStatus iostatus = new IoStatus();

            byte[] buffer = ea_buffer != null?ea_buffer.ToByteArray() : null;

            NtSystemCalls.NtCreateFile(out handle, desired_access, obj_attributes, iostatus, null, FileAttributes.Normal,
                                       share_access, disposition, open_options, buffer, buffer != null ? buffer.Length : 0).ToNtException();
            return(new NtFile(handle));
        }
Beispiel #4
0
 public static extern NtStatus NtCreateNamedPipeFile(
     out SafeKernelObjectHandle FileHandle,
     FileAccessRights DesiredAccess,
     [In] ObjectAttributes ObjectAttributes,
     [Out] IoStatus IoStatusBlock,
     FileShareMode ShareAccess,
     FileDisposition CreateDisposition,
     FileOpenOptions CreateOptions,
     NamedPipeType NamedPipeType,
     NamedPipeReadMode ReadMode,
     NamedPipeCompletionMode CompletionMode,
     int MaximumInstances,
     int InboundQuota,
     int OutboundQuota,
     LargeInteger DefaultTimeout
     );
Beispiel #5
0
 /// <summary>
 /// Create a new file
 /// </summary>
 /// <param name="name">The path to the file</param>
 /// <param name="desired_access">Desired access for the file</param>
 /// <param name="share_access">Share access for the file</param>
 /// <param name="open_options">Open options for file</param>
 /// <param name="disposition">Disposition when opening the file</param>
 /// <param name="ea_buffer">Extended Attributes buffer</param>
 /// <returns>The created/opened file object.</returns>
 public static NtFile Create(string name, FileAccessRights desired_access, FileShareMode share_access,
                             FileOpenOptions open_options, FileDisposition disposition, EaBuffer ea_buffer)
 {
     return(Create(name, null, desired_access, FileAttributes.Normal, share_access, open_options, disposition, ea_buffer));
 }
Beispiel #6
0
        public static unsafe NativeFileObject Open(string fileName, FileObjectAccessRights accessRights, FileShareMode shareMode, FileDisposition disposition, FileAttributes attributes)
        {
            SafeFileObjectHandle handle = CreateFileW(fileName, (uint)accessRights, (uint)shareMode, null, (uint)disposition, (uint)attributes, SafeFileObjectHandle.InvalidHandle);

            if (handle.IsInvalid)
            {
                throw new Win32Exception();
            }
            return(new NativeFileObject(handle));
        }