问个C语言基础知识

ChinaOS 2017-06-07 04:15:02
最近在看WDM的例子Toaster,里面一个基础知识不会,半天没想通,谁给解释一下:

1、看下面定义:
#define TOASTER_POOL_TAG (ULONG) 'saoT'
印象中单引号‘’只能定义字符,例如‘a’ '\n'等等,这一连串的字符被单引号括起来是什么意思?代表字符串常量?其前面为什么用ULONG做转换?代表什么意思?

2、定义DEVICE_OBJECT的扩展部分:
typedef struct _FDO_DATA
{
ULONG Signature;

PDEVICE_OBJECT Self;
...
}FDO_DATA, *PFDO_DATA;
这个Signature怎么用,其实还是问题1

3、下面这个展开是什么:
ToasterDebugPrint(TRACE, "Entered DriverEntry of "_DRIVER_NAME_" version "
"built on " __DATE__" at "__TIME__ "\n");
没找到ToasterDebugPrint、_DRIVER_NAME_等得定义哈。

基础知识大家伙儿莫笑,谢谢!



...全文
82 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaOS 2017-06-07
  • 打赏
  • 举报
回复
引用 6 楼 schlafenhamster 的回复:
littleendian 所以值是倒的
OK,结贴,全部分都给您,真的很感谢!
ChinaOS 2017-06-07
  • 打赏
  • 举报
回复
引用 6 楼 schlafenhamster 的回复:
littleendian 所以值是倒的
哦,明白了,我还疑惑他为什么把顺序故意搞颠倒呢。谢谢!
schlafenhamster 2017-06-07
  • 打赏
  • 举报
回复
littleendian 所以值是倒的
ChinaOS 2017-06-07
  • 打赏
  • 举报
回复
引用 3 楼 schlafenhamster 的回复:
ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入当前源代码行号; __FILE__:在源文件中插入当前源文件名; __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间;
这个我知道,_DRIVER_NAME_是在DDK中定义的吗?
ChinaOS 2017-06-07
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
(ULONG) 'saoT' ULONG 4个字节 内容对于 'saoT' 4个字节
是按照bigendian还是littleendian来计算?
schlafenhamster 2017-06-07
  • 打赏
  • 举报
回复
ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入当前源代码行号; __FILE__:在源文件中插入当前源文件名; __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间;
schlafenhamster 2017-06-07
  • 打赏
  • 举报
回复
即TOASTER_POOL_TAG = ‘Toas’
schlafenhamster 2017-06-07
  • 打赏
  • 举报
回复
(ULONG) 'saoT' ULONG 4个字节 内容对于 'saoT' 4个字节

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