• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    從 COM 客戶端獲得連續的 .NET 異常日志記錄并且無需修改代碼

    發布: 2008-5-14 09:43 | 作者: 不詳 | 來源: ccid | 查看: 194次 | 進入軟件測試論壇討論

    領測軟件測試網



    圖 3 各種掛鉤



    在模塊 OLE32.dll 和 mscoree.dll 的 LoadLibrary 掛鉤函數中,總是首先進行 Win32 LoadLibrary 調用。這將確保模塊請求被加載,并且可用來向來自這些模塊的 LoadLibrary 和 GetProcAddress 調用安裝其他掛鉤。這里,需要解決的最重要的問題是確保在承載 .NET 組件的進程內部足夠早地產生掛鉤。

    當 .NET 異常引發并且被 CCW 捕獲時,將調用自定義的 SetErrorInfo 函數。然后,可以通過查詢 _Exception 接口從該函數中提取 .NET 接口指針,如下所示: 

    HRESULT __stdcall SetErrorInfoWithExceptionLogging(
        DWORD dwReserved, IErrorInfo  *pErrInfo)
      {
           CComQIPtr<_Exception> spException(pErrInfo);
           if (spException)
           {
               // Perform work with .NET exception interface
          }
      }

    圖 4 中顯示了對各種掛鉤函數的調用。 

    在將函數掛鉤以后,它們將一直保持掛鉤狀態,直到進程終止。如果在 DLL 已經卸載之后,進程內部引發了錯誤,則這可能導致訪問沖突,因為 SetErrorInfo 掛鉤仍然指向該 DLL 中定義的函數,而該 DLL 在卸載后將指向無效地址。為了解決該問題,DllCanUnloadNow 函數返回 S_FALSE 以防止 DLL 卸載。替代方法是重置原始的掛鉤函數指針。無論您選擇哪一種方法都可以。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>