阅读:1904回复:5
请教:sfilter中文件根据ID打开是指什么?
如题,谢谢!
另外,ExAllocate(N)PagedLookasideList( )和ExAllocatePoolwithTag( )这两个函数有什么区别啊?对它们的使用有什么要注意的?谢谢谢谢!! |
|
禁止发言
|
沙发#
发布于:2010-11-20 00:16
用户被禁言,该主题自动屏蔽! |
禁止发言
|
板凳#
发布于:2010-11-20 00:40
用户被禁言,该主题自动屏蔽! |
地板#
发布于:2010-11-20 07:20
lookasidelist是基于固定块分配大小的一种减少碎片的算法。
比如,你每次都要分配 100字节,可以预告分配 50个100字节,每个单元是100字节,随用随取,用完了还回来,这样就不会有碎片(碎片也是100字节,可以二次使用,所以认为没有碎片) 只适用于分配的内存是固定大小的,否则你只能用传统的分配函数处理了(当然,碎片也无法处理) |
|
|
禁止发言
|
地下室#
发布于:2010-11-20 20:29
用户被禁言,该主题自动屏蔽! |
5楼#
发布于:2010-11-21 18:40
大家的回答好详细啊,非常感谢!
呃…标题中的问题(文件根据ID打开指什么?)有人能回答一下吗? 另外再问一个问题,手上一份不知是哪位大牛(对不住了)的Sfilter.c中带的一个GenericTable是在SfClose中查找并减少引用次数的,并且当 if ((0 == FileCtxPtr->RefCount) && (!FileObject->SectionObjectPointer || (!FileObject->SectionObjectPointer->DataSectionObject && !FileObject->SectionObjectPointer->ImageSectionObject))) { RtlDeleteElementGenericTable(&gFileCtxPassTable, &ObjectPassPtr); } 时将元素从表中删除。判断条件RefCount=0好理解,剩下的是什么,有什么特殊的用意还是对所有的用来存FileObject->FsContext的表都一样?如果我自己维持一个Table,也要这样处理吗?谢谢! |
|