青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

sfilter(二) 繼續sfilter的DriverEntry()

Posted on 2010-02-18 22:51 S.l.e!ep.¢% 閱讀(1024) 評論(0)  編輯 收藏 引用 所屬分類: Windows WDM
sfilter(一) sfilter的DriverEntry()?? ?的代碼

1. 如果系統版本號 WINVER >= 0x0501 ?則動態加載如下的函數, 并保存到 gSfDynamicFunctions?這個結構(當然,這個結構是自定義的)
??? FsRtlRegisterFileSystemFilterCallbacks???? (詳見 sfilter(二) - 01 注冊FsFilter回調例程?)?
??? IoAttachDeviceToDeviceStackSafe?? 可以將我們創建的設備對象 附加 到 目標文件系統或卷的過濾設備堆棧之中,這樣發到目標設備的IRP,都先發到我們的設備對象,實現過濾
??? IoEnumerateDeviceObjectList
??? IoGetLowerDeviceObject
??? IoGetDeviceAttachmentBaseRef
??? IoGetDiskDeviceObject
??? IoGetAttachedDeviceReference
??? RtlGetVersion
??? (使用的函數是 MmGetSystemRoutineAddress() 它會從Ntoskrnl.exe 或 HAL 動態獲取到函數地址)

2. 保存 DriverObject? 到 gSFilterDriverObject (暫不知道用來干嘛...)

3. 如果系統版本號 WINVER >= 0x0501??且?IoEnumerateDeviceObjectList 這個函數指針不為空...
??? 執行 gSFilterDriverObject->DriverUnload = DriverUnload;?? (這里郁悶,干嘛不直接 DriverObject->DriverUnload = DriverUnload;??? ...)

4. 初始化一個資源變量 gRulesResource (使用的是 ExInitializeResourceLite() 函數)
ExInitializeResourceLite()

5. 初始化一個Mutex - gSfilterAttachLock (使用的是 ExInitializeFastMutex() 函數)

6. 初始化 gFsCtxLookAsideList、gFileNameLookAsideList、gReadWriteCompletionCtxLookAsideList (使用的是 ExInitializeNPagedLookasideList() 函數)
(不知道這三個用來放什么?)

7. 創建一個控制設備對象(這個對象代表這個驅動。注意它沒有設備擴展) (用于與應用層通信?)
??? 路徑是 file://FileSystem//Filters//SFilterCDO
??? 如果創建失敗,原因是路徑不在,那么就嘗試在 file://FileSystem//SFilterCDO?下創建

8. DriverObject的MajorFunction? 都使用 SfPassThrough() 這個函數來過濾,而
??? (1) 下列 IRP 使用 SfCreate() 來過濾
??? IRP_MJ_CREATE
??? IRP_MJ_CREATE_NAMED_PIPE
??? IRP_MJ_CREATE_MAILSLOT?
????
??? (2) IRP_MJ_FILE_SYSTEM_CONTROL 使用 SfFsControl() 來過濾
????
?? ?(3) IRP_MJ_CLEANUP = SfCleanup;
????
??? (4)?IRP_MJ_CLOSE = SfClose;
?
??? (5) IRP_MJ_READ = SfRead;

????(6)?IRP_MJ_WRITE = SfWrite;
???
??? (7)?IRP_MJ_DIRECTORY_CONTROL = SfDirectoryControl;
?
??? (8) IRP_MJ_SET_INFORMATION = SfSetInformation;
????
9、填充 FastIoDispatch 結構,并賦給 DriverObject
???????FastIoDispatch->FastIoCheckIfPossible = SfFastIoCheckIfPossible;
?????? FastIoDispatch->FastIoRead = SfFastIoRead;
?????? FastIoDispatch->FastIoWrite = SfFastIoWrite;
?????? FastIoDispatch->FastIoQueryBasicInfo = SfFastIoQueryBasicInfo;
???????FastIoDispatch->FastIoQueryStandardInfo = SfFastIoQueryStandardInfo;
???????FastIoDispatch->FastIoLock = SfFastIoLock;
???????FastIoDispatch->FastIoUnlockSingle = SfFastIoUnlockSingle;
???????FastIoDispatch->FastIoUnlockAll = SfFastIoUnlockAll;
???????FastIoDispatch->FastIoUnlockAllByKey = SfFastIoUnlockAllByKey;
???????FastIoDispatch->FastIoDeviceControl = SfFastIoDeviceControl;
???????FastIoDispatch->FastIoDetachDevice = SfFastIoDetachDevice;
???????FastIoDispatch->FastIoQueryNetworkOpenInfo = SfFastIoQueryNetworkOpenInfo;
???????FastIoDispatch->MdlRead = SfFastIoMdlRead;
???????FastIoDispatch->MdlReadComplete = SfFastIoMdlReadComplete;
???????FastIoDispatch->PrepareMdlWrite = SfFastIoPrepareMdlWrite;
???????FastIoDispatch->MdlWriteComplete = SfFastIoMdlWriteComplete;
???????FastIoDispatch->FastIoReadCompressed = SfFastIoReadCompressed;
???????FastIoDispatch->FastIoWriteCompressed = SfFastIoWriteCompressed;
???????FastIoDispatch->MdlReadCompleteCompressed = SfFastIoMdlReadCompleteCompressed;
???????FastIoDispatch->MdlWriteCompleteCompressed = SfFastIoMdlWriteCompleteCompressed;
???????FastIoDispatch->FastIoQueryOpen = SfFastIoQueryOpen;

