用那個例子編譯成功後,產生一個SYS檔案。為了讓這個驅動被系統載入,必須建立一個
inf檔案。由於是使用現成的例子,因此這一步也可以省下來。直接右鍵點擊例子中的
inf檔案,在彈出的菜單中選擇“安裝”即可。 這裡要注意的是,inf中的StartType參數,它可以控制驅動被載入的方式:SERVICE_AUTO_START (2) 安全模式下不會自動載入SERVICE_BOOT_START (0) 在系統安全模式下啟動時 驅動也會自動載入SERVICE_DEMAND_START(3) 則驅動不會自動載入 因為是測試,我使用SERVICE_DEMAND_START,即由手動載入驅動。例子是miniFilter驅動,因此可以在命令提示行中用“fltmc load 驅動名稱”來載入,相應的卸載是“fltmc unload”。如果是其它驅動,則用"net start 驅動名稱"來載入,相應的卸載是"net stop 驅動名稱"。注意驅動名稱不是檔案名稱,而是inf中[Settings]的ServiceName值。驅動要發布時,也可以通過
CreateService &
StartService API來動態安裝。
Inf檔案的寫法,可以參考例子,或者拿現成的改一改。下面的是摘自驅動開發網的XiangXiangRen整理的
Inf檔案,改起來比較方便,謝謝XiangXiangRen 。
檔案過濾驅動安裝inf檔案簡易獲得法
不少同仁獲得inf檔案都是直接修改sfilter.inf,這個修改很需要耐性,不小心 敲錯又不能編譯調試,改錯難度不小。有些同仁不加修改,結果sfilter滿天飛:)。我修改了一下sfilter的安裝檔案,這樣你只要修改最後的字元 串列表,就可以輕鬆得到自己的安裝檔案了。可以用於任何打算靜態載入的檔案過濾驅動,內容如下:
[Version]
signature = "$Windows NT$"
Class = "ActivityMonitor" ;This is determined by the work this filter driver does
ClassGuid = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2} ;This value is determined by the Class
Provider = %MyName%
DriverVer = 08/28/2005,1.0.0.1
CatalogFile = Mycat.cat ; A CatalogFile entry is required for a WHQL signature.
; The actual catalog file will be provided by WHQL. The
; catalog file for this sample is not provided for use.
[DestinationDirs]
DefaultDestDir = 12
My.DriverFiles = 12 ;%windir%/system32/drivers
[SourceDisksNames]
1 = %MyDisk%
[SourceDisksFiles]
%MySysFileName% = 1
[DefaultInstall]
OptionDesc = %MyServiceDesc%
CopyFiles = My.DriverFiles
[DefaultInstall.Services]
AddService = %MyServiceName%,,My.Service
AddReg = My.AddRegistry
[DefaultUninstall]
DelFiles = My.DriverFiles
DelReg = My.DelRegistry
[DefaultUninstall.Services]
DelService = %MyServiceName%,0x200
[My.Service]
DisplayName = %MyServiceName%
Description = %MyServiceDesc%
ServiceBinary = %12%/%MySysFileName% ;%windir%/system32/drivers/JwFvfs.sys
ServiceType = 2 ;SERVICE_FILE_SYSTEM_DRIVER
StartType = 0 ;SERVICE_BOOT_START
ErrorControl = 1 ;SERVICE_ERROR_NORMAL
LoadOrderGroup = "FSFilter Activity Monitor" ;"filter" if install to 2k.
AddReg = My.AddRegistry
[My.AddRegistry]
[My.DelRegistry]
[My.DriverFiles]
%MySysFileName%
[Strings]
MyName = "Tan Wen"
MyServiceDesc = "Tan Wen's File System Filter."
MyServiceName = "TanWenFsF"
MyRegistry = "system/currentcontrolset/services/TanWenFsF"
MyDisk = "Tan Wen Source Media"
MySysFileName = "TanWen.sys"
修改的時候只要修改最後的字串列表,依次是 開發人員名,服務描述,服務名,註冊表位置,磁碟標籤,驅動檔案名稱。臨時使用,一般只要修改驅動檔案名稱字就行了。
如果要增加註冊表項,填寫上邊的My.AddRegistry和My.DelRegistry節。
以 上只能安裝到xp以上的系統。安裝到2000時,要把上邊的"FSFilter Activity Monitor"修改為"filter", 因為2000下還沒有Activity Monitor這個過濾器類別。而xp下ms推薦使用"FSFilter Activity Monitor"類別。