| 版次 |
位置 |
原文 |
应更正为 |
日期 |
读者 |
| 第1版第1次印刷 |
第32页第1段第1行 |
AP |
API |
2008/9/29 |
czwslc3 |
| 第1版第1次印刷 |
第715页第10行 |
#pragm chMsg(Fix this later) |
#pragma chMsg(Fix this later) |
2008/10/13 |
sina_666 |
| 第1版第1次印刷 |
第77页第11行 |
Advanced System Settins |
Advanced System Settings |
2008/10/16 |
sina_666 |
| 第1版第1次印刷 |
第256页表9-2第9行 |
TryEnterCriticalSection(&cs); |
WaitForSingleObject(hmtx, dwMilliseconds); |
2008/10/26 |
georg.ji |
| 第1版第1次印刷 |
第258页第2段第1行 |
它指向一个INNER_ELEMENT结构的数组 |
它指向一个ELEMENT结构的数组 |
2008/10/27 |
georg.ji |
| 第1版第1次印刷 |
第275页第2段第3行 |
当线程发出一个异步设备I/O请求的时候 |
当线程发出一个同步设备I/O请求的时候 |
2008/10/27 |
georg.ji |
| 第1版第1次印刷 |
第294页第4段第2行 |
大多数Windows函数返回TRUE来表示失败 |
大多数Windows函数返回FALSE来表示失败 |
2008/11/5 |
sina_666 |
| 第1版第1,2次印刷 |
第66页第2段第5行 |
它们一般不会创建窗口或进程消息 |
它们一般不会创建窗口或处理消息 |
2008/12/6 |
clement |
| 第1版第1,2次印刷 |
第279页第2行表10-4标题 |
表10-4 GetFileType函数返回值 |
表10-4 可以传给CreateFile的dwDesiredAccess参数的通用标志 |
2008/12/21 |
fovov |
| 第1版第1,2次印刷 |
第301页第1段第2行 |
Microsft对开发人员吹捧说 |
Microsft对开发人员吹嘘说 |
2008/12/22 |
fovov |
| 第1版第1,2次印刷 |
第105页第1段第1行 |
如果希望创建一个新线程 |
如果希望创建一个新进程 |
2008/12/23 |
wocow3 |
| 第1版第1,2次印刷 |
第146页第2段第3行 |
要么由cbStack Size的值来指定 |
要么由cbStackSize的值来指定 |
2008/12/24 |
wocow3 |
| 第1版第1,2次印刷 |
第146页第2段第4行 |
调拨的存储器大小与传递的csStack Size参数值匹配 |
调拨的存储器大小与传递的cbStackSize参数值匹配 |
2008/12/24 |
wocow3 |
| 第1版第1,2次印刷 |
第146页第2段第5行 |
如果为cbStack Size参数传入0值 |
如果为cbStackSize参数传入0值 |
2008/12/24 |
wocow3 |
| 第1版第1,2次印刷 |
第34页第1段第3行 |
它们会根据该句柄在我们的进程句柄表的索引来引用,另一个进程中的完全不同的内核对象 |
它们会根据该句柄在我们的进程句柄表中的索引,来引用另一个进程中的完全不同的内核对象 |
2009/1/5 |
pchild |
| 第1版第1,2次印刷 |
第34页第4段第2行 |
哪些用户和用户被允许访问或使用此对象 |
哪些组和用户被允许访问或使用此对象 |
2009/1/5 |
pchild |
| 第1版第1,2次印刷 |
第37页第3段第1行 |
下面列出了一些用创建内核对象的函数 |
下面列出了一些用来创建内核对象的函数 |
2009/1/5 |
pchild |
| 第1版第1,2次印刷 |
第666页第4段第7行 |
这里有一个一个无穷递归调用 |
这里有一个无穷递归调用 |
2009/1/6 |
zerothree |
| 第1版第1,2次印刷 |
第202页第2段和第3段之间 |
PVOID IntelockedCompareExchange |
LONG IntelockedCompareExchange |
2009/1/7 |
wocow3 |
| 第1版第1,2次印刷 |
第20页第4段第1行 |
将字符串"1234567890"复制到szBuffer |
将字符串"0123456789"复制到szBuffer |
2009/1/31 |
fovov |
| 第1版第1,2,3次印刷 |
第66页第2段第2行 |
GUI程序一个图形化的前端。 |
GUI程序是一个图形化的前端。 |
2009/2/28 |
KappaPanda |
| 第1版第1,2,3次印刷 |
第237页第3段第3行 |
...这个函数的第一个和第三个参数了 |
...这个函数的第一个和最后一个参数了 |
2009/2/28 |
wocow3 |
| 第1版第1,2,3次印刷 |
第59页第2段第4行 |
...复制hTarget ProcessHandle所标识进程的句柄表中 |
...复制hTargetProcessHandle所标识进程的句柄表中 |
2009/3/1 |
KappaPanda |
| 第1版第1,2,3次印刷 |
第59页第2段第5行 |
用来接收复制得到的HANDLE值 |
用来接收复制得到的HANDLE值 |
2009/3/1 |
|
| 第1版第1,2,3次印刷 |
第187页倒数第1段第3行 |
运行在后台优先级的线程可以在获得I/O请求的结果之前... |
运行在后台优先级的线程可以在获得I/O请求的结果之前... |
2009/3/10 |
leolee82 |
| 第1版第1,2,3次印刷 |
第187页倒数第1段第4行 |
...则normal优先级线程可以在低优先级I/O请求完成之前运行,不等待后台优先级线程。 |
...则normal优先级线程可能必须等待后台优先级线程,直到低优先级I/O请求完成为止。 |
2009/3/10 |
leolee82 |
| 第1版第1,2,3次印刷 |
第187页倒数第1段第5行 |
后台优先级线程甚至不再进行I/O,以免出现问题。 |
后台优先级线程甚至不必发出I/O请求,都可能会出现这种问题。 |
2009/3/10 |
leolee82 |
| 第1版第1,2,3次印刷 |
第187页倒数第1段第7行 |
...以避免normal-优先级线程因为后台优先级线程拥有的锁而被阻塞 |
...以避免normal优先级线程因为后台优先级线程拥有的锁而被阻塞 |
2009/3/10 |
leolee82 |
| 第1版第1,2,3次印刷 |
第722页第1行 |
/* Severity code */ (Severity ) | \ |
/* Severity code */ (Severity << 30) | \ |
2009/3/19 |
zhh |
| 第1版第1,2,3次印刷 |
第27页第3段 |
(1) 调用MultiByteToWideChar,为pWideCharStr参数传入NULL,为cchWideChar参数传入0,为cbMultiByte参数传入-1。 |
(1) 调用MultiByteToWideChar,为pWideCharStr参数传入NULL,为cchWideChar参数传入0,为cbMultiByte参数传入-1。 |
2009/5/1 |
|
| 第1版第1,2,3次印刷 |
第27页第4段 |
(2) 分配一块足以容纳转换后的Unicode字符串的内存。它的大小是上一个MultiByteToWideChar调用的返回值乘以sizeof(wchar_t)。 |
(2) 分配一块足以容纳转换后的Unicode字符串的内存。它的大小是上一个MultiByteToWideChar调用的返回值乘以sizeof(wchar_t)。 |
2009/5/1 |
|
| 第1版第1,2,3次印刷 |
第27页第5段 |
(3) 再次调用MultiByteToWideChar,这一次将缓冲区地址作为pWideCharStr参数的值传入,将第一次MultiByteToWideChar调用的返回值乘以sizeof(wchar_t)后得到的大小作为cchWideChar参数的值传入。 |
(3) 再次调用MultiByteToWideChar,这一次将缓冲区地址作为pWideCharStr参数的值传入,将第一次MultiByteToWideChar调用的返回值乘以sizeof(wchar_t)后得到的大小作为cchWideChar参数的值传入。 |
2009/5/1 |
bobo |
| 第1版第1,2,3次印刷 |
第27页第8段 |
对应地,WideCharToMultiByte函数将宽字符字符串转换为多字节字符串,如下所示: |
对应地,WideCharToMultiByte函数将宽字符字符串转换为多字节字符串,如下所示: |
2009/5/1 |
|
| 第1版第1,2,3次印刷 |
第79页第5行 |
PTCSTR pszSrc pszSrc |
PCTSTR pszSrc pszSrc |
2009/5/1 |
bobo |
| 第1版第1,2,3次印刷 |
第83页表4-4第5行 |
VER_PLATFORM_ WIN32_NT |
VER_PLATFORM_WIN32_NT |
2009/5/1 |
bobo |
| 第1版第1,2,3次印刷 |
第128页第4段第1行 |
其余两个成员ProcessMemoryLimit和JobMemoryLimit分别限制着... |
其余两个成员ProcessMemoryLimit和JobMemoryLimit分别限制着... |
2009/5/3 |
bobo |
| 第1版第1,2,3次印刷 |
第194页第3,4段之间 |
DWORD_PTR dw Thread AffinityMask); |
DWORD_PTR dwThreadAffinityMask); |
2009/5/6 |
bobo |
| 第1版第1,2,3次印刷 |
第196页图 |
 |
 |
