阅读:2674回复:4
关于数据结构的问题
大家在做加解密过滤驱动的时候,会有很多情况好把自己的多个结构数据保存起来,供后续的情况使用,如:
tooflat的例子中用到RTL_GENERIC_TABLE来存FILE_CONTEXT; 还有如果要得到当前进程路径,有一种办法是利用PsSetLoadImageNotifyRoutine来建立一个自己的ProcessId和ImageFile之间的一个映射(用Don的话说,就是一个database); 类似的情况可能还有,那么请教大家都是用什么数据结构去存储呢?都用通用表吗?或者说内核中还有什么数据结构可以很方便的做这件事情的,单链表和双链表似乎都没有通用表好。。。大家会自己设计这个数据结构吗? |
|
最新喜欢:linshi... |
沙发#
发布于:2008-01-30 22:43
ENTRY_LIST linkfield大法~
或者使用邪恶到极限的:建立一个你自己的对象类型,让Windows替你管理对象,可以Create和Close,还可以,.... 不过此方法甚为邪恶~~ |
|
|
板凳#
发布于:2008-01-31 11:48
呃。。。酱紫。
那用RTL_GENERIC_TABLE到底有嚒坏处列。。。它跟ENTRY_LIST哪个效率高嗦,就我上文所说的那种情况:会有频繁的查询,但是只有少数时候要插入和删除; ps:嘛叫linkfield大法。。。 |
|
地板#
发布于:2008-02-13 10:42
GenericTable是树结构,EntryList是链式结构,查询肯定是GenericTable快,插入删除肯定是EntryList快。另外GenericTable有两种工作方式,看哪一种更适合你咯。
|
|
地下室#
发布于:2009-09-18 16:01
请问各位大牛:
我看tooflat中有如下一段代码 FileCtxPtr2 = RtlLookupElementGenericTable(&DevExt->FsCtxTable, FileCtxPtr); 据我的理解FileCtxPtr2用来保存加密标识,那么这个函数是怎样将原来的上下文FileCtxPtr 与 FileCtxPtr2建立联系的呢? 非常感谢! |
|