GetModuleHandleExW

指定したモジュールのモジュールハンドルを取得し、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
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs