wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1721回复:6

Chris Cant 的wdm1例子,将.cpp改成.c文件,为什么就不能编译通过?

楼主#
更多 发布于:2004-03-01 16:03
我作了如下修改:
1。将所以的.cpp改成.c文件
2。修改sources文件
3。去掉extern“c“

然后编译,出现如下类型的错误:
主要时在wdm.h中定义的变量非法
如:
dispatch.c(107) : error C2275: 'KIRQL' : illegal use of this type as an expression
pnp.c(42) : error C2275: 'NTSTATUS' : illegal use of this type as an expression
pnp.c(111) : error C2275: 'PIO_STACK_LOCATION' : illegal use of this type as an expression
等等

最新喜欢:

bakerjbakerj
webstartlove
驱动牛犊
驱动牛犊
  • 注册日期2002-07-01
  • 最后登录2004-04-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-01 22:09
请问兄台为何要如此做呢?
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-02 09:41
不瞒您说,我自己做了一个helloWDM程序,编译总出现这些非法类型表示,与我在帖子中所贴出来的类相似,后来改成.cpp,就好了。
但现在,我在做ndis与应用程序通讯,又出现这样的错误。我实在没法解决。
所以就采用这个经典的wdm1,作了修改,然后提问。

我把代码贴上了,大家帮我试试。
我确实想知道如何解决这个问题。
谢谢
附件名称/大小 下载次数 最后更新
2004-03-02_wdm1.rar (61KB)  7
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
地板#
发布于:2004-03-02 11:06
不瞒您说,我自己做了一个helloWDM程序,编译总出现这些非法类型表示,与我在帖子中所贴出来的类相似,后来改成.cpp,就好了。
但现在,我在做ndis与应用程序通讯,又出现这样的错误。我实在没法解决。
所以就采用这个经典的wdm1,作了修改,然后提问。

我把代码贴上了,大家帮我试试。
我确实想知道如何解决这个问题。
谢谢
 


问题出在,在代码中用了C++的一个特性:在代码“中间”定义变量,C中是不允许的。例如:
----------
DebugPrint("Read %d bytes from file pointer %d",(int)ReadLen,(int)FilePointer);

// Get access to the shared buffer
KIRQL irql;  
KeAcquireSpinLock(&BufferLock,&irql);
----------
这一句:
KIRQL irql;
是在DebugPrint语句之后,C++中没有问题,但C中不允许。C中的变量定义必须在函数的开始处(前面不能有其他语句)。所以,你将扩展名改成.C后,就会出错。

八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
wengyu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2006-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-02 14:19
啊哈,一句惊醒了梦中人。
seaquester老兄果然厉害,小弟编译通过了。
谢谢
马上放分
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2004-03-02 15:07
不知道,这是C的缺点,还是C++的优点??
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
6楼#
发布于:2004-03-02 16:44
不知道,这是C的缺点,还是C++的优点??


应当算是C++的优点吧?
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
游客

返回顶部