GetProcessIoCounters 错误代码 998
GetProcessIoCounters errors out with code 998
我正在尝试通过以下方式获取当前进程的 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。
有人可以帮我解决这个问题吗?
提前致谢。
发生 'invalid access' 错误是因为您正在为 IO_COUNTERS
结构的地址传递一个 nullptr
值,以便将您正在检索的信息写入该结构。您需要为此提供 actual 结构的地址:
DWORD pid = GetCurrentProcessId();
auto handle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
IO_COUNTERS info;
if (!GetProcessIoCounters(handle, &info)) { // Pass the address of your structure!
DWORD dw = GetLastError();
}
然后您可以访问 info
结构的各个成员以获取您想要的信息。
我正在尝试通过以下方式获取当前进程的 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。
有人可以帮我解决这个问题吗?
提前致谢。
发生 'invalid access' 错误是因为您正在为 IO_COUNTERS
结构的地址传递一个 nullptr
值,以便将您正在检索的信息写入该结构。您需要为此提供 actual 结构的地址:
DWORD pid = GetCurrentProcessId();
auto handle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
IO_COUNTERS info;
if (!GetProcessIoCounters(handle, &info)) { // Pass the address of your structure!
DWORD dw = GetLastError();
}
然后您可以访问 info
结构的各个成员以获取您想要的信息。