久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2872|回復: 0
打印 上一主題 下一主題
收起左側

編程練習作品 -> GetError 翻譯小工具(非原創)

[復制鏈接]
跳轉到指定樓層
樓主
ID:71922 發表于 2015-1-10 23:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       本來是想利用學到的 SSDT HOOK 設計一個主動防御軟件。無奈,不知道sys怎么與exe通信,例如,當驅動攔截了應用程序的某個危險操作要怎么樣去通知exe,讓其詢問用戶,是否放行等... 目前只會exe向sys下指令... o(︶︿︶)o 唉,基礎不行啊...想找幾套關于驅動編寫方面的視頻教程都找不到...納悶。無聊中就在自己的硬盤里看到了 windows核心編程電子書,看了第一章,覺得受益不少。寫下代碼以后備用...
        以下是根據書里面的代碼設計的一個小工具,個人覺得除錯的時候挺有用的。



      以下為源碼,源碼有注釋: (源碼來自 Windows核心編程 第五版)====================================================================================
int len = 0;
void CTSDlg::OnEnChangeEditError()
{
// 獲取用戶輸入的錯誤碼 必須以整型的方式獲取
DWORD dwError = GetDlgItemInt(IDC_EDIT_ERROR, NULL, FALSE);
if (!dwError)
  return;
// 指向一個內存卡的句柄被實例化并初始化為 NULL FormatMessage函數在內部分配一塊內存,并返回指向這塊內存的句柄
HLOCAL hlocal = NULL;      
DWORD systemLocale = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);  // 生成語言標識符,這兩個常量常聯合在一起生成一個 0 即操作系統默認語言
BOOL fOk = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |    // 獲取一個與系統定義的錯誤代碼對應的字符串
  FORMAT_MESSAGE_IGNORE_INSERTS |   // 允許獲得含有 %占位符的消息 用來被Windows 提供更多上下文相關信息
  FORMAT_MESSAGE_ALLOCATE_BUFFER,   // 分配一塊足以容納錯誤文本描述的內存 此內存句柄將在hlocal變量返回
  NULL, dwError,        // dwError 要查找的錯誤代碼
  systemLocale,        // 指出用什么語言來顯示文本描述
  (PTSTR)&hlocal, 0, NULL);
// 如果獲取失敗 嘗試在 NetMsg.dll 查找消息代碼 看錯誤是否與網絡有關
if (!fOk)
{
  HMODULE hDll = LoadLibraryEx(L"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);
  }
}
if (fOk && (hlocal != NULL))
{
  m_Clist_ErrorTxt.InsertString (len, (PCTSTR)LocalLock(hlocal));
  LocalLock(hlocal);
}
else
  m_Clist_ErrorTxt.InsertString (len, L"沒有找到相關錯誤信息~");
m_Clist_ErrorTxt.SetCurSel(len );
len++;
}
=======================================================================

不是原創作品,就不必發exe下載地址了...


7.1 更新:來自 百度百科
========================================================================
FormatMessage功能就是將GetLastError得到的錯誤信息(這個錯誤信息是數字代號)轉化成字符串信息的函數
  FormatMessage()
  函數FormatMessage聲明如下:
  DWORD WINAPI FormatMessage(
  __in DWORD dwFlags,
  __in_opt LPCVOID lpSource,
  __in DWORD dwMessageId,
  __in DWORD dwLanguageId,
  __out LPTSTR lpBuffer,
  __in DWORD nSize,
  __in_opt va_list *Arguments
  );
  參數說明:
  dwFlags:
  標志位,決定如何說明lpSource參數,dwFlags的低位制定如何處理換行功能在輸出緩沖區,也決定最大寬度的格式化輸出行。
  可選參數:
  
標志標志說明
FORMAT_MESSAGE_ALLOCATE_BUFFER
0x00000100
函數會分配一個足夠大的緩沖區保存格式化消息,并且通過lpBuffer指向該
地址。
FORMAT_MESSAGE_ARGUMENT_ARRAY
0x00002000
Arguments參數不是指向va_list結構體,但是是一個指向保存參數的數據。
FORMAT_MESSAGE_FROM_HMODULE
0x00000800
lpSource參數是需要去搜索的一個包含消息表的模塊線程。如果lpSource
是NULL,當前進程的應用圖像會被搜索,這個標志不能同FORMAT_ME
SSAGE_FROM_STRING使用。
FORMAT_MESSAGE_FROM_STRING
0x00000400
lpSource參數是一個指向以NULL結尾的字符串,字符串包含一個消息定義,
這個消息定義可以包含插入序列。此標志最好不要和FORMAT_MESSAGE_F
ROM_HMODULE或者FORMAT_MESSAGE_FROM_SYSTEM使用
FORMAT_MESSAGE_FROM_SYSTEM
0x00001000
函數會為了請求的信息而搜索系統的消息表資源。如果標志同時也指定了
FORMAT_MESSAGE_FROM_HMODULE,那么函數會先在lpSource指定
的模塊中搜索請求的消息,如果搜索不到,就去搜索系統消息表資源。此
標志不能與FORMAT_MESSAGE_FROM_STRING使用。
FORMAT_MESSAGE_IGNORE_INSERTS
0x00000200
消息定義中的插入序列會被一直忽略和跳過直到輸出緩沖區不改變,并且
Arguments會被忽略。

  lpSource:
  根據dwFlags標志而定。
  dwMessageId:
  請求的消息的標識符。當dwFlags標志為FORMAT_MESSAGE_FROM_STRING時會被忽略。
  dwLanguageId:
  請求的消息的語言標識符。
  nSize:
  如果FORMAT_MESSAGE_ALLOCATE_BUFFER標志沒有被指定,這個參數必須指定為輸出緩沖區的大小,
  如果指定,這個參數指定為分配給輸出緩沖區的最小數。
  Arguments:
  保存格式化信息中的插入值的一個數組。
  返回值
  如果函數調用成功,返回輸出緩沖區的大小,除最后一個空字符。如果失敗側返回0。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本福利视频免费观看 | 日本久久综合网 | 日韩一级电影免费观看 | 国产福利视频 | 免费国产视频 | 精品无码三级在线观看视频 | 99精品免费| 国产原创在线观看 | 男女网站在线观看 | 国产精品久久久久久久久久免费看 | 999热精品| 欧美综合国产精品久久丁香 | 免费v片 | 国户精品久久久久久久久久久不卡 | 亚洲视频免费观看 | 国产精品入口久久 | 免费毛片网站在线观看 | 成人做爰9片免费看网站 | 午夜私人影院 | 91影院在线观看 | 一级a性色生活片久久毛片 午夜精品在线观看 | 日本三级做a全过程在线观看 | 奇米久久 | 不卡的av在线| 久久久精品一区二区 | 国产精品日韩高清伦字幕搜索 | 国产午夜影院 | 成人免费高清 | 91精品国产综合久久婷婷香蕉 | 亚洲色图综合 | 欧美日韩a | 日韩欧美一二三区 | 91精品久久久久久久久久入口 | 亚洲第一天堂无码专区 | 国产粉嫩尤物极品99综合精品 | 97超在线视频 | 亚洲91| 天堂中文在线播放 | 成人免费在线视频 | 日本久久综合网 | 亚洲欧美日韩一区 |