Функция GetProcessImageFileNameA (psapi.h)
Извлекает имя исполняемого файла для указанного процесса.
Синтаксис
DWORD GetProcessImageFileNameA(
[in] HANDLE hProcess,
[out] LPSTR lpImageFileName,
[in] DWORD nSize
);
Параметры
[in] hProcess
Дескриптор процесса. Дескриптор должен иметь право доступа к PROCESS_QUERY_INFORMATION или PROCESS_QUERY_LIMITED_INFORMATION. Дополнительные сведения см. в "Безопасность процессов и доступ".
Windows Server 2003 и Windows XP: Дескриптор должен иметь право доступа PROCESS_QUERY_INFORMATION.
[out] lpImageFileName
Указатель на буфер, получающий полный путь к исполняемому файлу.
[in] nSize
Размер буфера lpImageFileName в символах.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение указывает длину строки, скопированной в буфер.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Файл Psapi.dll устанавливается в каталоге %windir%\System32. Если на компьютере есть другая копия этой библиотеки DLL, это может привести к следующей ошибке при запуске приложений в вашей системе: "Не удалось найти точку входа процедуры GetProcessImageFileName в библиотеке динамической компоновки PSAPI.DLL". Чтобы обойти эту проблему, найдите все версии, которые не находятся в каталог %windir%е \System32, и удалите или переименуйте их, а затем перезапустите.
Функция GetProcessImageFileName возвращает путь в форме устройства, а не буквы диска. Например, имя файла C:\Windows\System32\Ctype.nls будет выглядеть следующим образом в форме устройства:
\Device\Harddisk0\Partition1\Windows\System32\Ctype.nls
Чтобы получить имя модуля текущего процесса, используйте функцию GetModuleFileName
Чтобы получить имя основного исполняемого модуля для удаленного процесса в формате пути win32, используйте функцию QueryFullProcessImageName.
Начиная с Windows 7 и Windows Server 2008 R2, Psapi.h устанавливает номера версий для функций PSAPI. Номер версии PSAPI влияет на имя, используемое для вызова функции и библиотеки, которую должна загрузить программа.
Если PSAPI_VERSION имеет значение 2 или больше, эта функция определяется как K32GetProcessImageFileName в Psapi.h и экспортируется в Kernel32.lib и Kernel32.dll. Если PSAPI_VERSION равно 1, эта функция определяется как GetProcessImageFileName в Psapi.h и экспортируется в Psapi.lib и Psapi.dll как оболочка, которая вызывает K32GetProcessImageFileName.
Программы, которые должны выполняться в более ранних версиях Windows, а также Windows 7 и более поздних версиях, всегда должны вызывать эту функцию как GetProcessImageFileName. Чтобы обеспечить правильное разрешение символов, добавьте Psapi.lib в макрос TARGETLIBS и скомпилируйте программу с помощью -DPSAPI_VERSION=1. Чтобы использовать динамическую компоновку во время выполнения, загрузите Psapi.dll.
Заметка
Заголовок psapi.h определяет GetProcessImageFileName как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | psapi.h |
библиотеки |
Kernel32.lib в Windows 7 и Windows Server 2008 R2; Psapi.lib (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.lib в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP |
DLL | Kernel32.dll в Windows 7 и Windows Server 2008 R2; Psapi.dll (если PSAPI_VERSION=1) в Windows 7 и Windows Server 2008 R2; Psapi.dll в Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP |
См. также
функций PSAPI