现在的位置: 首页 > 综合 > 正文

wince中的文件过滤驱动(FSDSPY)

2013年10月05日 ⁄ 综合 ⁄ 共 1690字 ⁄ 字号 评论关闭

wince中的文件过滤系统(FSDSPY)

 

在wince中实现隐藏文件,隐藏文件夹,保护文件不被删除,阻止创建目录
注意:所讲一切只对HardDisk有效,ROM上的目录不在此驱动范围内。

 

首先,wince5.0中提供了驱动的公共模块,位置所在
%_WINCEROOT%/public/common/oak/drivers/fsd/fsdspy/

我们可以像添加其他驱动一样将改驱动添加到wince中。
当然包括最基本的注册表信息添加

 

; HIVE BOOT SECTION

[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDrv/FATFS/Filters/FSDSPY]
    "Dll"="fsdspy.dll"
    "Order"=dword:2
; END HIVE BOOT SECTION

 

当然少不了将驱动的DLL文件拷贝到wince中
fsdspy.dll      $(_FLATRELEASEDIR)/fsdspy.dll NK    SH

到此基本上就可以让你的系统启动后文件系统filesys.exe就会自动调用fsdspy.dll。

下面我们来简单看看这个驱动
1.file.cpp文件
这个文件主要是针对一些文件基本操作,包括读,写,创建等等。
我们只要对其中的FILTER_CreateFileW函数进行改造就可以达到我们想要的效果。
HANDLE FILTER_CreateFileW(
PVOLUME pvol,
HANDLE hProc,
LPCWSTR lpFileName,
DWORD dwAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreate,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile)
这是函数原型,其中有2个参数很重要,分别是lpFileName和dwCreate,lpFileName是文件的名字,dwCreate参数有下面5种
CREATE_ALWAYS 
CREATE_NEW 
OPEN_ALWAYS 
OPEN_EXISTING 
TRUNCATE_EXISTING
其中前2种是新建文件。
对此,我们可以通过这两个参数控制对某些文件的各种操作,也可以防止新建文件。

2.find.cpp
这个文件主要是查找,你可以将他对应到API函数的FindFirstFile,FindNextFile。
我们只要对其中的HANDLE FILTER_FindFirstFileW函数进行改造就可以隐藏文件甚至文件夹。
HANDLE FILTER_FindFirstFileW(PVOLUME pvol, HANDLE hProc, PCWSTR pwsFileSpec, PWIN32_FIND_DATAW pfd)
在这个函数之中首先我们需要注意的是pwsFileSpec,这个参数就是要查找的东西。支持通配符。比如要隐藏Harddisk下的所有目录只需过滤“*.*”就可以达到

效果。需要注意的是,非HardDisk下的顶级目录需要自己判断pwsFileSpec中带的路径。

如果只想隐藏文件夹下面某些文件,这个麻烦一点,你需要配合FILTER_FindNextFileW函数一起才能达到完美的效果。同样的也不难,处理pfd参数就可以了,不

过必须在执行完FilterHook对应的函数后做处理。简单点说就是清空查找到的信息,return一个无效句柄就可以了。

3.path.cpp
这个文件包括一些目录操作和文件操作。
主要可能用到有下面4个函数
FILTER_CreateDirectoryW创建文件夹
FILTER_RemoveDirectoryW删除文件夹
FILTER_DeleteFileW删除文件
FILTER_MoveFileW修改文件/文件夹名字

需要过滤可以直接通过pwsNewFileName参数来判断。

 

参考:http://msdn.microsoft.com/en-us/embedded/aa731293.aspx

抱歉!评论已关闭.