解释一下驱动头文件

shimin6523   2009-2-25 14:08 楼主
#pragma once

#ifdef __cplusplus
extern "C"
{
#endif
#include
#ifdef __cplusplus
}
#endif

#define PAGEDCODE code_seg("PAGE")
#define LOCKEDCODE code_seg()
#define INITCODE code_seg("INIT")

#define PAGEDDATA data_seg("PAGE")
#define LOCKEDDATA data_seg()
#define INITDATA data_seg("INIT")

#define arraysize(p) (sizeof(p)/sizeof((p)[0]))

typedef struct _DEVICE_EXTENSION {
PDEVICE_OBJECT pDevice;
UNICODE_STRING ustrDeviceName; UNICODE_STRING ustrSymLinkName;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;


NTSTATUS CreateDevice (IN PDRIVER_OBJECT pDriverObject);
VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject);
NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj,
IN PIRP pIrp);
请帮忙详细解释以上代码,例如code_seg(),data_seg()等函数含义,为何在c++中没见过,VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject)其中的IN PDRIVER_OBJECT 又是什么意思,使用到了什么语法结构?其中的PAGE,INIT又是什么意思?sizeof((p)[0])中的(p)为何要加括号?
小弟新学,见笑了。

回复评论 (2)

提示: 作者被禁止或删除 内容自动屏蔽
点赞  2009-2-27 16:22
至于sizeof((p)[0])中的(p)为何要加括号?
应当是考虑代码的“上下文”的原因吧?
在这里p是变量的名字,p[0]自然是第一个元素的大小了。

比如
[code]

在使用

[code]

时 ,会得到错误的结果!
点赞  2009-2-27 16:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复