GetProcessImageFileNameA问题,缓冲区大小不足

时间:2019-01-31 22:51:13

标签: c++ winapi

我正在使用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)
{

}

1 个答案:

答案 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]))