能力值:
( LV2,RANK:10 )
|
-
-
2 楼
来个前辈解答一下吧,这个要是想不通,难受死了,强迫症哎...
|
能力值:
( LV13,RANK:460 )
|
-
-
3 楼
如楼下大神所言,加上等号就对了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
[QUOTE=shayi;1440332]你的 driver 指针指向的 DRIVER_OBJECT 结构中的最后一个成员 MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1] ,是一个函数指针数组,长度为
IRP_MJ_MAXIMUM_FUNCTION + 1,该数组本质上是一个调用表,由28个函数(分发例...[/QUOTE]
没表达清楚问题 ,数组有1c个函数指针,这个for却只初始化了0-1a,少初始化一个没关系吗
|
能力值:
( LV13,RANK:460 )
|
-
-
5 楼
加上等号是正确的,否则最后一个没有初始化
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
教材BUG
改为 i<=IRP_MJ_MAXIMUM_FUNCTION
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
对嘛,我之前还以为是最后一个指针不用初始化,已经废弃的
|
能力值:
( LV13,RANK:460 )
|
-
-
8 楼
加上等号是正确的,否则最后一个没有初始化
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
上面循环就是这样
int arg[27+1];
for(int i=0,i<27,++i)
{
arg[i]=1;
}
最后一个循环arg[26]=1;自增后i==27跳出循环,数组下标27的成员没有被初始化,改成i<=27就完美了
|
能力值:
( LV9,RANK:610 )
|
-
-
10 楼
#define IRP_MJ_CREATE 0x00 offset:0x38
#define IRP_MJ_CREATE_NAMED_PIPE 0x01 offset:0x3C
#define IRP_MJ_CLOSE 0x02 offset:0x40
#define IRP_MJ_READ 0x03 offset:0x44
#define IRP_MJ_WRITE 0x04 offset:0x48
#define IRP_MJ_QUERY_INFORMATION 0x05 offset:0x4C
#define IRP_MJ_SET_INFORMATION 0x06 offset:0x50
#define IRP_MJ_QUERY_EA 0x07 offset:0x54
#define IRP_MJ_SET_EA 0x08 offset:0x58
#define IRP_MJ_FLUSH_BUFFERS 0x09 offset:0x5C
#define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a offset:0x60
#define IRP_MJ_SET_VOLUME_INFORMATION 0x0b offset:0x64
#define IRP_MJ_DIRECTORY_CONTROL 0x0c offset:0x68
#define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d offset:0x6C
#define IRP_MJ_DEVICE_CONTROL 0x0e offset:0x70
#define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f offset:0x74
#define IRP_MJ_SHUTDOWN 0x10
#define IRP_MJ_LOCK_CONTROL 0x11
#define IRP_MJ_CLEANUP 0x12
#define IRP_MJ_CREATE_MAILSLOT 0x13
#define IRP_MJ_QUERY_SECURITY 0x14
#define IRP_MJ_SET_SECURITY 0x15
#define IRP_MJ_POWER 0x16
#define IRP_MJ_SYSTEM_CONTROL 0x17
#define IRP_MJ_DEVICE_CHANGE 0x18
#define IRP_MJ_QUERY_QUOTA 0x19
#define IRP_MJ_SET_QUOTA 0x1a
#define IRP_MJ_PNP 0x1b
#define IRP_MJ_PNP_POWER IRP_MJ_PNP // Obsolete....
#define IRP_MJ_MAXIMUM_FUNCTION 0x1b
贴点东西,自己看吧,到底索引最大是多少,有多少个成员,一个简单的数组问题还数不明白吗?
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
楼上的大神要疯了 ···
|
能力值:
( LV13,RANK:460 )
|
-
-
12 楼
[QUOTE=zy人生;1440403]上面循环就是这样
int arg[27+1];
for(int i=0,i<27,++i)
{
arg[i]=1;
}
最后一个循环arg[26]=1;自增后i==27跳出循环,数组下标27的成员没有被初始化,改成i<=27就完美了[/QUOTE]
对不起,是我弄错了,0x1b 应该是 27,那么加上等号就是正确的,MajorFunction[0]等于第1个成员,MajorFunction[1b]等于第28个成员,没有越界访问。下次得看仔细点。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
细心是很重要的
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
我的天。。。
|
|
|