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

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.¢% 閱讀(1022) 評論(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| 国产精品福利在线观看网址| 国产欧美精品va在线观看| 激情久久五月| 一区二区欧美日韩| 欧美主播一区二区三区美女 久久精品人| 欧美一级免费视频| 欧美激情一区二区久久久| 亚洲视频axxx| 欧美成ee人免费视频| 国产精品视频一二| 亚洲精品国精品久久99热一| 亚洲制服av| 欧美成人在线免费观看| 亚洲色在线视频| 欧美成人免费在线| 国产自产2019最新不卡| 中日韩午夜理伦电影免费| 久久乐国产精品| 一区二区三区久久| 欧美国产精品一区| 狠久久av成人天堂| 性欧美1819sex性高清| 最新成人av网站| 久久久国产午夜精品| 国产精品福利网| 亚洲精品视频免费| 免费观看久久久4p| 午夜久久影院| 国产精品久久久一区二区三区| 亚洲精品极品| 欧美va天堂| 欧美中文日韩| 国产欧美日韩| 性色av一区二区三区在线观看| 亚洲精品国产精品国自产观看| 久久久亚洲影院你懂的| 国产欧美一区二区精品仙草咪| 国产精品99久久久久久久久久久久| 欧美1区3d| 久久亚洲综合色一区二区三区| 国产欧美日韩一区二区三区| 亚洲欧美日韩国产中文 | 美女免费视频一区| 午夜精品久久久久久久蜜桃app | 亚洲人成在线观看网站高清| 美女精品视频一区| 最新国产乱人伦偷精品免费网站| 免费不卡在线观看av| 久久精品99无色码中文字幕| 国产性猛交xxxx免费看久久| 久久av资源网| 亚洲免费在线观看视频| 妖精视频成人观看www| 欧美日韩视频免费播放| 亚洲午夜精品久久久久久app| 亚洲精品国产系列| 欧美日韩系列| 西西裸体人体做爰大胆久久久| 中日韩美女免费视频网站在线观看| 国产精品久久久久久久久免费桃花 | 99国产精品| 99精品视频免费在线观看| 欧美深夜影院| 性亚洲最疯狂xxxx高清| 欧美一区二区三区日韩| 在线精品视频免费观看 | 久久www免费人成看片高清 | 久久久91精品国产一区二区三区 | 影音先锋成人资源站| 欧美激情在线播放| 欧美日韩精品二区| 欧美在线看片a免费观看| 久久精品视频播放| 亚洲毛片一区二区| 亚洲一区视频| 亚洲激情综合| 香蕉成人久久| 亚洲乱码一区二区| 亚洲一区图片| 亚洲国产导航| 亚洲欧美综合网| 最新精品在线| 欧美一区二区三区四区视频| 日韩视频永久免费观看| 欧美一级在线播放| 亚洲校园激情| 美女露胸一区二区三区| 欧美一区二区在线免费播放| 欧美激情按摩| 噜噜噜91成人网| 欧美色大人视频| 欧美福利视频一区| 国产一区二区你懂的| 一区二区三区高清不卡| 亚洲人成免费| 久久久99精品免费观看不卡| 亚洲一区图片| 欧美国产欧美亚洲国产日韩mv天天看完整 | 激情av一区| 亚洲天堂久久| 亚洲蜜桃精久久久久久久| 性欧美videos另类喷潮| 正在播放亚洲| 欧美国产一区二区在线观看 | 亚洲图片欧美午夜| 亚洲日本在线观看| 久久精品视频网| 欧美中文字幕| 国产精品美女久久久久久免费 | 国产一区二区黄色| 亚洲中午字幕| 午夜伦理片一区| 国产精品国产三级国产普通话蜜臀| 亚洲丰满在线| 亚洲精品免费一二三区| 免费成年人欧美视频| 久久综合伊人77777麻豆| 国产日韩在线不卡| 欧美一区二区三区四区在线 | 一区二区久久| 亚洲免费视频中文字幕| 国产精品va在线播放| 一区二区三区高清在线| 亚洲一区综合| 国产精品一区二区三区观看 | 久久成人免费视频| 久久综合狠狠| 亚洲第一页在线| 欧美激情四色| 一区二区三区高清不卡| 亚洲欧美激情一区二区| 国产欧美一区二区精品性色| 欧美中文字幕视频| 欧美成年人网| 一本久久知道综合久久| 欧美午夜片在线免费观看| 亚洲一区二区精品视频| 欧美在线一区二区| 伊人精品在线| 欧美日本不卡视频| 亚洲欧美成人网| 久久综合999| 一区二区电影免费在线观看| 国产精品免费一区豆花| 久久久久久香蕉网| 亚洲精品一区二区三区四区高清 | 巨乳诱惑日韩免费av| 亚洲高清在线| 午夜性色一区二区三区免费视频 | 狂野欧美激情性xxxx| 欧美激情精品久久久久久黑人| 亚洲美女黄色片| 国产精品自在在线| 久久综合九九| av成人免费在线| 噜噜噜在线观看免费视频日韩| 亚洲人午夜精品| 国产精品久久久久久久第一福利 | 欧美伊人久久| 亚洲日本久久| 国产在线精品一区二区夜色| 欧美www视频| 午夜精品一区二区三区电影天堂| 欧美国产1区2区| 欧美一区在线看| av不卡免费看| 影音先锋亚洲视频| 国产精品欧美日韩久久| 欧美成人午夜免费视在线看片| 午夜精品久久| 一区二区三区高清在线| 欧美激情精品久久久久久变态| 欧美一区二区在线免费播放| 亚洲免费黄色| 亚洲国产mv| 国产酒店精品激情| 欧美区一区二| 免费成人黄色av| 久久裸体艺术| 欧美综合77777色婷婷| 中日韩美女免费视频网站在线观看| 欧美1区2区| 免费观看日韩| 蜜臀av一级做a爰片久久| 久久精品91| 久久精品国产清自在天天线| 亚洲资源在线观看|