CreateToolhelp32Snapshot が Windows Mobile 6.5 だと失敗する
SDK のサンプルソースがエミュレータで動きません orz
CreateToolhelp32Snapshot を試そうと、Windows Mobile 6 SDK のサンプル PViewCE と TrayTaskList をビルドしてみたところ・・・。
Windows Mobile 6.5 エミュレータで実行すると、エラーになりました。orz
デバッガで確認すると、
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); (TrayTaskList)
CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); (PViewCE)
の戻り値が INVALID_HANDLE_VALUE (-1) になってます。
ん、むむ??
同じビルドを Windows Mobile 6 エミュレータで実行すると・・・。
ググってみると、MSDN のフォーラムにこんな記事が。
CreateToolhelp32Snapshot Windows Mobile 5
You're running out of memory as snapshoot includes all heaps by default. Please add "secret" TH32CS_SNAPNOHEAPS flag to fix that.Note: TH32CS_SNAPNOHEAPS = 0x40000000
んー、Windows Mobile 6 SDK では、TH32CS_SNAPNOHEAPS はもともと定義済みですね。
TrayTaskList を CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS | TH32CS_SNAPNOHEAPS, 0); としたところ・・・、
しかしながら。
PViewCE は TH32CS_SNAPNOHEAPS を付けても、WM6 でも WM6.5 でも現象は変わりません。
TH32CS_SNAPALL だけに、まだメモリが足りないのかなぁ?
んー、よく調べて見ると。
CreateToolhelp32Snapshot | Microsoft Docs
Value Description TH32CS_SNAPNOHEAPS By default, the process heap information is included when creating PROCESS snapshot.For a more efficient way of receiving the basic information of the process, use this flag with H32CS_SNAPPROCESS.
最近はちゃんと公開されているみたいですね。TH32CS_SNAPNOHEAPS。
「TH32CS_SNAPNOHEAPS は TH32CS_SNAPPROESS と組み合わせて使うと効果的だよ。」とのことですが。
TH32CS_SNAPALL と組み合わせても効果ないのかしらん?
しっかし、WM6 SDK のサンプルソースなのに、WM6 エミュレータで動かないってひどくないですか!?
・・・。
ん、むむ??
うげっ。
英語版のエミュレータだと TH32CS_SNAPALL のままで動くよ・・・。orz
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 作者: ホーミン,Offisnail
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2008/02/27
- メディア: 大型本
- 購入: 6人 クリック: 173回
- この商品を含むブログ (70件) を見る