Click to Rate and Give Feedback
MSDN
MSDN Library
System Services
 GetModuleFileName Function
GetModuleFileName Function

Retrieves the fully-qualified path for the file that contains the specified module. The module must have been loaded by the current process.

To locate the file for a module that was loaded by another process, use the GetModuleFileNameEx function.

Syntax

DWORD WINAPI GetModuleFileName(
  __in_opt  HMODULE hModule,
  __out     LPTSTR lpFilename,
  __in      DWORD nSize
);

Parameters

hModule [in, optional]

A handle to the loaded module whose path is being requested. If this parameter is NULL, GetModuleFileName retrieves the path of the executable file of the current process.

The GetModuleFileName function does not retrieve the path for modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx.

lpFilename [out]

A pointer to a buffer that receives the fully-qualified path of the module. If the length of the path is less than the size that the nSize parameter specifies, the function succeeds and the path is returned as a null-terminated string.

If the length of the path exceeds the size that the nSize parameter specifies, the function succeeds and the string is truncated to nSize characters including the terminating null character.

Windows XP/2000:  The string is truncated to nSize characters and is not null terminated.

The string returned will use the same format that was specified when the module was loaded. Therefore, the path can be a long or short file name, and can use the prefix "\\?\". For more information, see Naming a File.

nSize [in]

The size of the lpFilename buffer, in TCHARs.

Return Value

If the function succeeds, the return value is the length of the string that is copied to the buffer, in characters, not including the terminating null character. If the buffer is too small to hold the module name, the string is truncated to nSize characters including the terminating null character, the function returns nSize, and the function sets the last error to ERROR_INSUFFICIENT_BUFFER.

Windows XP/2000:  If the buffer is too small to hold the module name, the function returns nSize. The last error code remains ERROR_SUCCESS. If nSize is zero, the return value is zero and the last error code is ERROR_SUCCESS.

If the function fails, the return value is 0 (zero). To get extended error information, call GetLastError.

Remarks

If a DLL is loaded in two processes, its file name in one process may differ in case from its file name in the other process.

The global variable _pgmptr is automatically initialized to the full path of the executable file, and can be used to retrieve the full path name of an executable file.

Examples

For an example, see Installing a Service.

Requirements

Minimum supported clientWindows 2000 Professional
Minimum supported serverWindows 2000 Server
HeaderWinbase.h (include Windows.h)
LibraryKernel32.lib
DLLKernel32.dll
Unicode and ANSI namesGetModuleFileNameW (Unicode) and GetModuleFileNameA (ANSI)

See Also

Dynamic-Link Library Functions
GetModuleFileNameEx
GetModuleHandle
LoadLibrary
LoadLibraryEx


Send comments about this topic to Microsoft

Build date: 11/6/2008

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
please help me error      Tuanruby ... DE-OYN6836-413506-761-6969   |   Edit   |  

GetModuleFileNameA+1B4

error full

//=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Fault address: 0043D0AC 01:0003C0AC D:\GameDBAgent3\DBAgentPay.exe
Registers:
EAX:00323935
EBX:00BA7488
ECX:00477260
EDX:00477260
ESI:0AB1C83C
EDI:0AB1B0E0
CS:EIP:001B:0043D0AC
SS:ESP:0023:0AB1AF44 EBP:0AB1AF60
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010246
Call stack:
Address Frame Function SourceFile
0043D0AC 0AB1AF60 0001:0003C0AC D:\GameDBAgent3\DBAgentPay.exe
0043D17C 0AB1AF6C 0001:0003C17C D:\GameDBAgent3\DBAgentPay.exe
0041077C 0AB1AF7C 0001:0000F77C D:\GameDBAgent3\DBAgentPay.exe
0040E1A9 0AB1B0E0 0001:0000D1A9 D:\GameDBAgent3\DBAgentPay.exe
00426887 0AB1C818 0001:00025887 D:\GameDBAgent3\DBAgentPay.exe
0042D204 0AB1F0EC 0001:0002C204 D:\GameDBAgent3\DBAgentPay.exe
0041F971 0AB1F15C 0001:0001E971 D:\GameDBAgent3\DBAgentPay.exe
004323C8 0AB1F18C 0001:000313C8 D:\GameDBAgent3\DBAgentPay.exe
0042B35A 0AB1FFA4 0001:0002A35A D:\GameDBAgent3\DBAgentPay.exe
004375DE 0AB1FFB4 0001:000365DE D:\GameDBAgent3\DBAgentPay.exe
7C80B50B 0AB1FFEC GetModuleFileNameA+1B4
========================
Local Variables And Parameters
Call stack:
Address Frame Function SourceFile
0043D0AC 0AB1AF60 0001:0003C0AC D:\GameDBAgent3\DBAgentPay.exe
0043D17C 0AB1AF6C 0001:0003C17C D:\GameDBAgent3\DBAgentPay.exe
0041077C 0AB1AF7C 0001:0000F77C D:\GameDBAgent3\DBAgentPay.exe
0040E1A9 0AB1B0E0 0001:0000D1A9 D:\GameDBAgent3\DBAgentPay.exe
00426887 0AB1C818 0001:00025887 D:\GameDBAgent3\DBAgentPay.exe
0042D204 0AB1F0EC 0001:0002C204 D:\GameDBAgent3\DBAgentPay.exe
0041F971 0AB1F15C 0001:0001E971 D:\GameDBAgent3\DBAgentPay.exe
004323C8 0AB1F18C 0001:000313C8 D:\GameDBAgent3\DBAgentPay.exe
0042B35A 0AB1FFA4 0001:0002A35A D:\GameDBAgent3\DBAgentPay.exe
004375DE 0AB1FFB4 0001:000365DE D:\GameDBAgent3\DBAgentPay.exe
7C80B50B 0AB1FFEC GetModuleFileNameA+1B4

Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker