csc cache win7
|-May-03|-May-03
网络文件系统的机制
,()ningthestateoftheI/ORequestPacket(IRP).TheIRP_NOCACHEbitintheFlagsfieldwilltellthefilesystem(and,ofcourse,thefilter)thatthefileI/Oinquestionisnottobecached.Normally,thisisthecluetothefilesystemdriverthatthisdatashouldnotbecached.
对于文件系统过滤驱动程序来说确定本地文件系统NTFS或者FAT的cache策略是相当容易的只要检查一下I/O请求包IRP的状态就可以了。如果发现IRP的flag域带有IRP_NOCACHE标志就说明文件系统不允许文件cache。
Networkfilesystemsareabitmorecomplexthanthis.WhiletheyalsousetheIRP_NOCACHEbit,theymayalsoneedtodisablecachingasaresultoftheirowninternalpolicy-perhapsdirectedbythestateoftheremotefileonthefiles
erver,aswellasotherclientsinthenetworkthatmightbeusingthefile.Therdbss.sys,whichimplementspartoftheminiredirectormodelallowstheredirector(forexamplemrxsmb.sys,whichisthedriverthatimplementsCIFSorLan
ManagerfunctionalityinWindows2000andmorerecent)tochangethecachingpolicyonaper-filebasis.Inthiscase,anormalIRP_MJ_READIRP,whichwouldnormallybecached,maybetreatedasnon-cached.
而网络文件系统在cache策略方面则有点复杂。虽然它们也使用IPR_NOCACHE标志它们也需要在它们的内部策略当中禁止使用文件cache这些内部的cache策略是由文件服务器上的远程文件的状态决定的而网络上其它的客户端都会使用这些文件。rdbss.sys驱动程序实现了被称为“miniredirector”模型的一部分功能它能够允许每一个重定向器redirector基于每一个文件来改变其缓冲策略。在这种情况下一个普通的IRP_MJ_READ类型的IRP可能被当作可被缓冲的也可以被当作非缓冲来处理。
Forafilterdriverthatismodifyingthedata,theusualtechniqueistolookforandoperateonnon-cachedI/Ooperations.ThiswillcapturebothpagingI/Ooperationsaswellasuserlevelnon-cachedI/Ooperations.However,ifthefilterwishestoalsofilteranyofthemini-redirectors(therearetwoshippedinWindowsXPforexample)itneedstolookatthefieldsoftheFileControlBlock(FCB).
对于一个正在修改文件读数据的过滤驱动程序来说例如对文件内容做透明加解密的驱动程序通常是通过检查和拦截非缓冲I/O请求来实现自己的功能。这样它们就会捕获分页I/O操作或者用户层的非缓冲I/O操作。但是如果过滤驱动程序如果也想拦截mini-redirector的话它就必须检查文件控制块FCB的相关域。
Formostfilesystems,theformatofthisstructureismostlyunderthecontrolofthefilesystem(exceptforthecommonheaderstructure)butformini-redirectorstheformatofthefilecontrolblockisdefinedbythemini-redirectormode
l.Seemrxfcb.hintheIFSKitforthefulldefinition.Thekeydatastructurehere(forafilter)istheMRX_FCB.TheFcbStatefieldwillindicateifthecurrentstateofthefileiscachedornon-cached.Ifthefileallowscachingthe
FCB_STATE_READCACHING_ENABLEDbitwillbeset.Otherwise,I/Otothegivenfilewillbetreatedasnon-cached.
对于大多数文件系统来说FCB结构的格式主要由文件系统来决定除了通用的头结构以外但是mini-redirector的FCB结构的格式由mini-redirector模式定义完整的FCB定义可以参考mrxfcb.h。对过滤驱动程序来说最关键的数据结构是MRX_FCB。该结构的FcbState域描述了该文件是否需要cache或者非cache。如果文件可以被cache则FCB_STATE_READCACHING_ENABLED标志将置位。否则对于指定的文件将被视为非cached。值得注意的是在WindowsServer2003IFSKit中这个标志的拼写已经发生了变化现在的拼写是FCB_STATE_READCACHING_ENABLED。
Note:IntheWindowsServer2003IFSKitthespellingofthisflaghasbeenchan
gedsothatitisnowFCB_STATE_READCACHING_ENABLED.
Whilethisallowsafiltertodeterminethecurrentstateofthefile,theredoesnotappeartobeanysimplewayforafiltertoensurethatthestateofthisfielddoesnotchangebetweenthetimethefilterchecksitandthetimethecal
lisactuallyprocessedbythefilesystem.Thus,itispossiblethatthefilestatemightchangetodisallowcachingafterthischeckismade.Similarly,ifthecheckisdoneaftertheI/Ohasbeenprocessed,itispossiblethefilestat
emightchangetoindicatethatcachingisnowallowedonceagain.SamplecodeforthiscanbeseenintheIFSKit(seesmbmrx/wnet/sys/openclos.c)todemonstrateonepotentialimplementationmodel.
通过检查FCB结构的FcbStatus域的状态允许过滤驱动程序检查当前文件的状态但是却没有什么有效而简单的方法确保过滤驱动程序检查时的状态与文件系统真正处理这个文件之间该文件状态保持不变。因此这样的情况很可能发生文件过滤驱动程序检查文件状态时文件是允许cache的但是真正处理的时候变为不允许cache了。相反的情况也同样会出现。详细的示例请看IFS的例子代码smbmrx/wnet/sys/openclos.c。
Topreventthestatefromchanging,thecallermustacquiretheFCBresource;inordertoavoiddeadlockswhilecallingtheredirector,itmustbeownedexclusive(usingtheERESOURCEintheFCBitself).Again,todothisrequiesrelyingu
pontheimplementationandpublishedinterfaceavailableintheIFSKit.
为了防止这种状态的变化调用者必须获取FCB的资源。为了避免调用redirector其间出现死锁现象调用者必须排他的拥有FCB资源。
Note:thissynchronizationisonlyneededforuserlevelcachedrequests,sincepagingI/Ooruserlevelnon-cachedrequestswillalreadynotbecachedasamatterofcourse.ThisisimportantbecausethislockcannotbesafelyacquiredwhenprocessingpagingI/O-thiswouldviolatetheexistinglockhierarchyandintroducethepossibilityofdeadlocks.
EventuallyIfiguredoutthiswasbecausenetworkredirectorsliketosetaninternalflagcalledSRVOPEN_FLAG_DONTUSE_WRITE_CACHEINGwhenafileisopenedforwrite-only,whichcausestheredirectortosendallwritesacrossthenetworkassoonasitgetsthem,bypasstheNTcache.Thismeansanylayeredfilterwillseetheordinarywriterequest,butneveracorrespondingpaging-I/Orequest.Togetaroundthis,myfilternowhastoforciblyturneverywrite-onlynetworkfileopenintoaread/writeopen.
当一个文件以只写write-only方式打开时网络重定向器会设置一个内部标志SRVOPEN_FLAG_DONTUSE_WRITE_CACHEING这将导致重定向器发送所有的写请求到网络文件服务器上绕过了NTcache机制。这意味着所有的分层过滤驱动程序只能看到普通的写请求但是不会看到任何对应的分页I/O请求。为了能够过滤网络文件的读写分页请求我的过滤驱动程序不得不强迫将所有的以只写write-only方式打开网络文件变为读写方式打开。
下面是如何将write-only打开的文件转换为读写打开的文件的方式
ThereasonwhyImrantinginpublicisthatseemsthatIcanneverknowa-prioriwhetherIwillseeareadorwriterequestasbothpagingandnon-pagingI/O,oroneortheother,foragivenfilesystem.Instead,Imustscsc cache win7pecialcasemycodeforeachfilesystemandpraythatIvecoveredeveryscenariothatcanresultinmynothandlingaread/writeor
handlingittwice.TheonlyalternativeIcancomeupwithistoforceALLreads/writestoafilteredfiletobenon-cached,withthecorrespondingperformancepenalties.Isthereanelegantwayoutofthismess?
IthinkIsentamessageaboutthisbefore.ThelongandtheshortofitisthatyouCANNOTforcetheredirectortocachewritesforfilesthatareopenwrite-only.Youmustinsteadtweakthefilepermissionstoconvertawrite-onlyopenofanetworkfileintoaread/writeopen.Usecodelikethefollowingtodoso:
if((0(desiredAccess(FILE_EXECUTE|FILE_READ_DATA)))(0!(desiredAccess(FILE_WRITE_DATA|
FILE_APPEND_DATA))))
{
pIrpSp-Parameters.Create.SecurityContext-DesiredAccess|FILE_READ_DATA;
}
下面解释了为什么write-only类型的文件不能执行cache
writeonlyhandleinredirectordoesntcache
--------------------------------------------------------------------------------
Igotbittenbythisafewmonthsago,sohereismytakeonthesituation...
ThisisbecausetheNTcacheneedsreadaccesstothefileinordertowork.Thecacheworksonpage-sizedchunks.Ifyouopenafileandwrite1byteatlocation0,andcachingisenabled,theNTcachewillpage-inthememorypagerepresentingthefirst4096bytesofthefile,whichrequiresittoissueapagingI/Oreadforthefirst4096bytes.Thenitwillpasteinyournewbyteandmarkthepagedirty,whichcausesthepagetobewrittenoutlaterbythelazywriter.
Forlocalfiles,pagingI/Oisallowedtobypassallsecuritychecks(sinceonlytrustedkernelcomponentscanissuepagingI/Orequests),sothatpagingreadsareallowedonallopensforallfiles.Fornetworkfiles,thereisnoreasontheremotePCshouldtrustyourPCandgrantitreadaccessifyouonlyhavewrite-accesstothefile.ThereforetheNTcachecannotbeusedonwrite-onlyremotefiles.
推薦系統(tǒng)
雨林木風 winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:WinXP雨林木風在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)知名品牌,雨林木風WindowsXP其系統(tǒng)口碑得到許多人認可,積累了廣大的用戶群體,是一款穩(wěn)定流暢的系統(tǒng),雨林木風 winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載,有需要的朋友速度下載吧。
系統(tǒng)等級:進入下載 >蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win7蘿卜家園win7純凈版是款非常純凈的win7系統(tǒng),此版本優(yōu)化更新了大量的驅(qū)動,幫助用戶們進行舒適的使用,更加的適合家庭辦公的使用,方便用戶,有需要的用戶們快來下載安裝吧。
系統(tǒng)等級:進入下載 >雨林木風xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載
系統(tǒng)大?。?/em>1.01GB系統(tǒng)類型:WinXP雨林木風xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載,雨林木風WinXP系統(tǒng)技術(shù)積累雄厚深耕多年,采用了新的系統(tǒng)功能和硬件驅(qū)動,可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動對硬件的加速,加固了系統(tǒng)安全策略,運行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級:進入下載 >蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win10蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,(win10企業(yè)版,win10 ghost,win10鏡像),蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 ghost鏡像 X64位系統(tǒng)下載,其系統(tǒng)口碑得到許多人認可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團隊推出的蘿卜家園
系統(tǒng)等級:進入下載 >蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載
系統(tǒng)大小:0MB系統(tǒng)類型:Win10蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 ghost X64位 系統(tǒng)下載,蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,其系統(tǒng)口碑得到許多人認可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團隊推出的蘿卜家園win10國內(nèi)鏡像版,基于國內(nèi)用戶的習慣,做
系統(tǒng)等級:進入下載 >windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win11蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,windows11下載 蘿卜家園win11專業(yè)版 X64位 官網(wǎng)正式版可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動對硬件的加速,使得軟件在WINDOWS11系統(tǒng)中運行得更加流暢,加固了系統(tǒng)安全策略,WINDOWS11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級:進入下載 >
相關(guān)文章
- 有什么電腦自動關(guān)機軟件好用 電腦自動關(guān)機軟件下載推薦
- 微信抽獎小程序怎么弄,教你微信轉(zhuǎn)盤抽獎小程序制作方法
- 收集意見建議小程序怎么弄,教你制作匿名收集意見的小程序
- 掃碼助力活動怎么弄,微信公眾號助力活動的制作步驟
- 海報裂變活動怎么弄,微信公眾號生成海報裂變活動的方法
- 公眾號推廣二維碼怎么弄,微信公眾號推廣二維碼生成方法
- 公眾號裂變活動制作,微信公眾號怎么做裂變活動
- 登記信息二維碼制作,如何實現(xiàn)掃碼登記填報信息
- 登記表怎么弄,教你微信登記表格怎么做
- 參數(shù)二維碼怎么弄,微信公眾號帶參數(shù)二維碼怎么生成
- 報名二維碼怎么弄,微信公眾號報名二維碼制作步驟
- 設(shè)置電腦定時關(guān)機命令如何更改 電腦定時關(guān)機命令設(shè)置方法詳解
- win7怎么自動關(guān)機 win7自動關(guān)機時間設(shè)置方法
- 設(shè)置定時關(guān)機命令在哪 電腦設(shè)置定時關(guān)機命令
熱門系統(tǒng)
推薦軟件
推薦應(yīng)用
推薦游戲
熱門文章
常用系統(tǒng)
- 1win11最新娛樂版下載 技術(shù)員聯(lián)盟x64位 ghost系統(tǒng) ISO鏡像 v2023
- 2電腦公司windows7純凈版 ghost x64位 v2022.05 官網(wǎng)鏡像下載
- 3外星人系統(tǒng)Win11穩(wěn)定版系統(tǒng)下載 windows11 64位穩(wěn)定版Ghost V2022
- 4win11一鍵裝機小白版下載 外星人系統(tǒng) x64位純凈版下載 筆記本專用
- 5蘿卜家園Ghost win10 64位中文版專業(yè)版系統(tǒng)下載 windows10純凈專業(yè)版下載
- 6【國慶特別版】番茄花園Windows11高性能專業(yè)版ghost系統(tǒng) ISO鏡像下載
- 7青蘋果系統(tǒng) GHOST WIN7 SP1 X64 專業(yè)優(yōu)化版 V2024
- 8深度技術(shù)ghost win7純凈版最新下載 大神裝機版 ISO鏡像下載
- 9雨林木風windows11中文版免激活 ghost鏡像 V2022.04下載