pwpwpw123
驱动牛犊
驱动牛犊
  • 注册日期2004-01-26
  • 最后登录2007-08-20
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1131回复:4

怎么简单的几句话,就是不对,各位看看ZwQuerySystemInformation调用正确否

楼主#
更多 发布于:2004-12-18 23:48
struct _SYSTEM_PROCESSES
{
        ULONG                           NextEntryDelta;
        ULONG                           ThreadCount;
        ULONG                           Reserved[6];
        LARGE_INTEGER           CreateTime;
        LARGE_INTEGER           UserTime;
        LARGE_INTEGER           KernelTime;
        UNICODE_STRING          ProcessName;
        KPRIORITY                       BasePriority;
        ULONG                           ProcessId;
        ULONG                           InheritedFromProcessId;
        ULONG                           HandleCount;
        ULONG                           Reserved2[2];
        VM_COUNTERS                     VmCounters;
        IO_COUNTERS                     IoCounters; //windows 2000 only
        struct _SYSTEM_THREADS          Threads[1];
}SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;

ULONG Ret;
PSYSTEM_PROCESSES pTmp;
NTSTATUS ntStatus;
pTmp = ExAllocatePool(PagedPool, sizeof(SYSTEM_PROCESSES) * 1024);
if(pTmp != NULL)
{
ntStatus = ZwQuerySystemInformation(0x5, pTmp, sizeof(SYSTEM_PROCESSES) * 1024, &Ret);
}



ntStatus是0xC0000005访问非法区域,pTmp是非空啊,要是大小不够应该报0xC0000004才对,试过加大10240还是不对。各位,要不是还有很Easy的错误我没看出来,啊,被鬼迷眼了啊?

[编辑 -  12/18/04 by  pwpwpw123]

[编辑 -  12/20/04 by  pwpwpw123]
pwpwpw123
驱动牛犊
驱动牛犊
  • 注册日期2004-01-26
  • 最后登录2007-08-20
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-20 09:07
周六日大伙都不在啊,自己顶一下
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-20 11:11
SYSTEM_PROCESSES 结构体的大小是不定的,sizeof()不管用。
调用ZwQuerySystemInformation(5,NULL,0,&LengthReturn)
然后用LengthReturn来分配堆。
pwpwpw123
驱动牛犊
驱动牛犊
  • 注册日期2004-01-26
  • 最后登录2007-08-20
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-22 08:55
不是啊,SYSTEM_PROCESS大小是固定的,而且你讲述的方法就是我一早使用的,没有用,第一次调用就报0xc0000005错,ReturnLength的值就是初始值
linhf
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-22 21:54
同意Odyssey
游客

返回顶部