在这段时间总共是做了两个快速检索的代码,一个是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