fat32 文件系统 误删除文件数据恢复 SDK 介绍

fat32 文件系统 误删除文件数据恢复 SDK 介绍

        fat32_analyze.dll 是一个专门用于恢复 fat32 文件系统误删除文件的标准的动态链接库(DLL), 可被任何其他程序直接加载调用。

        下载地址:

https://gitee.com/tankaishuai/powerful_sdks/tree/master/fat32_analyze

fat32_analyze.dll 导出的基本操作接口如下:

  1. 打开设备接口:

        参数 dev_name 为设备标识符,对于物理磁盘,可以直接指定磁盘的序号(“0”、”1”、”2”……),对于逻辑分区,可以直接指定分区名称(如:”D:”、”E:”、”F:”……)

        参数 extFlags可以指定0或者其它一些附加标记,如下:

一般图形界面程序传入 (FAT32_FLAG_GUI | FAT32_FLAG_NOALERT) 即可。

如果打开设备成功,该函数返回一个操作句柄,后续的所有接口的第一个参数都需要传入该操作句柄。

        2.关闭设备接口:

        当文件恢复所有操作彻底完成之后,需要调用该接口关闭操作句柄,以清理内部内存数据,否则会有内存泄漏问题。

        3.读取数据(块)接口:

        参数pData为接收数据的一块缓冲区地址;

        参数 offset 为读取的物理磁盘偏移量,此处不要求扇区对齐;

        参数 bytes 为读取的数据总数,注意一次性读取不能超过 512字节。

        为了方便读取操作,同时也提供了另外一个更方便的接口:

        该函数可以快速读取小于8字节的数据,并直接以返回值形式返回。

        4.查询当前目录接口:

        引擎内部记录了当前正在操作的目录是哪一个。

        参数 parentClusters用于接收当前目录的全部父级目录簇序列号;

        参数 numClusters 用于传入以及接收当前目录的全部父级目录的簇序列号数量。

        该函数直接返回当前目录的全路径。注意根目录是:\ 。

        5.切换当前目录接口:

        参数 dir_name 为需要切换的目录名,也可以指定切换到根目录:\ ;

        参数 pvJmpBuf 目前必须传 NULL,用于向后兼容。

        如果我们需要操作某个目录,必须先使用该接口切换到它下面。

        注意:该接口成功返回 1,失败返回其他值。如果目录不存在,返回 0。

        6.执行(打开并读取)当前目录接口:

        切换目录之后,通常还需要使用该接口读取当前目录下的文件以及子目录信息。

        该接口成功返回 0,失败返回其他值。

        7.查询当前目录下文件、目录列表接口:

        该函数提供了通过使用文件名来定位查询文件、目录信息的功能。

        参数 file_name 即为需要查询的文件、子目录名;

        参数 dir_offset 用于逐次地递归遍历,一般传入 0 即可。

        参数 fetch_name 用于接收查询到的真实文件、子目录名称,可以传入 NULL忽略。

        如果查询成功,该函数返回了指定文件的一些基本信息,FAT32_FILEINFO 结构体定义如下:

这是一个重要的结构,各个字段的意义如下:

字段 dir_offset:当前文件所在目录的物理磁盘偏移位置;

字段 parent_cluster:当前文件所在目录的簇号;

字段 data_cluster:当前文件的起始簇号;

字段 reserved:保留,结构体对齐用;

字段 data_length:当前文件的数据大小。如果是目录,该字段始终为 0。

字段 file_attrs:文件属性,取windows操作系统定义的如下一些常量:

 除了上述接口外,SDK还提供了另外一个更加高效的查询接口:

参数 pfnCallback 指定一个回调函数;

参数 pUser 为任意用户自定义的一个指针参数。

该接口可通过一个回调函数的方式快速的列出当前目录下的文件、子目录情况:

相对于 fat32_grep 接口,fat32_ls 接口效率更高。

该接口返回当前目录下的文件、子目录总数。

        8.恢复文件接口:

SDK 提供了以下2个接口用于恢复指定的文件:

        参数 file_name 为待恢复的文件名;

        参数 fat32Info 为待恢复的文件信息;根据文件信息恢复更加可靠。

        参数 save_path 为目标恢复的文件保存路径。

        如果成功,返回 0,失败返回其它值。

        SDK附带一个简单的图形界面demo。图形界面程序可以直观地查看指定地FAT32磁盘的文件内容。通过使用该程序,用户可以只进行较为简单的少量操作实现恢复被删除的文件,做到既能减少用户因文件丢失而导致的损失,又能免去用户为购买数据恢复软件而带来的额外开销。

本程序运行的主界面如下所示:

        本程序要求以管理员权限启动,如果当前不是管理员权限,则会弹出UAC界面提示以管理员方式启动。

        左上角的下拉组合框将列出所有可选择的物理磁盘或者逻辑驱动分区。双击目录浏览列表框中的目录项,我们可以进入到指定的目录中并展示其下的内容。 

        当用户选中一个文件之后,可以点击【恢复选定文件】按钮进行恢复操作。

        如果选中文件已经存在,则会给出提示。如果选中的文件不存在(以?开头),则没有提示,直接恢复。恢复的默认路径在:C:\fat32\ 目录下。

        需要注意的是,任何程序对已删除文件的恢复并非总是能100%保证成功的,本SDK当然也不能例外。通常来说,在文件较小,且误删除后没有其他多余覆盖操作的情况下恢复成功的概率比较大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Tkinter系列02/5】界面初步和布局

