阅读:1297回复:3
从驱动往应用程序传数据的问题
我用DeviceIoControl里面定义的输出buffer的方法从驱动向应用传数据,直接
往输出buffer里面写入数据就没问题,要是从驱动一个变量里面strcpy就蓝屏重起,帮忙看看吧 ResultStatus = ObReferenceObjectByHandle(ProcessHandle,PROCESS_ALL_ACCESS,*PsProcessType,UserMode,(PVOID)&process,(PVOID)&info); DBGPRINT(("%s"),process->ImageFileName ) 这个能打出来,这是个UCHAR[16]的变量 //strcpy(buff,"test") 这样就没问题 , buffer是外面传进来的buffer strcpy(buff,process->ImageFileName); 这个就蓝屏,恨不得钻进去 把ImageFileName一个一个字符挖出来付给buff 已经蓝了无数次了,各位帮帮忙吧 |
|
沙发#
发布于:2007-07-31 16:52
1. process->ImageFileName是个什么类型的东东?
2. EPROCESS结构系统公开了吗?显然没有,那么不同的系统下使用该东东安全吗? 3. 如果你是为了获取进程对应的ImageFileName的话,那么为何不使用正常手段来获取? |
|
|
板凳#
发布于:2007-07-31 16:59
引用第1楼devia于2007-07-31 16:52发表的 : process->ImageFileName是EPROCESS里面的东西,EPROCESS也确实没有标准,我只是随便找了一个,我也知道用PsSetCreateProcessNotifyRoutine什么的是正道,但是我现在的任务是实验所有 监视进程启动(包括这个hook服务表)的方法,我就觉得奇怪,为啥能打印出来,就不能复制到buffer里面去哪。 |
|
地板#
发布于:2007-07-31 17:25
又试了一下,发现不只是往外面的buffer传数据,任何读process->ImageFileName的操作都会蓝屏,只有定义一个char*的指针指向这个变量才能打印出来,这是什么原理阿,小弟初学
乍连,各位老大帮帮忙看看阿 |
|