我正在使用GetProcessImageFileNameA here。我想获取当前正在运行的可执行文件的文件路径。但是,我不断收到缓冲区正在向其写入路径的空间不足的错误(错误代码122)。我已经打开了一个把手。任何帮助表示赞赏:
namespace proc{
static LPSTR exeName[MAX_PATH];
};
// Inside another function I am calling GetProcessImageFileNameA as such:
if (GetProcessImageFileNameA(proc::currentHandle, proc::exeName[i], sizeof(*proc::exeName[i])) == 0)
{
}
答案 0 :(得分:2)
您的缓冲是错误的。您已经创建了一个未初始化的指针数组,并将单个字符的大小作为缓冲区大小传递给GetProcessImageFileNameA()
。即使大小足够大,也没有地方可以写入数据。
尝试以下方法:
namespace proc{
static char exeName[MAX_PATH];
};
...
GetProcessImageFileNameA(proc::currentHandle, proc::exeName, sizeof(proc::exeName))
或者,如果您确实确实需要一个字符串数组:
namespace proc{
static char exeName[SOME_MAX_COUNT][MAX_PATH];
};
...
GetProcessImageFileNameA(proc::currentHandle, proc::exeName[index], sizeof(proc::exeName[index]))