lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
阅读:2159回复:2

大牛们能不能讲讲RtlGenericTable的用法?

楼主#
更多 发布于:2007-02-16 11:23
  初始化,插入记录,查找,删除记录msdn都讲的比较清楚,
但是如何修改已经有的记录和如何同步修改记录不是很明白,
大牛们能不能讲讲?
谢谢!
顺祝新年快乐!
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
沙发#
发布于:2007-02-16 14:29
前提我不是什么大牛,:-)
1》由RtlNumberGenericTableElements获取GenericTable的记录个数;
2》由RtlGetElementGenericTable根据索引获取记录:
3》找到记录后进行修改;
4》至于同步嘛,有两个层面的同步:
    第一,整个GENERIC-TABLE表的访问同步;
    第二,单个记录访问的同步,这需要你自己在记录结构中增加同步对象来实现;
人总在矛盾中徘徊。。。
lsxredrain
驱动中牛
驱动中牛
  • 注册日期2006-08-31
  • 最后登录2008-10-18
  • 粉丝1
  • 关注0
  • 积分540分
  • 威望421点
  • 贡献值1点
  • 好评度420点
  • 原创分4分
  • 专家分0分
板凳#
发布于:2007-02-16 14:46
谢谢
1.
RtlLookupElementGenericTable
RtlInsertElementGenericTable
这两个函数的返回值应该就是指向记录的指针?
通过这个指针来修改记录?

2.
可以通过如下的方式是对单条记录进行同步?
KeSetEvent(&FileCtxPtr2->Event, IO_NO_INCREMENT, FALSE);

3.通过如下方式对整个表同步?
ExAcquireFastMutex(&DevExt->FsCtxTableMutex);
FileCtxPtr = RtlLookupElementGenericTable(&DevExt->FsCtxTable, &FileCtxHdr);
ExReleaseFastMutex(&DevExt->FsCtxTableMutex);
游客

返回顶部