1

我正在嘗試編寫一個採用.NET分析API的COM服務器。此COM服務器將在Windows Mobile 6設備上運行。此COM服務器的目的是分析運行在同一設備上的.NET應用程序。但是,我無法找到在Windows移動SDK下面的頭文件:在Windows Mobile設備上運行代碼分析器

  1. cor.h
  2. corprof.h

這是否意味着我需要移植這些頭文件使用Windows(桌面)SDK中提供的相應版本?

這些頭文件定義了ICorProfilerCallBack接口的家族,它們對於使用.NET Profiling API非常重要。

我看了一下這些Windows SDK中的頭文件,我發現它們包含了很多與.NET框架對象模型相關的特定於平臺的信息,以及PE文件的格式一個.NET程序集。似乎我需要深入瞭解這些.NET領域的實現細節才能成功移植。有沒有其他的選擇?

回答

1

您遇到的問題是,您從一開始就做出了不正確的假設,即Compact Framework支持任何ICorProfilerCallBack接口。它不是。如果你想進行性能分析,我曾經看到/使用過其他性能分析器過去的幾條路徑:

  1. 使用反射來重建和檢測桌面上的CF程序集。使用您自己的專有發佈模式,您可以推出功能輸入/退出消息以及類似的東西。這對代碼分析非常有用,但對於內存分析來說並不那麼重要。
  2. 構建CF的Mono.Cecil,並使用它在目標設備上進行儀器/發射。這比較慢,但更便攜。
  3. 在CF中使用完全未記錄的內存分析API,如the CF CLR Profiler使用。我已經找到了關於這些文檔的任何文檔並且空着,並且我試圖推動微軟在Codeplex上開源工具,但是我也沒有取得任何進展,所以這將會是很多逆向工程使用現有工具和Wireshark的網絡數據包。
+0

+1表示可能的替代方案。 – ghd 2013-02-20 04:52:11

+0

如果你在[CodePlex](http://clrprofiler.codeplex.com/releases/view/97738)上的CLR Profiler中指向#3,我認爲它不支持Compact Framework。 – ghd 2013-02-20 05:24:35

+0

關於第1點,是否涉及檢查程序集(我想要分析的程序集),在適當的位置插入函數進入/退出消息,重新計算受影響模塊的校驗和並修改其相應元數據中的校驗和字段表?看起來Mono.Cecil正在完成所有這些工作。我對嗎? – ghd 2013-02-20 06:44:25

相關問題