指定したモジュールのモジュールハンドルを取得し、GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT が指定されない限りモジュールの参照カウントを増やす。モジュールは呼び出し側プロセスによってロード済みでなければならない。(Unicode)
GetModuleHandleExW dwFlags, lpModuleName, phModule
dwFlags : [int] lpModuleName : [wstr] ロード済みモジュール (.dll または .exe ファイル) の名前、またはモジュール内のアドレス (dwFlags が GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS の場合)。 phModule : [intptr] 指定したモジュールへのハンドル。関数が失敗した場合、本パラメータは NULL となる。GetModuleHandleEx 関数は LOAD_LIBRARY_AS_DATAFILE フラグでロードされたモジュールのハンドルは取得しない。詳細は LoadLibraryEx を参照。
(プラグイン / モジュール : kernel32.dll)
指定したモジュールのモジュールハンドルを取得し、GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT が指定されない限りモジュールの参照カウントを増やす。モジュールは呼び出し側プロセスによってロード済みでなければならない。(Unicode) [戻り値] 関数が成功した場合の戻り値は 0 以外である。失敗した場合の戻り値は 0 である。拡張エラー情報を取得するには GetLastError を参照。 [備考] 返されるハンドルはグローバルでも継承可能でもない。複製したり別のプロセスで使用したりすることはできない。lpModuleName にパスが含まれず、同じベース名と拡張子を持つロード済みモジュールが複数ある場合、どのモジュールのハンドルが返されるかは予測できない。この問題を回避するには、パスを指定するか、サイドバイサイドアセンブリを使用するか、lpModuleName パラメータに DLL 名ではなくメモリ上の位置を指定する方法がある。dwFlags に GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT が含まれる場合、GetModuleHandleEx 関数はマッピング済みモジュールへのハンドルを参照カウントを増やさずに返す。ただし、このハンドルが FreeLibrary 関数に渡されると、マッピング済みモジュールの参照カウントは減らされる。したがって、GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 付きの GetModuleHandleEx が返したハンドルを FreeLibrary 関数に渡してはならない。これを行うと DLL モジュールが早期にアンマッピングされる原因となり得る。dwFlags に GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT が含まれる場合、本関数はマルチスレッドアプリケーションでは慎重に使用しなければならない。本関数がハンドルを返してから使用するまでの間に、そのモジュールハンドルが有効である保証はない。例えば、あるスレッドがモジュールハンドルを取得したが、それを使う前に第 2 のスレッドがそのモジュールを解放することがあり得る。システムが別のモジュールをロードすると、最近解放されたモジュールハンドルが再利用される可能性がある。したがって最初のスレッドは意図したものとは異なるモジュールへのハンドルを保持してしまう。本関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT を 0x0501 以降として定義する。詳細は Using the Windows Headers を参照。 > [!NOTE] > libloaderapi.h ヘッダは、UNICODE プリプロセッサ定数の定義に基づいて本関数の ANSI 版または Unicode 版を自動選択するエイリアスとして GetModuleHandleEx を定義する。エンコード非依存のエイリアスとエンコード依存のコードを混在させると、コンパイル時または実行時のエラーにつながる不一致が発生する可能性がある。詳細は [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes) を参照。
| プラグイン / モジュール | kernel32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_kernel32_gen2.hs |