为了账号安全,请及时绑定邮箱和手机立即绑定

那DriverExtension->DriverObject=函数地址,这怎么理解?代码如下:

那DriverExtension->DriverObject=函数地址,这怎么理解?代码如下:

慕娘9325324 2022-12-21 17:17:17
typedef struct _DRIVER_EXTENSION {struct _DRIVER_OBJECT *DriverObject;} *PDRIVER_EXTENSION;PDRIVER_EXTENSION DriverExtension;请问DriverExtension是一个什么样的变量?和 *PDRIVER_EXTENSION DriverExtension这样定义有没有区别?还是就没有*PDRIVER_EXTENSION DriverExtension这样定义的啊?谢谢楼下如有朋友的回答,现在我已弄清楚了PDRIVER_EXTENSION DriverExtension;的作用是定义一个DriverExtension的结构体变量。我还有一个问题:我如果想引用代码中的struct _DRIVER_OBJECT *DriverObject;(补充:DriverObject和DriverExtension一样,也是个结构体变量)。//------------------------补充代码-------------------------struct _DRIVER_OBJECT{struct _DRIVER_EXTENSION *pDriverExtension;} ;//-------------------------------------------------
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

PDRIVER_EXTENSION 相当于struct _DRIVER_EXTENSION * ,
PDRIVER_EXTENSION DriverExtension;等同于
struct _DRIVER_EXTENSION * DriverExtension;
所以DriverExtension是一个指向struct _DRIVER_EXTENSION 结构体的结构体指针变量。typedef 相当于声明了一个新类型,用它就可以声明新的变量。注意typedef 与define的区别,特别是指针方面。
*PDRIVER_EXTENSION DriverExtension这种应该没有。

查看完整回答
反对 回复 2022-12-25
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

简化之
typedef struct st{ int i; }*pst;
pst a, b; 等于 struct st * a; struct st * b; b依然是结构指针!
还可以定义 pst * c; 等于struct st ** c;
但无 *pst c; 写法

区别于
#define pst struct st{ int i; }*
pst a, b; 等于 struct st *a; struct st b; b是结构变量,不再是结构指针了!

结论:#define只进行简单的替换,typedef则不然!

查看完整回答
反对 回复 2022-12-25
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

typedef struct _DRIVER_EXTENSION 
{
struct _DRIVER_OBJECT *DriverObject;
} *PDRIVER_EXTENSION;
上面这样做之后
PDRIVER_EXTENSION相当于是struct _DRIVER_EXTENSION *
定义指针的时候直接写PDRIVER_EXTENSION DriverExtension
相当于是struct _DRIVER_EXTENSION * DriverExtension
所以DriverExtension是指针

查看完整回答
反对 回复 2022-12-25
  • 3 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号