Exemplo n.º 1
0
        /// <summary>
        /// currently BUGGY - not use, use CreateFile instead
        /// </summary>
        /// <param name="file_name"></param>
        /// <param name="file_access"></param>
        /// <param name="file_share"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IntPtr CreateFileHandle
            (string file_name,
            Win32FileAccess file_access,
            FileShare file_share,
            CreateFileOptions options)
        {
            var ret                  = IntPtr.Zero;
            var obj_attr_ptr         = IntPtr.Zero;
            var file_name_struct_ptr = IntPtr.Zero;
            var obj_attr             = new OBJECT_ATTRIBUTES();

            try
            {
                //выделяем память под OBJECT_ATTRIBUTES
                var obj_attr_len = Marshal.SizeOf(typeof(OBJECT_ATTRIBUTES));
                obj_attr_ptr = Marshal.AllocHGlobal(obj_attr_len);

                //инициализируем OBJECT_ATTRIBUTES
                obj_attr = new OBJECT_ATTRIBUTES(IOhelper.GetKernelFileName(file_name), (uint)ntApiFS.OBJ_CASE_INSENSITIVE);
                Marshal.StructureToPtr(obj_attr, obj_attr_ptr, true);

                //инициализируем IO_STATUS_BLOCK
                var status_block = new IO_STATUS_BLOCK();

                //открываем...
                var res = ntApiFS.NtOpenFile
                              (ref ret,
                              file_access,
                              obj_attr_ptr,
                              ref status_block,
                              (ulong)file_share,
                              (ulong)options);

                NTSTATUS_helper.ThrowOnError(res, status_block, NTSTATUS_severity.Warning);
                return(ret);
            }
            finally
            {
                obj_attr.Dispose();
            }
        }
Exemplo n.º 2
0
        public static extern IntPtr CreateFile(
			string lpFileName, // File name
			Win32FileAccess dwDesiredAccess, // Access mode
			Win32FileShare dwShareMode, // Share mode
			IntPtr lpSecurityAttributes, // SD
			Win32FileMode dwCreationDisposition, // How to create
			Win32FileAttributes dwFlagsAndAttributes, // File attributes
			IntPtr hTemplateFile // Handle to template file
			);
Exemplo n.º 3
0
 public static extern IntPtr CreateFile(string lpFileName, Win32FileAccess dwDesiredAccess, Win32FileShare dwShareMode, IntPtr lpSecurityAttributes, Win32FileMode dwCreationDisposition, Win32FileAttributes dwFlagsAndAttributes, IntPtr hTemplateFile);