阅读:1513回复:5
关于文件过滤驱动的文件路径保存问题
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"); } |
|
沙发#
发布于:2009-03-14 18:28
UNICODE_STRING *gFileList[100];
是个全局变量 |
|
板凳#
发布于:2009-03-14 23:44
应该是:DbgPrint("%wZ\n", gFileList [I] ),
|
|
地板#
发布于:2009-03-15 21:40
它是指向指针的数组啊
|
|
地下室#
发布于:2009-03-18 17:59
学习哦!
你是保护文件吗? |
|
5楼#
发布于:2009-03-28 10:29
就是保护文件。原因找到了。
RtlInitUnicodeString(gFileList[gPos], DeviceName);把gFileList[gPos]的buffer指向了DeviceName的buffer。 当BOOLEAN MyProtectFile(WCHAR *DeviceName)这个函数返回的时候。DeviceName指向的内存也就没有了。也就是gFileList[gPos]的buffer指向了一个局部变量 |
|