本文是系列文章第二部分。前文见:【Tkinter系列01/5】界面初步和布局_无水先生的博客-CSDN博客 说明 一般来说,界面开发中,如果不是大型的软件,就不必用QT之类的实现,用Tkinter已经足够,然而即便是Tkinter规…

spring boot 项目整合 websocket

1.业务背景 负责的项目有一个搜索功能,搜索的范围几乎是全表扫,且数据源类型贼多。目前对搜索的数据量量级未知,但肯定不会太少,不仅需要搜索还得点击下载文件。 关于搜索这块类型 众多,未了避免有个别极大数据源影响整…

linux操作系统的权限的深入学习(未完)

1.Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户…

Spring Authorization Server入门 (十六) Spring Cloud Gateway对接认证服务

前言 之前虽然单独讲过Security Client和Resource Server的对接,但是都是基于Spring webmvc的,Gateway这种非阻塞式的网关是基于webflux的,对于集成Security相关内容略有不同,且涉及到代理其它微服务,所以会稍微比较麻…

Prometheus 监控系统

常用的监控系统有哪些? 老牌传统 Zabbix Nagios Cacti 新一代的 Prometheus 夜莺 Zabbix 和 Prometheus 的区别?如何选择?【重中之重】 Zabbix 更适用于传统业务架构的物理机、虚拟机环境的监控,对容器环境的支持较差&#xf…

战略形成是权力妥协的过程,江湖,政治是常态

战略权力派:战略形成是各种权力妥协的过程【安志强趣讲270期】 趣讲大白话:有人的地方就有政治 **************************** 有人的地方就有江湖 有组织的地方就有政治 公司的战略是各种人的权力博弈的产物 围观权力:就是组织内部 宏观权力…

MyCAT命令行监控

9066端口 ,用mysql命令行连接 Mysql –utest –ptest –P9066 show help 可显示所有相关管理命令 显示后端物理库连接信息,包括当前连接数,端口 Show backend Show connection 显示当前前端客户端连接情况,已经网络流量信息、…

Tomcat 部署时 war 和 war exploded区别

在 Tomcat 调试部署的时候,我们通常会看到有下面 2 个选项。 是选择war还是war exploded 这里首先看一下他们两个的区别: war 模式:将WEB工程以包的形式上传到服务器 ;war exploded 模式:将WEB工程以当前文件夹的位置…

【Go 基础篇】Go语言数组遍历:探索多种遍历数组的方式

数组作为一种基本的数据结构,在Go语言中扮演着重要角色。而数组的遍历是使用数组的基础,它涉及到如何按顺序访问数组中的每个元素。在本文中,我们将深入探讨Go语言中多种数组遍历的方式,为你展示如何高效地处理数组数据。 前言 …

2023年高教社杯 国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&…

YOLO目标检测——肺炎分类数据集下载分享

肺炎分类数据集总共21000图片,可应用于:肺炎检测、疾病诊断、疾病预测和预警等等。 数据集点击下载:YOLO肺炎分类数据集21000图片.rar

如何深入理解 Node.js 中的流(Streams)

Node.js是一个强大的允许开发人员构建可扩展和高效的应用程序。Node.js的一个关键特性是其内置对流的支持。流是Node.js中的一个基本概念,它能够实现高效的数据处理,特别是在处理大量信息或实时处理数据时。 在本文中,我们将探讨Node.js中的流…

腾讯云服务器地域和可用区详细介绍_选择攻略

腾讯云服务器地域有什么区别?怎么选择比较好?地域选择就近原则,距离地域越近网络延迟越低,速度越快。关于地域的选择还有很多因素,地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

微服务dubbo

微服务是一种软件开发架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都可以独立部署、管理和扩展。每个服务都可以通过轻量级的通信机制(通常是 HTTP/REST 或消息队列)相互通信。微服务架构追求高内聚、低耦合&am…

Cookie for Mac:隐私保护工具保护您的在线隐私

随着互联网的发展,我们每天都会浏览各种网站,享受在线购物、社交娱乐和学习资料等各种便利。然而,您是否曾经遇到过需要频繁输入用户名和密码的情况?或者不方便访问您常用的网站?如果是这样,那么Cookie for…

pytest

1.安装 pip install pytestpytest官网:https://docs.pytest.org/en/stable/ 2.编写规则 1.测试文件已test开头(或以test结尾) 2.测试类以Test开头,并且不能带有init方法 3.测试函数以test开头 4.断言使用基本的assert即可 3.p…

基于树莓派设计的酒店房间号智能识别系统(图像识别)

基于树莓派4B设计的酒店房间号智能识别系统(图像识别) 一、设计需求 酒店房间识别系统的主要目的是:通过图像处理技术,以机器视觉的方式识别光学传感器传回的酒店房间图像中的数字,该系统可以以非接触的方式,以图像的方式获得需要的酒店房间读数,这能极大提高老式的酒店房…

Matlab图像处理-乘法运算

乘法运算 两幅图像进行乘法运算主要实现两个功能: 一是可以实现掩模操作,即屏蔽图像的某些部分; 二是如果一幅图像乘以一个常数因子,如果常数因子大于1,将增强图像的亮度,如果因子小于1则会使图像变暗。…

NGINX相关配置

NGINX相关配置 NGINX配置信息 nginx 官方帮助文档:http://nginx.org/en/docs/Nginx的配置文件的组成部分: 主配置文件:/conf/nginx.conf(/nginx/conf/nginx.conf) 子配置文件: include conf.d/*.conf#事件驱动相关的配置 同步 event { wo…

MySQL表的增删改查

文章目录 MySQL表的增删改查1. Create1.1 单行数据插入1.2 多行数据插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 英语不及格的同学及英语成绩(&l…