現在リリースされている ruby-mswince は Socket に対応していないため残念ながら open-uri が使用できません。
理由は作者様のブログにもあるように Windows Mobilde の DuplicateHandle 関数が Socket ハンドルをサポートしていないためです。
通常 Windows で Socket ハンドルを複製する場合は DuplicateHandle 関数、または WSADuplicateSocket 関数を使用します。
Windows Mobile 用の winsock2.h には WSADuplicateSocket 関数の定義はあるものの ws2.dll に関数が存在しないため使用できません(GetProcAddress 関数を使用してもダメ)。
もうお手上げ状態だな~と思いながらも調査を続けていたところ、WSPDuplicateSocket 関数なるものを発見!
これはいけるかも!と思いつつ ws2api.h をインクルードして ws2.dll から GetProcAddress 関数で取得を試みるも失敗... orz
ただし、確認にはエミュレータ「Windows Mobile 6 Classic」を使用したので実機では使用できるものが存在するかもしれません。
ruby-mswince が Socket に対応できる日は来るでしょうか…。
最近のコメント