摘要: 在msdn中关于GetOverlappedResult的描述如下:GetOverlappedResult FunctionRetrieves the results of an overlapped operation on the specified file, named pipe, or communications device.BOOL WINAPI GetOverlappedResul... 阅读全文
posted @ 2009-06-30 20:24 gussing 阅读(15795) 评论(1) 推荐(2) 编辑
摘要: 当你写下new和delete的时候,到底发生了什么事呢,让我们来做个试验看看。写一段小代码:class a{public: a() { foo(); } int foo() { return 0; } ~a() { bar(); } int bar() { return 1; }};int _tmain(int argc, _TCHAR* argv[]){ a* tmp = new a()... 阅读全文
posted @ 2009-06-25 19:19 gussing 阅读(5286) 评论(3) 推荐(0) 编辑
摘要: 小弟正在写一个基于命令行的播放器,开源,代码在google code上: 基本的播放功能和简单的列表管理已经完成了。 浏览的话随便谁都可以, 如果想参与开发,帮助小弟把东西做完善,那就留个言。 期待牛人的加入。 阅读全文
posted @ 2009-06-10 16:45 gussing 阅读(3532) 评论(27) 推荐(0) 编辑
摘要: 最近在看《软件调试》这本书,为了加深理解,就到google code里搜了一个叫opendbg的开源debugger看看代码。这个项目的最后更新日期是08年8月,似乎又烂尾了,这种烂尾开源项目真是数不胜数,不过幸好opendbg的整体架构已经搭出来了。让我们直接进ring0,看作为一个debugger需要在内核里做什么事情要进ring0,一定要写driver,driver的入口多半是DriverE... 阅读全文
posted @ 2009-05-28 23:45 gussing 阅读(1336) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2009-03-12 21:35 gussing 阅读(988) 评论(0) 推荐(0) 编辑
摘要: 原文在这里 预定义宏 许多Object-like宏是预定义的,你在使用它们的时候不必关心它们的定义。它们大致可被分为3类:标准,普通,系统相关。 在c++里,有第四类宏,它就是命名操作符。它们使用起来就和预定义宏一样,但你不能undefine它们。 标准预定义宏 普通预定义宏 系统相关预定义宏 c++命名操作符 标准预定义宏 标准预定义宏由相关的语言标准定义,所以它们在所有(支持标准)的编... 阅读全文
posted @ 2008-12-02 20:08 gussing 阅读(962) 评论(0) 推荐(0) 编辑
摘要: 原文在这里 可变参数宏 宏可以接收可变参数列表,就跟函数一样。定义可变参数的语法和函数也差不多。这里有一个例子: #define eprintf(...) fprintf (stderr, __VA_ARGS__) 这类宏被称为可变参数宏。当一个宏被调用时,第一个命名参数之后的所有符号,包括逗号在内,都变成参数列表。这个符号序列在宏展开时会替换宏内容里的__VA_ARGS__ 符号。因... 阅读全文
posted @ 2008-11-27 20:25 gussing 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 原文在这里 连接 在宏展开过程中把两个符号连接在一起的特性往往会很有用。我们管这种特性叫符号粘贴或者符号连接。"##" 就是用于符号连接的预处理操作符。当一个宏展开后, "##" 两边的符号就会被组合成一个,然后该组合后的符号会替换"##"两边的符号以及"##"本身。通常情况下"##"两边的符号都会是标识符,或者一边是标识符,一边是预处理号。粘贴之后,一个更长的标识符就被生成了。这不是唯一有效的情... 阅读全文
posted @ 2008-11-20 19:27 gussing 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 原文在这里 字符化 有的时候,你也会想把一个宏参数直接转化成一个字符常量。你想要在某个字符串中插入宏参数,期待它会简单的被替换成字符常量,想法不错,但不可能。不过你可以用"#"预处理操作符。当一个宏参数前置"#"时,预处理器就会把宏参数符号替换成跟宏参数符号相同的字符常量。与常规参数替换不同的是,该类转化不叫宏展开,而叫"字符化"。 把一个宏参数混在字符串内部,然后字符化它,这种操作是不可能成功的... 阅读全文
posted @ 2008-10-25 00:04 gussing 阅读(916) 评论(0) 推荐(0) 编辑
摘要: 假设硬件ID为 USB\VID_aaaa&PID_bbbb\PRODUCTNAME 系统会在注册表HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum 下为每个字段生成一个目录,比如ID中的第一个字段为USB,那么Enum下会生成USB子目录,第二个字段为VID_aaaa&PID_bbbb,则在USB目录下生成VID_aaaa&PID_bbb... 阅读全文
posted @ 2008-10-24 23:06 gussing 阅读(12590) 评论(0) 推荐(0) 编辑