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

news2024/12/27 7:50:55

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.coloradmin.cn/o/937776.html

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

相关文章

利用多种机器学习方法对爬取到的谷歌趋势某个关键词的每日搜索次数进行学习

大家好,我是带我去滑雪! 前一期利用python爬取了谷歌趋势某个关键词的每日搜索次数,本期利用爬取的数据进行多种机器学习方法进行学习,其中方法包括:随机森林、XGBOOST、决策树、支持向量机、神经网络、K邻近等方法&am…

导入excel数据给前端Echarts实现中国地图-类似热力图可视化

导入excel数据给前端Echarts实现中国地图-类似热力图可视化 程序文件: XinqiDaily/frontUtils-showSomeDatabaseonMapAboutChina/finalproject xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOr…

第五章 树与二叉树 二、二叉树的定义和常考考点

一、定义 二叉树可以用以下方式详细定义: 二叉树是由节点构成的树形结构,每个节点最多可以有两个子节点。每个节点有以下几个属性: 值:存储该节点的数据。左子节点:有一个左子节点,如果没有则为空。右子节…

大数据(四)主流大数据技术

大数据(四)主流大数据技术 一、写在前面的话 To 那些被折磨打击的好女孩(好男孩): 有些事情我们无法选择,也无法逃避伤害。 但请你在任何时候都记住: 你可能在一些人面前,一文不值&a…

基于内存池的 简单高效的数据库 SDK简介

基于内存池的 简单高效的数据库 SDK简介 下载地址: https://gitee.com/tankaishuai/powerful_sdks/tree/master/shm_alloc_db_heap shm_alloc_db_heap 是一个基于内存池实现的简单高效的文件型数据存储引擎,利用它可以轻松地像访问内存块一样读、写、增…

国产系统下开发QT程序总结

国产系统下开发QT程序总结 1. 国产系统简介 开发国产系统客户端的过程中,会出现兼容性问题。以下介绍Kylin和UOS环境下开发QT程序, 首先麒麟和统信这两个系统基于Ubuntu开发的。所以在Ubuntu开发理论上在国产系统上也能运行。芯片架构又分为amd,arm,mi…

谷歌翻译国内使用

谷歌已经退出中国市场,如果正常想使用的谷歌翻译的话,需要科学上网才可以 一些涉及到谷歌翻译的软件工具软件也无法正常使用,如chrome浏览器右键翻译,potplayer在线字幕实时翻译等等 目前最有效的解决方法就是通过修改hosts文件来…

C语言链表梳理-2

链表头使用结构体&#xff1a;struct Class 链表中的每一项使用结构体&#xff1a;struct Student#include <stdio.h>struct Student {char * StudentName;int StudentAge;int StudentSex;struct Student * NextStudent; };struct Class {char *ClassName;struct Stude…

web、HTTP协议

目录 一、Web基础 1.1 HTML概述 1.1.1 HTML的文件结构 1.2 HTML中的部分基本标签 二.HTTP协议 2.1.http概念 2.2.HTTP协议版本 2.3.http请求方法 2.4.HTTP请求访问的完整过程 2.5.http状态码 2.6.http请求报文和响应报文 2.7.HTTP连接优化 三.httpd介绍 3.1.http…

前端基础(Element、vxe-table组件库的使用)

前言&#xff1a;在前端项目中&#xff0c;实际上&#xff0c;会用到组件库里的很多组件&#xff0c;本博客主要介绍Element、vxe-table这两个组件如何使用。 目录 Element 引入element 使用组件的步骤 使用对话框的示例代码 效果展示 vxe-table 引入vxe-table 成果展…

不使用ip和port如何进行网络通讯(raw socket应用例子)

主要应用方向是上位机和嵌软(如stm32单片机)通讯&#xff0c;不在单片机中嵌入web server&#xff0c;即mac层通讯。 一、下面先了解网络数据包组成。 常见数据包的包头长度: EtherHeader Length: 14 BytesTCP Header Length : 20 BytesUDP Header Length : 8 BytesIP Heade…

基于unity的轻量配置工具开发

工具结构&#xff1a;针对每张表格生成一个表格类&#xff0c;其中默认包含一个list和字典类型参数记录表格数据&#xff0c;初始化项目时将list中的数据转为按id索引的dictionary&#xff0c;用于访问数据。额外包含一个同名Temp后缀的类&#xff0c;记录表格的字段、备注等信…

李跳跳跳过APP开屏广告,附下载地址

最近&#xff0c;李跳跳APP宣布永久停止更新。据称&#xff0c;该应用导致了消费者权益的减损&#xff0c;被指构成不正当竞争&#xff0c;并因此遭受某大厂的投诉&#xff0c;甚至收到了一封法律函件的威胁。面对压力&#xff0c;最终李跳跳APP选择了退出舞台。 李跳跳APP是什…

cs231n assignment3 q3 Image Captioning with Transformers

文章目录 先啰嗦直接看代码Q3 Image Captioning with TransformersMultiHeadAttention.forward题面解析代码输出 Positional Encoding题面解析代码输出 transformer.forward题面解析代码输出 先啰嗦直接看代码 Q3 Image Captioning with Transformers MultiHeadAttention.for…

c++ style casting

https://www.youtube.com/watch?vUfrR1nNfoeY&listPLE28375D4AC946CC3&index17

Python3 列表

Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 Python 有 6 个序列的内置类型&#xff0c;但最常见的是列表和元组。 列表都可以进…

TensorBoard的使用

TensorBoard&#xff1a;对图像进行变换 1. SummaryWriter的使用 ctrl类出现注释解析&#xff1a; 将条目直接log_dir写入要成为由TensorBoard使用。 “摘要编写器”类提供了一个高级 API 来创建事件文件&#xff0c;并在给定目录中添加摘要和事件。该类更新文件内容异步。…

Python系统监控利器

迷途小书童的 Note 读完需要 3分钟 速读仅需 1 分钟 1 简介 计算机系统监控对保证服务质量和排查故障非常重要。psutil 是一个用于 Python 的跨平台系统监控和过程管理工具&#xff0c;为我们提供便捷的监控方案。 2 基本工作原理 psutil 使用 Python 封装了系统调用&#xff0…

C++学习记录——이십팔 C++11(4)

文章目录 包装器1、functional2、绑定 这一篇比较简短&#xff0c;只是因为后要写异常和智能指针&#xff0c;所以就把它单独放在了一篇博客&#xff0c;后面新开几篇博客来写异常和智能指针 包装器 1、functional 包装器是一个类模板&#xff0c;对可调用对象类型进行再封装…

安全学习DAY20_自动化工具项目武器库介绍

信息打点-自动化工具 文章目录 信息打点-自动化工具本节思维导图&概述 各类红蓝队优秀工具项目集合&#xff1a;All-Defense-Tool 自动化-武器库部署F8x 自动化信息搜集-网络空间AsamF 自动化信息搜集-企查信息ENScan 自动化信息搜集-综合架构-ARL&NemoARL灯塔Nemo_Go …