几个错误(更新完毕)~
这篇书评可能有关键情节透露
1.P100 第一行的“The arrtribute list contstains a...” constains拼写错误 应该是contains
2.P102 第一行有个参数dwCreationFlags,就是之前说的fdwCreate,dwCreationFlags是MS的官方说法
3.P122 "Second,as..."这一段的第三行:you need call NtQueryInformationProcess with ProcessBasicInformation as the parameter",在the与parameter之间少了一个second。不过翻译版本已经更正了
4.P161 定义chBEGINTHREADEX宏的时候,前面的参数cbStack,后面变成了cbStackSize,应该一致的
5.P165 这里SEH frame中文版本翻译成"SEH帧",个人觉得还是翻译成SEH结构比较好,搞不明白帧是什么意思
6.P206 这一页的配图没有翻译版本的好,有关Vista下的多处理器配置对话框以中文版本的为佳
7.P245 示例代码(有关WaitForMultipleObjects的使用)里面HANDLE[3]定义少了"[“,翻译版本已经修正。
8.P277 有关信号量的成功引起的副作用(Successful Wait Side Effect)解释应该是计数减一,而不是15.翻译版本已经修正
9.P307 中文版本是P293 中文版本对于OVERLAPPED结构的hEvent成员的有个括号注释说是I/O完成端口会用到这一成员,实际上只有根据后面的内容是第二个方法(标记事件对象),英文版本没有这个括号注释
10.P307 第一行Offset and OffsetHigh members are not ignored...这里没有那个not,一看后面的内容就知道了,这个错误翻译版本已经修正
11.P328 中文版本是P314 紧接着note的第一段里有说到调用Sleep,WaitForXX,SignalObjectAndWait,显然这些是同步函数,这里中文版本增加了一个“异步调用”,个人以为是同步调用,英文版本这里没有问题
12.P451 第三段“When you build...”这一段的末尾作者指出后面的讨论是基于线程栈的默认分配:即预定1MB大小和一次一个页面。这里的一次一个页面无法理解,根据作者本人其他地方的讨论和MS的资料,一般是自顶向下的调拨两个页面:栈顶与带保护属性标志的已调拨的页面(即防护页面)。一次一个页面有些歧义,书里面也没讨论到怎么个一次一个页面。我觉得应该是直接调拨两个页面,调拨页面由于保护属性的不同肯定调动有先后顺序,从这个角度可以理解。中文版本也是直译的。
13 P521 对应的翻译版本有个错误,“Now let's...”这一段的意思是在共同使用堆的情况下,由于链表代码的缺陷导致后来的二叉树代码运行出错,以至于我们以为是二叉树的代码错了。翻译版本里面写成的“使我们觉得链表代码有缺陷”,应该是“使我们觉得二叉树代码有缺陷”。
14 P633 Debugger注入一节,翻译版本把第二段"Also,the relationship between a debugger and its debuggee is solid."忘记翻译了*_*
15 P634 API HOOKING:An Example这一节第二段最后一句话翻译版本翻译的比较好,把这句话最后一个单词uninitialized翻译成清理完毕,个人觉得应该是原文笔误,应该用cleaned up.uninitialized只有未初始化的意思,而没有清理完毕的含义,uninitialized的使用也不是不对、只是很别扭,从下文可以看出这个翻译也有一定道理,不过我赞成在这边翻译版本的翻译
16 P715 Tip里面的倒数第四行一句"you should leave Auto set to 0"翻译版本认为应该是1,不过从上下文来看原文是对的。因为设置成1的话所有程序都会自动启动调试,而这里我们只需要对特定的程序做调试,应该把Auto设置成0
2.P102 第一行有个参数dwCreationFlags,就是之前说的fdwCreate,dwCreationFlags是MS的官方说法
3.P122 "Second,as..."这一段的第三行:you need call NtQueryInformationProcess with ProcessBasicInformation as the parameter",在the与parameter之间少了一个second。不过翻译版本已经更正了
4.P161 定义chBEGINTHREADEX宏的时候,前面的参数cbStack,后面变成了cbStackSize,应该一致的
5.P165 这里SEH frame中文版本翻译成"SEH帧",个人觉得还是翻译成SEH结构比较好,搞不明白帧是什么意思
6.P206 这一页的配图没有翻译版本的好,有关Vista下的多处理器配置对话框以中文版本的为佳
7.P245 示例代码(有关WaitForMultipleObjects的使用)里面HANDLE[3]定义少了"[“,翻译版本已经修正。
8.P277 有关信号量的成功引起的副作用(Successful Wait Side Effect)解释应该是计数减一,而不是15.翻译版本已经修正
9.P307 中文版本是P293 中文版本对于OVERLAPPED结构的hEvent成员的有个括号注释说是I/O完成端口会用到这一成员,实际上只有根据后面的内容是第二个方法(标记事件对象),英文版本没有这个括号注释
10.P307 第一行Offset and OffsetHigh members are not ignored...这里没有那个not,一看后面的内容就知道了,这个错误翻译版本已经修正
11.P328 中文版本是P314 紧接着note的第一段里有说到调用Sleep,WaitForXX,SignalObjectAndWait,显然这些是同步函数,这里中文版本增加了一个“异步调用”,个人以为是同步调用,英文版本这里没有问题
12.P451 第三段“When you build...”这一段的末尾作者指出后面的讨论是基于线程栈的默认分配:即预定1MB大小和一次一个页面。这里的一次一个页面无法理解,根据作者本人其他地方的讨论和MS的资料,一般是自顶向下的调拨两个页面:栈顶与带保护属性标志的已调拨的页面(即防护页面)。一次一个页面有些歧义,书里面也没讨论到怎么个一次一个页面。我觉得应该是直接调拨两个页面,调拨页面由于保护属性的不同肯定调动有先后顺序,从这个角度可以理解。中文版本也是直译的。
13 P521 对应的翻译版本有个错误,“Now let's...”这一段的意思是在共同使用堆的情况下,由于链表代码的缺陷导致后来的二叉树代码运行出错,以至于我们以为是二叉树的代码错了。翻译版本里面写成的“使我们觉得链表代码有缺陷”,应该是“使我们觉得二叉树代码有缺陷”。
14 P633 Debugger注入一节,翻译版本把第二段"Also,the relationship between a debugger and its debuggee is solid."忘记翻译了*_*
15 P634 API HOOKING:An Example这一节第二段最后一句话翻译版本翻译的比较好,把这句话最后一个单词uninitialized翻译成清理完毕,个人觉得应该是原文笔误,应该用cleaned up.uninitialized只有未初始化的意思,而没有清理完毕的含义,uninitialized的使用也不是不对、只是很别扭,从下文可以看出这个翻译也有一定道理,不过我赞成在这边翻译版本的翻译
16 P715 Tip里面的倒数第四行一句"you should leave Auto set to 0"翻译版本认为应该是1,不过从上下文来看原文是对的。因为设置成1的话所有程序都会自动启动调试,而这里我们只需要对特定的程序做调试,应该把Auto设置成0