10、如果系統版本 WINVER >= 0x0501 且 RegisterFileSystemFilterCallbacks 這個函數指針不為空
??????? 那么通過 RegisterFileSystemFilterCallbacks() 這個函數設置一些 callback (具體做什么還不知道。。。)

???FsFilterCallbacks.SizeOfFsFilterCallbacks = sizeof(FS_FILTER_CALLBACKS);
???FsFilterCallbacks.PreAcquireForSectionSynchronization = SfPreFsFilterPassThrough;
???FsFilterCallbacks.PostAcquireForSectionSynchronization = SfPostFsFilterPassThrough;
???FsFilterCallbacks.PreReleaseForSectionSynchronization = SfPreFsFilterPassThrough;
???FsFilterCallbacks.PostReleaseForSectionSynchronization = SfPostFsFilterPassThrough;
???FsFilterCallbacks.PreAcquireForCcFlush = SfPreFsFilterPassThrough;
???FsFilterCallbacks.PostAcquireForCcFlush = SfPostFsFilterPassThrough;
???FsFilterCallbacks.PreReleaseForCcFlush = SfPreFsFilterPassThrough;
???FsFilterCallbacks.PostReleaseForCcFlush = SfPostFsFilterPassThrough;
???FsFilterCallbacks.PreAcquireForModifiedPageWriter = SfPreFsFilterPassThrough;
???FsFilterCallbacks.PostAcquireForModifiedPageWriter = SfPostFsFilterPassThrough;
???FsFilterCallbacks.PreReleaseForModifiedPageWriter = SfPreFsFilterPassThrough;
???FsFilterCallbacks.PostReleaseForModifiedPageWriter = SfPostFsFilterPassThrough;


11、當一個新的文件系統被裝入或者當任何文件系統被卸載時,注冊的回調函數 SfFsNotification將被調用
????????通過? tatus = IoRegisterFsRegistrationChange(DriverObject, SfFsNotification); 這一句來實現

12、試圖附著到合適的RAW文件系統設備對象 \\Device\\RawDisk?和 \\Device\\RawCdRom,因為他們沒有被IoRegisterFsRegistrationChange枚舉
????? (通過 IoGetDeviceObjectPointer() 函數)
???????
13、清除控制設備對象上的初始化標志,因為我們現在成功完成初始化

14、調用 IoRegisterDriverReinitialization

