【发布时间】:2021-07-08 08:05:44
【问题描述】:
我有这个功能,并且我有#include'd必要的文件,但我仍然收到这个错误。
操作系统:Windows 10
编译器:MinGW
string ProcessIdToName(DWORD processId)
{
string ret;
HANDLE handle = OpenProcess(
PROCESS_QUERY_LIMITED_INFORMATION,
FALSE,
processId
);
if (handle)
{
DWORD buffSize = 1024;
CHAR buffer[1024];
if (QueryFullProcessImageNameA(handle, 0, buffer, &buffSize))
{
ret = buffer;
}
else
{
printf("Error GetModuleBaseNameA : %lu", GetLastError());
}
CloseHandle(handle);
}
else
{
printf("Error OpenProcess : %lu", GetLastError());
}
return ret;
}
【问题讨论】:
-
使用 QueryFullProcessImageName? [SO]: How to create a Minimal, Reproducible Example (reprex (mcve)).
-
@CristiFati 与 QueryFullProcessImageName 相同的错误。
-
当你在header B中包含header A,同时在header A中包含header B时,通常会发生此错误。你是这样做的吗?
-
Using the Windows Headers。我感觉更合适的解决方案是停止使用 MinGW。它有所有错误的默认值,你迫不及待地不想再使用了。比如... ANSI 编码。
-
Ming 因使用过时的 Windows SDK 而臭名昭著。它的标题可能根本不知道
QueryFullProcessImageName()。如果是这样,您可能必须在运行时使用GetProcAddress()手动导入函数。