wince中的檔案過濾驅動(FSDSPY)

2021-04-21 21:50:27 字數 2143 閱讀 8875

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

wince驅動sources檔案注釋

一 sources檔案 targetname 生成驅動檔案的名字 targettype 驅動檔案的型別,可以是dynlink,library,exe,分別表示檔案型別是dll,lib,exe。如果targettype是dll則入口定義成dllentry,如果targettype 是exe,則可以定義...

檔案過濾驅動的開發 上

當下列情況之一發生時,waitformultipleobjects函式返回 1.乙個或者全部指定的物件在訊號狀態 signaled state 2.到達超時間隔 如下 dword dwwaitstatus handle dwchangehandles 2 監視c windows目錄下的檔案建立和刪除...

wince 驅動的理解

wince 驅動的理解 1.wince 分層驅動 分為 mdd層 pdd層 mdd層為應用提供介面 ddi pdd為mdd提供介面 ddsi pdd 層驅動為 mdd 層驅動隱藏了具體的硬體實現 2.wince 單片驅動 單片驅動不僅直接為系統提供介面,也直接操作硬體。相比分層驅動它可以提更高的效率...