15、打完收工!!
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲女人天堂成人av在线| 久久9热精品视频| 亚洲国产综合91精品麻豆| 美日韩免费视频| 亚洲老司机av| 亚洲精品专区| 国产精品成人一区二区网站软件| 亚洲午夜精品福利| 亚洲综合色自拍一区| 国产一级久久| 亚洲国产成人精品久久| 欧美另类69精品久久久久9999| 在线视频你懂得一区二区三区| 中日韩在线视频| 激情久久久久久久| 91久久极品少妇xxxxⅹ软件| 欧美日韩国内| 久久久免费精品| 欧美va日韩va| 久久国产乱子精品免费女| 久久人人爽国产| 亚洲一区二区三区国产| 亚洲欧美激情四射在线日 | 久久国产福利| 亚洲电影免费在线| 亚洲免费观看视频| 好吊日精品视频| 日韩午夜在线播放| 国产一区二区精品久久| 亚洲精品1区2区| 国产婷婷色一区二区三区四区| 女同一区二区| 国产精品一区二区a| 欧美韩日一区| 国产农村妇女精品一区二区| 亚洲国内在线| 国内伊人久久久久久网站视频 | 亚洲男人的天堂在线| 久久一区视频| 欧美一区二区在线播放| 欧美高清视频在线播放| 久久蜜桃精品| 国产精品亚洲一区| 亚洲免费高清视频| 亚洲国产精品一区二区www| 亚洲一级黄色| 一区二区日韩欧美| 免费欧美日韩| 免费成人av资源网| 国产亚洲精品久久飘花| 一区二区三区久久久| 亚洲美女色禁图| 久久香蕉国产线看观看av| 午夜精品久久久久影视| 欧美日韩午夜剧场| 亚洲成人资源| 亚洲电影免费在线观看| 国产日韩一区二区三区| 一本色道久久综合亚洲精品不| 亚洲激情亚洲| 欧美freesex8一10精品| 免费美女久久99| 在线观看视频一区二区欧美日韩| 午夜国产一区| 久久国产精品毛片| 国产精品亚洲人在线观看| 中日韩美女免费视频网址在线观看| 99成人在线| 欧美美女bbbb| 一本色道久久综合精品竹菊| 99国产麻豆精品| 欧美日韩黄色一区二区| 亚洲精品欧美在线| 亚洲色图制服丝袜| 国产精品久久久久一区二区三区共| 夜夜嗨av一区二区三区免费区| 亚洲最新在线视频| 国产精品xnxxcom| 亚洲欧美日韩在线高清直播| 欧美一区二区三区婷婷月色 | 欧美三级欧美一级| 亚洲自拍电影| 久久夜色精品亚洲噜噜国产mv| 亚洲第一主播视频| 欧美激情一区二区| 亚洲亚洲精品三区日韩精品在线视频| 亚洲免费中文字幕| 狠色狠色综合久久| 欧美精品福利视频| 亚洲一区国产一区| 欧美成黄导航| 亚洲一区二三| 黑人一区二区| 欧美精品在线播放| 亚洲香蕉视频| 欧美sm视频| 亚洲免费视频在线观看| 国产亚洲网站| 欧美日韩国产经典色站一区二区三区 | 国产精品视频在线观看| 久久国产精品色婷婷| 亚洲激情成人网| 午夜精品久久久久| 91久久一区二区| 国产精品一区二区久久久| 久久免费视频网站| 中文在线一区| 亚洲欧洲一区二区天堂久久| 欧美一区二区三区啪啪| 亚洲精品一区二区三区av| 国产精品视频网站| 欧美国产日韩一区二区| 新67194成人永久网站| 亚洲国产你懂的| 久久精品亚洲一区| 一本一本a久久| 亚洲黄色成人网| 国产亚洲一区二区三区| 欧美体内she精视频| 免费久久99精品国产自在现线| 亚洲欧美日韩在线观看a三区 | 午夜欧美精品久久久久久久| 亚洲国产欧洲综合997久久| 国产精品综合网站| 欧美日韩另类在线| 免费日韩av电影| 久久精品一本| 午夜精品久久久久影视| 99视频日韩| 亚洲美女尤物影院| 亚洲精品影视| 亚洲精品乱码久久久久久蜜桃91 | 一区二区三区偷拍| 在线观看中文字幕亚洲| 国产日韩综合一区二区性色av| 欧美视频导航| 欧美午夜www高清视频| 欧美国产精品久久| 欧美 日韩 国产在线| 乱人伦精品视频在线观看| 久久国产直播| 欧美在线一区二区| 久久久久国产精品一区| 欧美在线视频一区二区| 性欧美8khd高清极品| 欧美亚洲日本国产| 久久九九国产精品| 久久午夜电影网| 蜜臀va亚洲va欧美va天堂| 久久躁日日躁aaaaxxxx| 老司机午夜精品视频| 免费日韩精品中文字幕视频在线| 久久久久久穴| 欧美成人激情在线| 欧美精品亚洲一区二区在线播放| 欧美国产第一页| 欧美日韩一区在线视频| 国产精品国产精品国产专区不蜜| 欧美三级视频在线| 国产精品久久午夜| 国产一在线精品一区在线观看| 黄色资源网久久资源365| 在线观看视频一区二区欧美日韩| 亚洲欧洲一区二区在线观看| 日韩一级大片| 小嫩嫩精品导航| 老司机精品视频网站| 亚洲国产乱码最新视频| 在线一区二区视频| 久久大综合网| 欧美韩国一区| 国产精品亚洲成人| 亚洲高清一二三区| 亚洲字幕一区二区| 久久国产婷婷国产香蕉| 亚洲高清在线观看一区| 亚洲无限av看| 久久亚洲国产成人| 欧美久久影院| 国内精品久久久久久 | 国产欧美日韩亚洲精品| 曰韩精品一区二区| 亚洲欧美国产日韩中文字幕| 久久亚洲综合色一区二区三区| 亚洲国产视频直播| 性欧美xxxx大乳国产app| 欧美韩国日本一区| 国产自产高清不卡| 亚洲无线视频| 欧美国产免费| 亚洲综合第一| 欧美日产一区二区三区在线观看 | 欧美日韩另类一区| 一区免费观看| 欧美一区三区三区高中清蜜桃| 欧美激情第五页| 久久国产精品久久久久久久久久 | 国产日韩在线一区| 日韩一级精品| 欧美xart系列在线观看|