目前发现的错误如下,相信书中还有许多问题未被发现,请大家发现新的错误及时提出,我会尽快修正的。
1、P52页 第15行 原文“返回0表示在HOOK数组中的序号” 修改后为“成功时返回在HOOK数组中的序号”
2、P53页 第15行 原文“返回0表示在HOOK数组中的序号” 修改后为“成功时返回在HOOK数组中的序号”
3、P164,P165页的Xcopy()函数代码有误,正确代码如下:
/** 将一个目录及子目录下的所有文件复制到另外一个目录下
@param char *pszSrcDir - 要拷贝的源目录
@param char *pszTargeDir - 目标目录
@param BOOL bOverWrite - 覆盖标志,FALSE表示覆盖
@return void - 无
*/
void Xcopy( char *pszSrcDir, char *pszTargeDir, BOOL bOverWrite )
{
char lBaseSearch[MAX_PATH];
HANDLE lhFile;
WIN32_FIND_DATA lfData;
sprintf( lBaseSearch, "%s//*.*", pszSrcDir );
lhFile = FindFirstFile( lBaseSearch, &lfData );
if ( lhFile == INVALID_HANDLE_VALUE ) {
return;
}
do {
CreateDirectory( pszTargeDir, NULL );
if ( !strcmp( lfData.cFileName, "." ) ||
!strcmp( lfData.cFileName, ".." )) {
/* 跳过 . and .. 不处理 */
continue;
}
if ( lfData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
/* 目录 */
char szBaseDir[MAX_PATH];
char szTargeDir[MAX_PATH];
sprintf( szBaseDir, "%s//%s", pszSrcDir, lfData.cFileName );
sprintf( szTargeDir, "%s//%s", pszTargeDir, lfData.cFileName );
Xcopy( szBaseDir, szTargeDir, bOverWrite );
}
else {
/* 普通文件 */
char szBaseDir[MAX_PATH];
char szTargeDir[MAX_PATH];
sprintf( szBaseDir, "%s//%s", pszSrcDir, lfData.cFileName );
sprintf( szTargeDir, "%s//%s", pszTargeDir, lfData.cFileName );
CopyFile( szBaseDir, szTargeDir, bOverWrite );
}
} while ( FindNextFile( lhFile, &lfData ));
FindClose( lhFile );
}
4、P335页 第13行 原文“发送操作会阻塞在哪里?” 修改后为 “发送操作会阻塞在那里。”
5、P203页 第22~29行 原文如下:
if ( pDelNode == pANode->pLeft )
{
pANode->nMagic -= 1;
}
else
{
pANode->nMagic += 1;
}
需要将这段代码移到P203页第9行和第10行之间 ,修改后的第9~21行代码为:
pNode->pData = pDelNode->pData;
if ( pDelNode == pANode->pLeft )
{
pANode->nMagic -= 1;
}
else
{
pANode->nMagic += 1;
}
if (pDelNode != pNode->pLeft)
{
pANode->pRight = pDelNode->pLeft;
}
{
P266页第11行 原文“pData = pCursor->pData;”
7、P343页倒数第12行原文 “for (i = 0; i < uSpaceCount; i++)”
改为: “for (i = 0; i < uSpaceCount - 1; i++)”
原文 : "if ( pQueue->uHead < pQueue->uTail )"
修改为 : "if ( pQueue->uHead > pQueue->uTail )"
13
原文: "if ( pQueue->uHead < pQueue->uTail )"
修改为:"if ( pQueue->uHead > pQueue->uTail )"