最近想通过仔细阅读《windows核心编程》这本书,来查漏补缺自己的知识点,所以对于我平时已经掌握的知识点,即使很重要,我也可能不会特意记录啦...let's go~
我们在使用windows api时,通常都需要判断返回值,有时失败了希望可以知道具体的错误原因,所以getlasterror大家肯定都知道,这里我要提两点
1. vs可以在监视窗口中输入 $err,hr,即可显示错误码对应的具体含义,方便调试;
2. 代码里需要输出错误日志,可以使用FormatMessage格式化错误码(dwError为错误码)
BOOL fOk = FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, dwError, systemLocale,
(PTSTR) &hlocal, 0, NULL);
if (!fOk) {
// Is it a network-related error?
HMODULE hDll = LoadLibraryEx(TEXT("netmsg.dll"), NULL,
DONT_RESOLVE_DLL_REFERENCES);
if (hDll != NULL) {
fOk = FormatMessage(
FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
hDll, dwError, systemLocale,
(PTSTR) &hlocal, 0, NULL);
FreeLibrary(hDll);
}
}