首页
社区
课程
招聘
[求助]DDK编译时显示源程序有错误,但我始终找不到,希望大家帮忙找找啊,代码很短,我实在没辙了~~
发表于: 2008-8-24 21:49 6897

[求助]DDK编译时显示源程序有错误,但我始终找不到,希望大家帮忙找找啊,代码很短,我实在没辙了~~

2008-8-24 21:49
6897
出错的这一部分代码:
NTSTATUS WDM_DeviceIOControl(IN PDEVICE_OBJECT pdevobj,IN PIRP pirp)
{
   NTSTATUS status;
   PIO_STACK_LOCATION CurrentStack;
   int ioctl_code,*kernel_inputbuffer,*kernel_outputbuffer;
   DbgPrint("enter WDM_DeviceIOControl");
   CurrentStack=IoGetCurrentIrpStackLocation(pirp);
   ioctl_code=CurrentStack->Parameters.DeviceIoControl.IoControlCode;
   if (ioctl_code==IOCTL_CODE1)         ;显示这一行有错误
   {                                
           kernel_inputbuffer=(int *)pirp->AssociatedIrp.SystemBuffer;
                   kernel_outputbuffer=(int *)MmGetSystemAddressForMdlSafe(pirp->MdlAddress,NormalPagePriority);
           *kernel_outputbuffer=*kernel_inputbuffer;
           *kernel_outputbuffer++;
   }
   pirp->IoStatus.Status=STATUS_SUCCESS;
   pirp->IoStatus.Information=CurrentStack->Parameters.DeviceIoControl.OutputBufferLength;
   IoCompleteRequest(pirp,IO_NO_INCREMENT);
   DbgPrint("leave WDM_DeviceIOControl");
   return status;
}
错误如下:
c_driver.c(46) : error C2143: syntax error : missing ')' before ';'
c_driver.c(46) : error C2059: syntax error : ')'
第46行就是我指出的那一行(一行一行的数了好几遍,确定第46行就是那一行),但我就是没看出来哪儿错了??

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 709
活跃值: (2590)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
2
把  DbgPrint("enter WDM_DeviceIOControl"); 这句注释掉,或者移到下面去

若还不行,查看是否是你的IOCTL_CODE1未定义。
2008-8-24 21:59
0
雪    币: 367
活跃值: (35)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
IOCTL_CODE1 这个宏可能是嵌套的宏

用 if (ioctl_code==(IOCTL_CODE1)) 试试
2008-8-25 09:22
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
IOCTL_CODE1 宏 有问题
2008-8-25 09:42
0
雪    币: 200
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个宏是这样定义的,我放在了一个头文件里的,然后在源文件中包含了头文件:
#define IOCTL_CODE1 CTL_CODE(FILE_DEVICE_UNKNOWN,0xfff,METHOD_IN_DIRECT,FILE_ANY_ACCESS);
没看出来这个宏定义的有什么问题啊???
请大家在帮我一下!!!!!
2008-8-25 10:40
0
雪    币: 200
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好让我郁闷啊,究竟是什么地方错了呢?????
试了你的方法,结果错误就变成这么多了
错误如下:
c_driver.c(47) : error C2143: syntax error : missing ')' before ';'
c_driver.c(47) : error C2143: syntax error : missing ';' before ')'
c_driver.c(47) : error C2059: syntax error : ')'
c_driver.c(54) : error C2143: syntax error : missing '{' before '->'
c_driver.c(54) : error C2059: syntax error : '->'
c_driver.c(55) : error C2143: syntax error : missing '{' before '->'
c_driver.c(55) : error C2059: syntax error : '->'
c_driver.c(56) : error C2059: syntax error : ','
c_driver.c(56) : error C2143: syntax error : missing ')' before 'constant'
c_driver.c(56) : error C2143: syntax error : missing '{' before 'constant'
c_driver.c(56) : error C2059: syntax error : '<Unknown>'
c_driver.c(56) : error C2059: syntax error : ')'
c_driver.c(57) : error C2143: syntax error : missing ')' before 'string'
c_driver.c(57) : error C2143: syntax error : missing '{' before 'string'
c_driver.c(57) : error C2059: syntax error : '<Unknown>'
c_driver.c(57) : error C2059: syntax error : ')'
c_driver.c(58) : error C2059: syntax error : 'return'
c_driver.c(59) : error C2059: syntax error : '}'
2008-8-25 10:49
0
雪    币: 30
活跃值: (1233)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
还是多练习下基本编程,你连错误都不知道,说明你很少编程
2008-8-25 11:51
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
#define IOCTL_CODE1 CTL_CODE(FILE_DEVICE_UNKNOWN,0xfff,METHOD_IN_DIRECT,FILE_ANY_ACCESS);

分号去了
宏是直接替换的
你加了分号
if ( ...;)  肯定报错的
2008-8-25 12:57
0
雪    币: 200
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢8楼的兄弟啊,太感谢了,编译通过了;也谢谢其他人
2008-8-25 13:23
0
雪    币: 359
活跃值: (450)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
10
最好是在写宏时写成:
#define IOCTL_CODE1 (CTL_CODE(FILE_DEVICE_UNKNOWN,0xfff,METHOD_IN_DIRECT,FILE_ANY_ACCESS))

这样引用时会好些,
2008-8-25 13:42
0
雪    币: 296
活跃值: (20)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
IOCTL_CODE1宏定义问题
2008-8-26 22:55
0
游客
登录 | 注册 方可回帖
返回