c++ - EnumProcessModulesEx 无法返回错误代码 299 (ERROR_PARTIAL_COPY)

标签 c++ winapi windows-7 64-bit getlasterror

我正在调用函数 EnumProcessModulesEx 但它失败了。我在 64 位机器上运行。这是下面的代码:

wchar_t* dest = new wchar_t[100];
int index = SendMessage(processes, LB_GETCURSEL, 0, 0);
SendMessage(processes, LB_GETTEXT, index, (LPARAM)dest);
HMODULE module;
unsigned long cbneeded;
EnableTokenPrivilege(hWnd, SE_DEBUG_NAME);
HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, _wtoi(dest));
int errorcode = GetLastError();
BOOL ret = EnumProcessModulesEx(h, &module, sizeof module, &cbneeded, LIST_MODULES_ALL);
int err = GetLastError();
wchar_t* name = new wchar_t[MAX_PATH];
GetModuleBaseName(h, module, name, sizeof name);
MessageBox(hWnd, name, L"Process Name", 0);
delete dest;
delete name;

最佳答案

很可能您正在尝试从 64 位应用程序打开 32 位进程,反之亦然。您只能使用同类流程。

关于c++ - EnumProcessModulesEx 无法返回错误代码 299 (ERROR_PARTIAL_COPY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962356/

相关文章:

C++ : struct vs function for ordering elements

c++ - 防止隐式转换但允许列表初始化?

c++ - 为什么我不能使用 MinGW 编译 GTK+?

c++ - 寻找初始化为 const int 和 int 的指针的解释

c++ - C/C++ 为什么对二进制数据使用 unsigned char?

c++ - 从 GetSystemTimePreciseAsFileTime() 到本地时间的可靠快速方法

winapi - 什么是 WIN32 API WM_REFLECT 消息?

c++ - 在分层窗口 win32 上部分点击

java - Jespa 1.1 Java + ActiveDirectory NTLM 身份验证不起作用

c++ - VS2010 分析器/泄漏检测