Windows核心编程读书笔记

第一章

         一、在Watch窗口中输入$err,hr来查看当前线程的“上一个错误”。

         二、利用Error Lookup工具来将错误代码转换为相应的文本。

         三、利用FormatMessage函数来将错误代码转换为相应的文本。

 

DWORD dwError=GetDlgItemInt(IDC_ERROR);
 HLOCAL hlocal=NULL;
 DWORD systemLocal=MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL);

 BOOL fOK=FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_ALLOCATE_BUFFER,
                     NULL,dwError,systemLocal,(PTSTR)&hlocal,0,NULL);
 if(!fOK)
 {
  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,systemLocal,(PTSTR)&hlocal,0,NULL);
   FreeLibrary(hDll);
  }
 }
 if(fOK && (hlocal !=NULL))
 {
  SetDlgItemText(IDC_TEXT,(LPCTSTR)LocalLock(hlocal));
  LocalFree(hlocal);
 }
 else
 {
  SetDlgItemText(IDC_TEXT,TEXT("NO Text found for this error number."));
 }
 //FORMAT_MESSAGE_FROM_SYSTEM : 表示希望获得一个系统定义的错误代码对应的字符串
 //FORMAT_MESSAGE_IGNORE_INSERTS :表示允许获得含有%占位符的消息
 //FORMAT_MESSAGE_ALLOCATE_BUFFER :要求函数分配一块足以容纳错误文本描述的内存

你可能感兴趣的:(Windows核心编程读书笔记)