2009/5/6 |
bobo |
| 第1版第1,2,3次印刷 |
第202页第3段第3行 |
但在64位应用程序中,InterlockedCompareExchange对32位值进行操作而InterlockedCompareExchangePointer对64位值进行操作。 |
但在64位应用程序中,InterlockedCompareExchange对32位值进行操作,而InterlockedCompareExchangePointer对64位值进行操作。 |
2009/5/6 |
bobo |
| 第1版第1,2,3次印刷 |
第206页第2段第1行 |
那就是布尔变量g_fFinishedCalculation可能永远不会被设为TRUE。 |
那就是BOOL变量g_fFinishedCalculation可能永远不会被设为TRUE。 |
2009/5/6 |
bobo |
| 第1版第1,2,3次印刷 |
第206页第5段第3行 |
编译器把布尔变量的值载入到CPU寄存器中 |
编译器把BOOL变量的值载入到CPU寄存器中 |
2009/5/6 |
bobo |
| 第1版第1,2,3次印刷 |
第227页第5段第2行 |
我们不应该为所有的逻辑资源都创建单独的锁 |
我们不应该为所有的逻辑资源都创建一个单独的锁 |
2009/5/6 |
bobo |
| 第1版第1,2,3次印刷 |
第268页第3,4段之间 |
// Perform some work. ... SetEvent(hEventWorkerThreadDone);
WaitForSingleObject(hEventMoreWorkToBeDone, INFINITE);
// Do more work. ...
|
// Perform some work.
...
SetEvent(hEventWorkerThreadDone);
WaitForSingleObject(hEventMoreWorkToBeDone, INFINITE);
// Do more work.
...
|
2009/5/10 |
bobo |
| 第1版第1,2,3次印刷 |
第268页第3,4段之间 |
// Perform some work. ... SignalObjectAndWait(hEventWorkerThreadDone,
hEventMoreWorkToBeDone, INFINITE, FALSE);
// Do more work. ...
|
// Perform some work.
...
SignalObjectAndWait(hEventWorkerThreadDone,
hEventMoreWorkToBeDone, INFINITE, FALSE);
// Do more work.
...
|
2009/5/10 |
bobo |
| 第1版第1,2,3次印刷 |
第269页表9-4表头 |
表9-4 WCF所记录的同步机制的类型 |
表9-4 WCT所记录的同步机制的类型 |
2009/5/10 |
|
| 第1版第1,2,3次印刷 |
第566页图21-1左下角 |
索引TLS_MINIMUM_AVAILABLE-2 |
索引TLS_MINIMUM_AVAILABLE-1 |
2009/5/31 |
bobo |
| 第1版第1,2,3次印刷 |
第106页第2段第4行 |
每当有代码试图一个受保护的安全资源时时 |
每当有代码试图访问一个受保护的安全资源时时 |
2009/6/9 |
LeoHuang |
| 第1版第1,2,3次印刷 |
第724页倒数第1段第1行 |
我们不再需要记住那些晦涩难懂的Windows |
我们不再需要记住那些晦涩难懂的Windows函数 |
2009/6/22 |
bobo |
| 第1版第1,2,3次印刷 |
第725页第2段第4行 |
或者正好相反(高16位部分是通知码,低16位部分是控件ID)?我总是会忘记这些参数的具体含义。 |
或者正好相反(高16位部分是通知码,低16位部分是控件ID)?我总是会忘记这些参数的具体含义。 |
2009/6/22 |
bobo |
| 第1版第1,2,3次印刷 |
第493页第3段第3行 |
当然,这会造成一种假象,使我们觉得链表的代码有缺陷。 |
当然,这会造成一种假象,使我们觉得二叉树的代码有缺陷,虽然事实上问题出在链表的代码中。 |
2009/6/22 |
wocow3 |
| 第1版第1,2,3次印刷 |
第539页倒数第1段第3行 |
但是,老线程在创建新线程的时候,会导致系统向新线程的DllMain发送DLL_PROCESS_ATTACH通知,由于这时老线程尚未完成对DllMain的处理,因此新线程会被挂起。 |
但是,老线程在创建新线程的时候,会导致系统向新线程的DllMain发送DLL_PROCESS_ATTACH通知,由于这时老线程尚未完成对DllMain的处理,因此新线程会被挂起。 |
2009/6/27 |
wocow3 |
| 第1版第1,2,3次印刷 |
第277页表10-2第五行 |
CreateFile(pszName为"\\.\PHYSICALDRIVEx") |
CreateFile(pszName为"\\.\PHYSICALDRIVEx") |
2009/7/12 |
bobo |
| 第1版第1,2,3次印刷 |
第219页第2段第1行 |
线程0处理奇数号请求,线程1处理偶数号请求 |
线程0处理偶数号请求,线程1处理奇数号请求 |
2009/7/18 |
施博 |
| 第1版第1,2,3次印刷 |
第443页倒数第2段第1行 |
在上图中被标记为“New page” |
在上图中被标记为“新页面” |
2009/8/5 |
bobo |
| 第1版第1,2,3次印刷 |
第640页表24-1第3行 |
EXCEPTION_EXECUTE_SEARCH |
EXCEPTION_CONTINUE_SEARCH |
2009/8/5 |
black |
| 第1版第1,2,3次印刷 |
第82页最后一段第2行 |
后者没有wServicePackMajor,wSuiteMask,wProductType和wReservedMembers成员 |
后者没有wServicePackMajor,wServicePackMinor,wSuiteMask,wProductType和wReservedMembers成员 |
2009/12/20 |
zxueh |
| 第1版第1,2,3,4次印刷 |
第130页表5-4第3行 |
指定要禁止对哪些SID进行访问访问检查 |
指定要禁止对哪些SID进行访问访问检查 |
2010/1/6 |
周靖 |
| 第1版第1,2,3,4次印刷 |
第14页样例代码第4行 |
#define __TEXT(quote) quote // r_winnt |
#define __TEXT(quote) quote // r_winnt |
2010/1/24 |
周靖 |
第1版第1,2,3,4次印刷 |
第14页倒数第1行 |
如果一个Windows函数的多数列表 |
如果一个Windows函数的参数列表 |
2010/1/24 |
周靖 |
第1版第1,2,3,4次印刷 |
第168页第2版段第2行 |
可能创建一个新的进程 |
可能创建一个新的线程 |
2010/2/5 |
wyong27 |