如何在wince下實現乙個檔案系統驅動
應用程式操作檔案是通過wince 檔案系統提供的介面進行操作,如:可以通過createfile函式,開啟或建立乙個檔案。接下來,系統是如何去完成這個任務的呢?比如我們要操作sd卡上的檔案,sd卡上也有自己的檔案系統,用於組織和管理檔案,wince檔案系統是如果操作這些檔案的呢?這時候,fsd(檔案系統驅動)就發揮它的作用了。檔案的操作共涉及到五個層次:
1、應用程式:使用者通過應用程式操作檔案。
2、wince檔案系統:作業系統的一部分,根據使用者的請求,判斷操作的是那個裝置上的檔案,以便呼叫相應的驅動。
3、檔案系統驅動:作業系統沒辦法直接和裝置驅動進行互動,需要通過檔案系統驅動,實現與裝置驅動的操作,以實現檔案操作。
4、裝置驅動:實現了裝置上的操作,包括檔案操作等。
5、裝置上的檔案系統:組織和管理裝置上的檔案儲存。
從以上的分析可以知道,檔案系統在作業系統和裝置驅動之間起到了乙個連線作用。在實現的時候,檔案系統驅動基於裝置驅動,實現了wince檔案系統中的檔案操作函式,如createfile等。
實現乙個檔案系統驅動,大致可以分為以下幾步:
1、基於裝置驅動,實現檔案系統函式,如:createfile, writefile, readfile等等。實現的時候,函式的名字可以根據個人愛好隨便定義。函式的實現放在乙個動態連線庫裡面。
2、將定義的檔案系統函式export出去。export出去的名字,就不能那麼隨便了,就像在家裡面,你喊你老婆什麼都可以,但是公布給外面的名字,就不能那麼任意了。規則是所以的函式都要有乙個固定的字首,字首後面就是標準的檔案系統函式名。字首可以自己定義,如myfsd_,你只要在登錄檔裡面說明你的檔案系統驅動是這個字首就行了。也可以使用乙個預設的字首--fsd,使用這個的話,就不用在登錄檔裡面說明了,檔案系統是知道的。
3、將檔案系統驅動的**檔案新增到wince os的工程中。開啟wince工程(ce5.0使用pb,ce6.0使用vs2005,此處以ce6.0為例),開啟:platform/你的平台對應的資料夾/src/,右擊src目錄下的drivers,選擇add->new sources subproject,在提示框中選擇動態鏈結庫模板,然後一次操作...。
注:你也可以不進行這一步操作,完全可以單獨建個動態鏈結庫工程,編譯生成動態鏈結庫,然後將動態鏈結庫包含到os中就行了。不過,我並沒有進行過驗證。
4、將檔案系統驅動的登錄檔資訊新增到wince的登錄檔中。如:
[hkey_local_machine/system/storagemanager/autoload/myfsd]
"dll"="myfsd.dll" // 驅動的名字,也就是實現的檔案系統驅動,最後生成的動態鏈結庫
"paging"=dword:0 // 記憶體是否分頁,0-不分頁,1-分頁。分頁的話,則可以被提交到快取,不分頁的話,則不可以
"folder"="mydev" // 裝置的跟目錄名。應用程式在設計上進行檔案操作時的根目錄
"prefix"="myfsd" // 檔案驅動函式的字首
5、將檔案系統驅動模組新增到os中。通過修改.bib檔案來實現。如:
myfsd.dll $(_flatreleasedir)/myfsd.dll nk shk
至此,檔案系統驅動已經實現和新增完成,在裝置mount之後,就可以進行相應的檔案操作了。
如何在wince下實現乙個檔案系統驅動
如何在wince下實現乙個檔案系統驅動 應用程式操作檔案是通過wince 檔案系統提供的介面進行操作,如 可以通過createfile函式,開啟或建立乙個檔案。接下來,系統是如何去完成這個任務的呢?比如我們要操作sd卡上的檔案,sd卡上也有自己的檔案系統,用於組織和管理檔案,wince檔案系統是如果...
如何在wince下實現乙個檔案系統驅動
如何在wince下實現乙個檔案系統驅動 應用程式操作檔案是通過wince 檔案系統提供的介面進行操作,如 可以通過createfile函式,開啟或建立乙個檔案。接下來,系統是如何去完成這個任務的呢?比如我們要操作sd卡上的檔案,sd卡上也有自己的檔案系統,用於組織和管理檔案,wince檔案系統是如果...
如何在DOS下開啟乙個資料夾
今天再做乙個批處理檔案時發現在,想開啟乙個資料夾用 start 打不開,查了下資料才知道。因為 dos 不支援長檔名,只支援6個位元組 也就是中文3個字,英文6個字母 譬如有資料夾 c 我的資料夾開啟就是 start c 我的文 1 後面的1表示,前面重複的第乙個。比如上面的,如果還有個資料夾是 c...