#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)为何要加括号?
小弟新学,见笑了。
至于sizeof((p)[0])中的(p)为何要加括号?
应当是考虑代码的“上下文”的原因吧?
在这里p是变量的名字,p[0]自然是第一个元素的大小了。
比如
[code]
在使用
[code]
时 ,会得到错误的结果!