sghcel
驱动牛犊
驱动牛犊
  • 注册日期2009-02-26
  • 最后登录2009-05-07
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1513回复:5

关于文件过滤驱动的文件路径保存问题

楼主#
更多 发布于:2009-03-14 18:26
DeviceName为要保存的文件命名,
在这个里面打印出来的信息都是正常的,但是在下面的函数里面打印就出问题了。大家帮忙看看吧。谢谢了
我刚学驱动不久

其中gFileList的定义  UNICODE_STRING *gFileList[100];
BOOLEAN MyProtectFile(WCHAR *DeviceName)
{

    gFileList[gPos]= ExAllocatePoolWithTag(NonPagedPool,sizeof(UNICODE_STRING),NULL);
    RtlInitUnicodeString(gFileList[gPos], DeviceName);
    DbgPrint("添加文件:%wZ\n", gFileList[gPos]);
    gPos = gPos + 1;
                     return TRUE;
}

VOID GetProtectFileList()
{
    INT i;
    DbgPrint("打印被保护的文件!\n");
    //ASSERT(FALSE);
    for(i = 0; i < gPos; i++)
    {
        DbgPrint("%wZ\n", gFileList);
    }
    DbgPrint("打印结束!\n");
}
sghcel
驱动牛犊
驱动牛犊
  • 注册日期2009-02-26
  • 最后登录2009-05-07
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-03-14 18:28
UNICODE_STRING *gFileList[100];
是个全局变量
itforever
驱动牛犊
驱动牛犊
  • 注册日期2008-06-13
  • 最后登录2009-12-17
  • 粉丝3
  • 关注0
  • 积分16分
  • 威望113点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-03-14 23:44
应该是:DbgPrint("%wZ\n", gFileList [I] ),
sghcel
驱动牛犊
驱动牛犊
  • 注册日期2009-02-26
  • 最后登录2009-05-07
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-03-15 21:40
它是指向指针的数组啊
linkyang
驱动牛犊
驱动牛犊
  • 注册日期2008-03-06
  • 最后登录2010-01-23
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望402点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-03-18 17:59
学习哦!
你是保护文件吗?
sghcel
驱动牛犊
驱动牛犊
  • 注册日期2009-02-26
  • 最后登录2009-05-07
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望131点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-03-28 10:29
就是保护文件。原因找到了。
RtlInitUnicodeString(gFileList[gPos], DeviceName);把gFileList[gPos]的buffer指向了DeviceName的buffer。
当BOOLEAN MyProtectFile(WCHAR *DeviceName)这个函数返回的时候。DeviceName指向的内存也就没有了。也就是gFileList[gPos]的buffer指向了一个局部变量
游客

返回顶部