From: "uema2@..." Date: 2003-04-18T18:22:32+09:00 Subject: [ruby-dev:20030] Can't get DLL's path in WinCE 植松と申します。 ruby.c の ruby_init_loadpath 内で、win32 系は VirtualQuery を呼んだあと、得られた値を使って GetModuleFileName を呼んで、DLL の path を 取得している箇所があります。 ところが WinCE では、GetModuleFileName が 失敗してしまいます。 (直後のGetLastError() -> ERROR_INVALID_PARAMETER) どうやら WinCE では、この方法で期待する値を 得られないようなので、VirtualQuery を呼ばずに、 GetModuleFileName の第一引数に NULL を 渡したいのですが、よろしいでしょうか? ただ、これだと得られるのは DLL ではなく、 実行ファイルの path になってしまいますが、 ライブラリの path を取得するという目的は 一応は果たされると思うのですが。 *** ruby.c.orig Sun Apr 6 14:53:05 2003 --- ruby.c Thu Apr 17 20:01:37 2003 *************** *** 17,22 **** --- 17,23 ---- #endif #ifdef _WIN32_WCE #include + #include "wince.h" #endif #include "ruby.h" #include "dln.h" *************** *** 241,249 **** --- 242,252 ---- HMODULE libruby = NULL; MEMORY_BASIC_INFORMATION m; + #ifndef _WIN32_WCE memset(&m, 0, sizeof(m)); if (VirtualQuery(ruby_init_loadpath, &m, sizeof(m)) && m.State == MEM_COMMIT) libruby = (HMODULE)m.AllocationBase; + #endif GetModuleFileName(libruby, libpath, sizeof libpath); #elif defined(DJGPP) extern char *__dos_argv0; では、上記よろしくお願い申し上げます。 _______________________ Message of uema2. mail@uema2.cjb.net