better ps
This commit is contained in:
1 parent
325149006c
commit
c1a291c4c9
8 files changed
+228
-26
No files matched your search
@@ -2012,7 +2012,7 @@ static uint64_t SyscallKillProcess(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_GET_PROCESS_LIST (65) a0=*pidsOut a1=maxCount a2=*countOut
|
||||
// SYS_GET_PROCESS_LIST (6) a0=*SYS_PROCESS_INFO[] a1=maxCount a2=*countOut
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallGetProcessList(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -2025,20 +2025,20 @@ static uint64_t SyscallGetProcessList(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
if (!KSUCCESS(s)) return s;
|
||||
}
|
||||
|
||||
size_t total = KeCopyProcessIds(NULL, 0);
|
||||
size_t total = KeCopyProcessInfo(NULL, 0);
|
||||
size_t toCopy = total < maxCount ? total : maxCount;
|
||||
|
||||
if (toCopy) {
|
||||
size_t bytes = 0;
|
||||
if (!KiMulSize(toCopy, sizeof(uint32_t), &bytes)) return STATUS_INVALID_PARAMETER;
|
||||
if (!KiMulSize(toCopy, sizeof(SYS_PROCESS_INFO), &bytes)) return STATUS_INVALID_PARAMETER;
|
||||
|
||||
uint32_t* tmp = (uint32_t*)MmAllocatePool(bytes);
|
||||
SYS_PROCESS_INFO* tmp = (SYS_PROCESS_INFO*)MmAllocatePool(bytes);
|
||||
if (!tmp) return STATUS_NO_MEMORY;
|
||||
|
||||
size_t copied = KeCopyProcessIds(tmp, toCopy);
|
||||
size_t copied = KeCopyProcessInfo(tmp, toCopy);
|
||||
if (copied < toCopy) toCopy = copied;
|
||||
|
||||
KSTATUS s = CopyToUser((void*)(uintptr_t)a0, tmp, toCopy * sizeof(uint32_t));
|
||||
KSTATUS s = CopyToUser((void*)(uintptr_t)a0, tmp, toCopy * sizeof(SYS_PROCESS_INFO));
|
||||
MmFreePool(tmp);
|
||||
if (!KSUCCESS(s)) return s;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user