資源簡介
讀取ext3文件系統里的文件,支持多個磁盤,多個分區,能復制,不能寫,暫時不支持ext4(以后會支持),.net4.0環境,win7,vs2010通過。

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Collections;
using?System.Text;
using?Microsoft.Win32.SafeHandles;
using?System.ComponentModel;
using?System.Windows.Forms;
namespace?ExtReader
{
????#region?目錄項結構
????internal?struct?DirEntry?
????{
????????public?byte?file_type;?
????????public?string?file_name;?
????????public?uint?file_inode_num;?
????}
????#endregion
????#region?ext分區類
????internal?unsafe?class?ExtPartition
????{
????????private?const?uint?Sector_Size?=?512;?
????????private?SafeFileHandle?hard_disk_handle?=?null;?//硬盤句柄
????????private?ulong?partition_start_sector?=?0;?//ext3分區開始扇區
????????private?uint?block_size?=?0;?//塊大小
????????private?ushort?inode_size?=?0;?//i節點大小
????????private?uint?inodes_per_group?=?0;//每塊組的i節點數
????????private?uint?group_desc_start?=?0;//0號塊組中組描述符表的開始塊
????????private?struct?inode?//i節點結構(只定義了有用的項)
????????{
????????????public?ulong?size;?//文件大小
????????????public?uint?block_ptr1;?//第一個直接指針
????????????public?uint?block_ptr2;
????????????public?uint?block_ptr3;
????????????public?uint?block_ptr4;
????????????public?uint?block_ptr5;
????????????public?uint?block_ptr6;
????????????public?uint?block_ptr7;
????????????public?uint?block_ptr8;
????????????public?uint?block_ptr9;
????????????public?uint?block_ptr10;
????????????public?uint?block_ptr11;
????????????public?uint?block_ptr12;
????????????public?uint?block_find_ptr;?//一級間接指針
????????????public?uint?block_sind_ptr;?//二級間接指針
????????????public?uint?block_tind_ptr;?//三級間接指針
????????}
????????Encoding?encoding?=?Encoding.UTF8;
????????private?uint?ntime?=?0;
????????internal?static?BackgroundWorker?run_back?=?new?BackgroundWorker();?//后臺線程
????????public?ExtPartition()?{?}
????????public?ExtPartition(ulong?start_sectorSafeFileHandle?hd_disk_handle)
????????{
????????????byte*?tmp_buffer?=?stackalloc?byte[1024];
????????????uint?number_of_read?=?0;
????????????hard_disk_handle?=?hd_disk_handle;//獲得磁盤句柄
????????????HardDisk.set_pointer(start_sector?+?2hard_disk_handle);
????????????FileAPI.ReadFile(hard_disk_handle?tmp_buffer?1024?&number_of_read?null);?//讀超級塊
????????????partition_start_sector?=?start_sector;?
????????????block_size?=?(uint)Math.Pow(2?(double)*(uint*)(tmp_buffer?+?0x18))?*?1024;?
????????????inode_size?=?(ushort)(*(uint*)(tmp_buffer?+?0x4C)?!=?0???*(ushort*)(tmp_buffer?+?0x58)?:?128);
????????????inodes_per_group?=?*(uint*)(tmp_buffer?+?0x28);
????????????group_desc_start?=?(uint)(block_size!=1024???1?:?2);
????????????run_back.WorkerReportsProgress?=?true;
????????????run_back.ProgressChanged?+=run_back_ProgressChanged;
????????????run_back.WorkerSupportsCancellation?=?true;
????????????run_back.RunWorkerCompleted?+=?run_back_RunWorkerCompleted;
????????}
????????private?unsafe?void?read_block(uint?block_num?byte*?dbuffer)//讀取塊
????????{
????????????uint?number_of_read?=?0;
????????????ulong?sector_pointer?=?partition_start_sector?+?block_n
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1894??2012-03-17?20:31??ExtReader\ExtReader\bin\Debug\ExtReader.application
?????文件??????28672??2012-03-17?20:31??ExtReader\ExtReader\bin\Debug\ExtReader.exe
?????文件???????3022??2012-03-17?20:31??ExtReader\ExtReader\bin\Debug\ExtReader.exe.manifest
?????文件??????93696??2012-03-17?20:31??ExtReader\ExtReader\bin\Debug\ExtReader.pdb
?????文件??????11600??2012-03-17?20:31??ExtReader\ExtReader\bin\Debug\ExtReader.vshost.exe
?????文件???????1894??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.application
?????文件??????27136??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.exe
?????文件???????3022??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.exe.manifest
?????文件??????83456??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.pdb
?????文件???????1894??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.vshost.application
?????文件??????11600??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.vshost.exe
?????文件???????3022??2012-03-17?20:26??ExtReader\ExtReader\bin\Release\ExtReader.vshost.exe.manifest
?????文件??????23863??2012-03-17?20:25??ExtReader\ExtReader\ExtPartition.cs
?????文件??????14805??2012-03-17?20:24??ExtReader\ExtReader\ExtReader.cs
?????文件???????6520??2012-03-02?14:05??ExtReader\ExtReader\ExtReader.csproj
?????文件????????452??2012-02-29?12:14??ExtReader\ExtReader\ExtReader.csproj.user
?????文件???????9363??2012-03-02?17:14??ExtReader\ExtReader\ExtReader.Designer.cs
?????文件???????1482??2012-01-01?21:14??ExtReader\ExtReader\ExtReader.idc
?????文件???????6798??2012-03-02?17:14??ExtReader\ExtReader\ExtReader.resx
?????文件???????7034??2012-03-17?20:24??ExtReader\ExtReader\FileAPI.cs
?????文件???????4010??2012-03-17?20:24??ExtReader\ExtReader\HardDisk.cs
?????文件???????4440??2011-12-25?18:40??ExtReader\ExtReader\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
?????文件???????6500??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件???????1894??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.application
?????文件???????7174??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.csproj.FileListAbsolute.txt
?????文件??????28672??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.exe
?????文件???????3022??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.exe.manifest
?????文件????????180??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.ExtReader.resources
?????文件??????93696??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.pdb
?????文件????????180??2012-03-17?20:31??ExtReader\ExtReader\obj\x86\Debug\ExtReader.Properties.Resources.resources
............此處省略43個文件信息
評論
共有 條評論