Windows快速检索文件MFC实例

本文介绍了一个使用MFC编写的Windows文件快速检索程序,通过读取磁盘USN Journal获取文件信息,并利用线程在后台进行数据统计,提供用户友好的界面,支持排除特定文件夹和系统文件,实现高效模糊匹配搜索。
摘要由CSDN通过智能技术生成

在这段时间总共是做了两个快速检索的代码,一个是win32程序,在搜来的源代码的基础上稍作改动得来的,代码较为复杂。二个是用MFC写的,主要是根据网上这方面的资料和demo进行编写的代码。以下是MFC工程的具体实现方法。
设计思路
读取磁盘全部文件\文件夹名称作为数据,根据用户输入的关键字,在数据库中模糊匹配,符合条件的连同路径一起返回给用户,方便打开文件。

具体实现方法
1、读取磁盘中所有文件\文件夹名称
利用USN Journal相关函数
○1调用GetVolumeIformation()函数获取NTFS磁盘格式

GetVolumeInformation(
    lpRootPathName: PChar;               // 磁盘驱动器代码字符串
    lpVolumeNameBuffer: PChar;           // 磁盘驱动器卷标名称
    nVolumeNameSize: DWORD;              // 磁盘驱动器卷标名称长度
    lpVolumeSerialNumber: PDWORD;        // 磁盘驱动器卷标序列号
    var lpMaximumComponentLength: DWORD; // 系统允许的最大文件名长度
    var lpFileSystemFlags: DWORD;        // 文件系统标识
    lpFileSystemNameBuffer: PChar;       // 格式类型
    nFileSystemNameSize: DWORD           // 文件操作系统名称长度
);

○2调用CreateFile()函数获取磁盘句柄

HANDLE hVol = CreateFile(
    "盘符字符串",  // 必须如\.\C: (A-Z)的形式
    GENERIC_READ | GENERIC_WRITE,  
    FILE_SHARE_READ | FILE_SHARE_WRITE, // 必须包含有FILE_SHARE_WRITE 
    NULL, 
    OPEN_EXISTING, // 必须包含OPEN_EXISTING, CREATE_ALWAYS可能会导致错误
    FILE_ATTRIBUTE_READONLY, // FILE_ATTRIBUTE_NORMAL可能会导致错误
    NULL); 

○3调用DeviceIoCon

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值