taianmonkey
驱动牛犊
驱动牛犊
  • 注册日期2006-03-23
  • 最后登录2014-08-18
  • 粉丝0
  • 关注0
  • 积分163分
  • 威望602点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:5111回复:8

这种提示如何处理:error C2275: 'PVOID' : illegal use of this type as an expression

楼主#
更多 发布于:2010-02-21 10:54
一个驱动的项目中,
编译出现如下提示:
1>1>main.c(49) : error C2275: 'PVOID' : illegal use of this type as an expression
1>1>main.c(49) : error C2146: syntax error : missing ';' before identifier 'pBuf'
1>1>main.c(49) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
1>1>main.c(49) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
1>1>main.c(49) : error C2143: syntax error : missing ';' before 'identifier'
1>1>main.c(49) : error C2065: 'pBuf' : undeclared identifier
1>1>main.c(50) : error C2275: 'ULONG' : illegal use of this type as an expression
1>1>main.c(50) : error C2146: syntax error : missing ';' before identifier 'uAddr'
1>1>main.c(50) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
1>1>main.c(50) : error C2144: syntax error : '<Unknown>' should be preceded by '<Unknown>'
1>1>main.c(50) : error C2143: syntax error : missing ';' before 'identifier'
1>1>main.c(50) : error C2065: 'uAddr' : undeclared identifier
1>1>main.c(193) : error C4047: '=' : 'int' differs in levels of indirection from 'UCHAR *'
1>1>main.c(194) : error C4047: '==' : 'void *' differs in levels of indirection from 'int'
1>1>main.c(196) : error C2109: subscript requires array or pointer type
1>1>main.c(196) : error C4022: 'memmove' : pointer mismatch for actual parameter 2
1>1>main.c(196) : error C2198: 'memmove' : too few arguments for call through pointer-to-function

请问大侠如何处理?谢谢!
taianmonkey
驱动牛犊
驱动牛犊
  • 注册日期2006-03-23
  • 最后登录2014-08-18
  • 粉丝0
  • 关注0
  • 积分163分
  • 威望602点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-02-21 10:57
其实我就添加了这两句:
    PVOID       pBuf;
    ULONG               uAddr;
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
板凳#
发布于:2010-02-21 10:58
这个是宏,不是内置类型,你需要先定义或者包含有定义的头
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
taianmonkey
驱动牛犊
驱动牛犊
  • 注册日期2006-03-23
  • 最后登录2014-08-18
  • 粉丝0
  • 关注0
  • 积分163分
  • 威望602点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-02-21 11:02
解决了,呵呵

    case CTL_CODE_LSR_SET_SHARE_BUF:
        {
            UCHAR *       pBuf;
            ULONG         uAddr;
            pBuf = (UCHAR *)InputBuffer;
            if ( NULL == pBuf ) break;

            memmove( &uAddr , &pBuf[4] , 4 );
            g_szShareBuf = (char *)MmMapIoSpace(MmGetPhysicalAddress((void*)uAddr),256,0);
        }

原来是这样写的:

            UCHAR *       pBuf;
            ULONG         uAddr;
........

    case CTL_CODE_LSR_SET_SHARE_BUF:
        {
            pBuf = (UCHAR *)InputBuffer;
            if ( NULL == pBuf ) break;

            memmove( &uAddr , &pBuf[4] , 4 );
            g_szShareBuf = (char *)MmMapIoSpace(MmGetPhysicalAddress((void*)uAddr),256,0);
        }

按道理说,下面的写法应该没有问题呀!
taianmonkey
驱动牛犊
驱动牛犊
  • 注册日期2006-03-23
  • 最后登录2014-08-18
  • 粉丝0
  • 关注0
  • 积分163分
  • 威望602点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2010-02-21 11:04
我已经包含了所需的头文件了!
taianmonkey
驱动牛犊
驱动牛犊
  • 注册日期2006-03-23
  • 最后登录2014-08-18
  • 粉丝0
  • 关注0
  • 积分163分
  • 威望602点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2010-02-21 11:04
#include <stdio.h>
#include <stdarg.h>
#include <ntimage.h>
#include <ntiologc.h>
JackyHe
驱动牛犊
驱动牛犊
  • 注册日期2009-07-16
  • 最后登录2010-06-22
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-02-21 19:58
C语言中变量定义作用域的问题,你的第一次定义的变量:
      UCHAR *       pBuf;
            ULONG         uAddr;
在后来的使用中不可见,所以出现错误
wanghui219
禁止发言
禁止发言
  • 注册日期2007-08-28
  • 最后登录2019-07-29
  • 粉丝4
  • 关注3
  • 积分101166分
  • 威望505351点
  • 贡献值0点
  • 好评度137点
  • 原创分0分
  • 专家分4分
  • 社区居民
8楼#
发布于:2010-05-04 10:42
用户被禁言,该主题自动屏蔽!
游客

返回顶部