geroge
驱动牛犊
驱动牛犊
  • 注册日期2002-12-13
  • 最后登录2003-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:986回复:6

求教NDIS函数定义问题

楼主#
更多 发布于:2003-04-16 22:42
本人初学,问一个很菜但一直困扰我的问题,就拿入口函数来说
DDK原型如下:
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);
请问:这个“IN”是什么用法,还有类似的“OUT”和“OPTION”,我查了NDIS.H文件,对此只是做了如下说明:
#ifndef IN
#define IN
#endif

是编译说明专用的吗?但我还没有这样用过,请教!谢谢!

zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-17 10:29
是说明用的,解释入口参数类型 :D,本身无意义
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-17 18:44
本人初学,问一个很菜但一直困扰我的问题,就拿入口函数来说
DDK原型如下:
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);
请问:这个“IN”是什么用法,还有类似的“OUT”和“OPTION”,我查了NDIS.H文件,对此只是做了如下说明:
#ifndef IN
#define IN
#endif

是编译说明专用的吗?但我还没有这样用过,请教!谢谢!
 


IN 说明参数是输入类型,OUT 说明参数是输出类型,OPTION 说明该参数为可选项
只是让你看的清楚一点,免得用错
早起早睡 精神百倍
geroge
驱动牛犊
驱动牛犊
  • 注册日期2002-12-13
  • 最后登录2003-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-18 11:15
谢谢两位高手指点先,虽然这个“IN”起到说明的功能我猜到了。
但我的问题是:
定义标示符的用法,我察看了#define的语法说明,好像没有单独定义标示符这样的用法啊,#define定义如下
#define <宏名>  <字符串>
比如:#define PI 3.1415926 //用PI这个宏名来替换3.1415926

但只有宏名,没有被替换的对象这种用法可以吗?为什么很多C语言书籍并没有介绍这种定义说明标示的用法?而仅仅介绍宏替换的用法?

另外在函数里面的参数引用时,可以单独用宏名对参数进行说明吗?我查C语言书里并没有介绍这一块,如果查书,查哪里?谢谢!

给分怎么给?
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-18 13:23
定义标示符的用法,我察看了#define的语法说明,好像没有单独定义标示符这样的用法啊,#define定义如下
#define <宏名>  <字符串>
比如:#define PI 3.1415926 //用PI这个宏名来替换3.1415926

但只有宏名,没有被替换的对象这种用法可以吗?为什么很多C语言书籍并没有介绍这种定义说明标示的用法?而仅仅介绍宏替换的用法?


呵呵,兄弟,建议你多看看条件编译,每个头文件不都是以下形式吗

#ifndef ×××
#define ×××
。。。。。。。
#endif

具体到你的问题是一样的道理,这里宏只是定义这个符号名而已,不用给他赋值

另外在函数里面的参数引用时,可以单独用宏名对参数进行说明吗?我查C语言书里并没有介绍这一块,如果查书,查哪里?谢谢!


呵呵,就因为它只是一个宏名,而且实际上是一个被你定义为null的宏,那么编译器在编译时将会用null代替你的宏,所以它不影响你的程序运行,只是让你看看罢了,跟注释性质差不多,呵呵
早起早睡 精神百倍
geroge
驱动牛犊
驱动牛犊
  • 注册日期2002-12-13
  • 最后登录2003-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-18 13:36
明白了,真是一点不通,什么都不通,原来是偶的编译知识太差,回去补课!
分给你给少了,但我现在也不知如何给你加分了,有机会补吧!

(可能这个问题您看起来很简单,可我不懂的就是象面对一座山啊,再次感谢帮我搬了一座山!)
mailme
驱动老牛
驱动老牛
  • 注册日期2001-05-21
  • 最后登录2010-02-25
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-04-18 13:46
上面我所说的有些是我自己的理解,如果错了,请各位大侠指出,呵呵

其实关于编译原理我也不懂,可能多看点“名著”或者代码帮助比较大

[编辑 -  4/18/03 by  mailme]
早起早睡 精神百倍
游客

返回顶部