【发布时间】:2020-10-01 08:58:19
【问题描述】:
我正在尝试通过以下方式获取当前进程的 PIO_COUNTERS:
DWORD pid = GetCurrentProcessId();
auto handle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
PIO_COUNTERS ctr = nullptr;
if (!GetProcessIoCounters(handle, ctr)) {
DWORD dw = GetLastError();
}
我得到 dw 的值为 998,即“内存位置的访问无效”。这实质上意味着我正在使用的句柄没有足够的权限,但这是具有最大访问控制权限的标志。我还尝试使用“GetCurrentProcess”给出的句柄(这与我上面得到的不同)但在将它传递给 GetProcessIoCounters 后也给出了错误代码 998。
有人可以帮我吗?
提前致谢。
【问题讨论】:
-
您没有传递有效的指针来接收数据。
IO_COUNTERS ctr = {}; GetProcessIoCounters(handle, &ctr);等 -
直接来自documentation:"lpIoCounters:一个指向
IO_COUNTERS结构的指针,它接收进程的I/O 记帐信息。"
标签: windows winapi visual-c++ win32com win32-process