您的位置:首页 > 编程语言

windows 核心编程第五版 源代码 无法编译的问题

2010-06-19 17:45 381 查看
这段时间没事做,找了本windows 核心编程第五版 来看,下了源代码,编译,200多的编译错误。

上网找了下,都说装最新的SDK,当然,如果是家里的电脑,那安装就好了。如果是工作电脑最好就谨慎点。

装了SDK也不一定好使,有的哥们装了,原来的又编译不过了,都是路径的问题。

其实也不一定需要更新SDK,主要是认真看看问题,第五版是关联到VISTA,所以有些宏或函数就变成在之下的系统不能用了。

举个例子,APIHOOK的代码中有一段这样

void CAPIHook::FixupNewlyLoadedModule(HMODULE hmod, DWORD dwFlags) {

// If a new module is loaded, hook the hooked functions
if ((hmod != NULL) && // Do not hook our own module
(hmod != ModuleFromAddress(FixupNewlyLoadedModule)) &&

((dwFlags & LOAD_LIBRARY_AS_DATAFILE) == 0) &&
((dwFlags & LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE) == 0) &&
((dwFlags & LOAD_LIBRARY_AS_IMAGE_RESOURCE) == 0)
) {

for (CAPIHook* p = sm_pHead; p != NULL; p = p->m_pNext) {
if (p->m_pfnOrig != NULL) {
ReplaceIATEntryInAllMods(p->m_pszCalleeModName,
p->m_pfnOrig, p->m_pfnHook);
} else {
#ifdef _DEBUG
// We should never end up here
wchar_t szPathname[MAX_PATH];
GetModuleFileNameW(NULL, szPathname, _countof(szPathname));
wchar_t sz[1024];
StringCchPrintfW(sz, _countof(sz),
TEXT("[%4u - %s] impossible to find %S\r\n"),
GetCurrentProcessId(), szPathname, p->m_pszCalleeModName);
OutputDebugString(sz);
#endif
}
}
}
}
注意红色部分:LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE和LOAD_LIBRARY_AS_IMAGE_RESOURCE在Vista之下的系统根本没用,所以只要把代码((dwFlags & LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE) == 0) &&
((dwFlags & LOAD_LIBRARY_AS_IMAGE_RESOURCE) == 0)删除掉就能顺利编译了。

另外windows 核心编程第五版的随书代码,有些是需要Mfc库支持的,如果发现有的代码不行,就链接MFC试试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