zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1124回复:7

怎样修改堆栈单元的内容

楼主#
更多 发布于:2004-11-30 14:48
我想在IRP_MJ_CREATE的时候修改创建文件的文件名,让他打开别的文件,可以我修改了名称后用IoSkipCurrentIrpStackLocation和IoCallDriver后好像没有什么作用。
---内核开发合作或提供基础技术服务QQ:22863668 ---
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-02 10:36
修改desiredaccess有效吗,好像文件系统不对此做检查吧,检查是
在上层作的。
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-02 10:26
如果在同一个volume中,只需要修改fileobject->filenameh和RelatedFileObject
如果在不同volume中,则除了修改文件名和RelatedFileObject,还需要以下面方式立即完成该irp,
Irp->IoStatus.Information = IO_REPARSE;
Irp->IoStatus.Status = STATUS_REPARSE;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_REPARSE;
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-02 09:54
当然可以这样改. 我就改过DesiredAccess, 没问题.
如果要改文件名, 你需要加一个completion routine, 在里面把你改过的文件名再改回来.

toad
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-12-02 09:39
原来的代码我删掉了,我也忘了怎么改的了,或者是用RtlInitUnicodeString改的,但是无效。我只想知道这样改到底行不行,比如更改DesiredAccess,到底会不会有效,我都试过了,好像没用???
---内核开发合作或提供基础技术服务QQ:22863668 ---
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-02 03:57
FilbObject->FileName是unicode_string, 不是unicode. 你不能对unicode_string使用wcs系列的函数.

toad
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-12-01 10:31
主要就是以下几步:
irpSp = IoGetCurrentIrpStackLocation( Irp );
wcscpy(irpSp->FileObject->FileName," ");
IoSkipCurrentIrpStackLocation( Irp );
IoCallDriver
---内核开发合作或提供基础技术服务QQ:22863668 ---
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2004-11-30 19:25
你是如何做的,把代码贴上来看看
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部