- PR -

Win CE でサポートされてない windows API をどうする?

1
投稿者投稿内容
がらす
ベテラン
会議室デビュー日: 2005/07/14
投稿数: 99
投稿日時: 2009-04-11 06:08
Windows XP で動作しているC++コード(アンマネージド)をCE 6.0 に移植しています。

初めてのCEで、色々試行錯誤しながら、大体こんな手順でエラー1つずつに対処するようになりました。
- とりあえずビルドしてみる
- 未定義エラーがあれば、CEでサポートされているファイル全てに対して検索をかけ、単にSDKに含まれていないだけの問題か調べる(自分でSDKを作れる環境なので)
- CEでサポートされていないことが分かれば
- structなど、ヘッダファイルの定義だけで済むならば、コピーして新たなヘッダファイルを作る
- 関数なら代替できるものを探す、ダメならロジックを解析して書き換える

しかし、低レベルなAPIコールがサポートされていない時にはどうすればいいかで悩んでいます。たとえば、signal, _findfirst, _findnext などです。

signal
http://msdn.microsoft.com/ja-jp/library/xdkz3x12.aspx

_findfirst
http://msdn.microsoft.com/ja-jp/library/zyzxfzac.aspx

私のCEの知識が浅いので、何か知らないことは無いかと思って質問しています。こういう低レベルAPIについて、何か良い回避方法、良い調べ方のアプローチはありますか?

どうぞよろしくお願いします。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2009-04-14 12:02
こんにちは。

Windows CEは、ANSI またはPOSIX準拠のCランタイムライブラリをフルにはサポートしていないですからねぇ。↓
Platform Builder for Microsoft Windows CE 5.0 C Run-time Libraries (msdn)

代替のWindows APIがあれば探してみましょう。

_findfirst → FindFirstFile
_findnext → FindNextFile

など。

signal関数ですが、Windows APIでいえば SetConsoleCtrlHandlerが一番近いのでしょうが、CEにはなさそうですね。
どういう目的でsignal関数を使っているのかを見てみる必要があると思います。移植元がWindows XPであればプロセス間通信的な使い方ではないように思います。
Ctrl+Cシグナルなどの割り込み処理であれば、Windows CEで意味があるものなのか調べたほうがよいと思います。(まともなキーボードが付いているようなWindowsCE機のほうが珍しいでしょう!?)
1

スキルアップ/キャリアアップ(JOB@IT)