GetModuleFileNameA 関数 (libloaderapi.h)
指定したモジュールを含むファイルの完全修飾パスを取得します。 モジュールは、現在のプロセスによって読み込まれている必要があります。
別のプロセスによって読み込まれたモジュールのファイルを見つけるには、GetModuleFileNameEx 関数を使用します。
構文
DWORD GetModuleFileNameA(
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
パラメーター
[in, optional] hModule
パスが要求されている読み込まれたモジュールへのハンドル。 このパラメーターが NULL
GetModuleFileName 関数は、LOAD_LIBRARY_AS_DATAFILE フラグを使用して読み込まれたモジュールのパスを取得しません。 詳細については、「LoadLibraryEx
[out] lpFilename
モジュールの完全修飾パスを受け取るバッファーへのポインター。 パスの長さが、nSize パラメーターが指定したサイズより小さい場合、関数は成功し、パスは null で終わる文字列として返されます。
パスの長さが、
返される文字列は、モジュールの読み込み時に指定されたのと同じ形式を使用します。 そのため、パスには長いファイル名または短いファイル名を指定でき、プレフィックス \\?\
を使用できます。 詳細については、「ファイルの名前付け」を参照してください。
[in] nSize
lpFilename バッファーのサイズ (TCHAR)。
戻り値
関数が成功した場合、戻り値はバッファーにコピーされる文字列の長さ (終端の null 文字を含まない文字) です。 バッファーが小さすぎてモジュール名を保持できなければ、文字列は終端の null 文字を含む nSize 文字
関数が失敗した場合、戻り値は 0 (ゼロ) です。 拡張エラー情報を取得するには、GetLastError
備考
DLL が 2 つのプロセスで読み込まれる場合、一方のプロセスのファイル名が、もう一方のプロセスのファイル名と異なる場合があります。
_pgmptr
グローバル変数は、実行可能ファイルの完全なパスに自動的に初期化され、実行可能ファイルの完全なパス名を取得するために使用できます。
例
例については、「サービスのインストール」を参照してください。
手記
libloaderapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetModuleFileName を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | libloaderapi.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
GetModuleFileNameEx の
GetModuleHandle を