Função GetModuleFileNameA (libloaderapi.h)
Recupera o caminho totalmente qualificado para o arquivo que contém o módulo especificado. O módulo deve ter sido carregado pelo processo atual.
Para localizar o arquivo de um módulo que foi carregado por outro processo, use a função GetModuleFileNameEx .
Sintaxe
DWORD GetModuleFileNameA(
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Parâmetros
[in, optional] hModule
Um identificador para o módulo carregado cujo caminho está sendo solicitado. Se esse parâmetro for NULL, GetModuleFileName recuperará o caminho do arquivo executável do processo atual.
A função GetModuleFileName não recupera o caminho para módulos que foram carregados usando o sinalizador LOAD_LIBRARY_AS_DATAFILE . Para obter mais informações, consulte LoadLibraryEx.
[out] lpFilename
Um ponteiro para um buffer que recebe o caminho totalmente qualificado do módulo. Se o comprimento do caminho for menor que o tamanho especificado pelo parâmetro nSize , a função terá êxito e o caminho será retornado como uma cadeia de caracteres terminada em nulo.
Se o comprimento do caminho exceder o tamanho especificado pelo parâmetro nSize , a função terá êxito e a cadeia de caracteres será truncada para caracteres nSize , incluindo o caractere nulo de terminação.
Windows XP: A cadeia de caracteres é truncada para caracteres nSize e não é terminada em nulo.
A cadeia de caracteres retornada usará o mesmo formato especificado quando o módulo foi carregado. Portanto, o caminho pode ser um nome de arquivo longo ou curto e pode usar o prefixo \\?\
. Para obter mais informações, confira Como nomear um arquivo.
[in] nSize
O tamanho do buffer lpFilename , em TCHARs.
Valor retornado
Se a função for bem-sucedida, o valor retornado será o comprimento da cadeia de caracteres copiada para o buffer, em caracteres, sem incluir o caractere nulo de terminação. Se o buffer for muito pequeno para manter o nome do módulo, a cadeia de caracteres será truncada para caracteres nSize , incluindo o caractere nulo de terminação, a função retornará nSize e a função definirá o último erro como ERROR_INSUFFICIENT_BUFFER.
Windows XP: Se o buffer for muito pequeno para conter o nome do módulo, a função retornará nSize. O último código de erro permanece ERROR_SUCCESS. Se nSize for zero, o valor retornado será zero e o último código de erro será ERROR_SUCCESS.
Se a função falhar, o valor retornado será zero (0). Para obter informações de erro estendidas, chame GetLastError.
Comentários
Se uma DLL for carregada em dois processos, seu nome de arquivo em um processo poderá ser diferente de seu nome de arquivo no outro processo.
A variável _pgmptr
global é inicializada automaticamente para o caminho completo do arquivo executável e pode ser usada para recuperar o nome do caminho completo de um arquivo executável.
Exemplos
Para obter um exemplo, consulte Instalando um serviço.
Observação
O cabeçalho libloaderapi.h define GetModuleFileName como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | libloaderapi.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |