- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
- BOOL
- WINAPI
- OdEnumProcesses(
- PULONG_PTR ProcessId,
- ULONG BufferSize,
- PULONG Needed
- )
- {
- BOOLEAN Enabled;
- ULONG_PTR BufferCount, SizeNeeded;
- PSYSTEM_HANDLE_INFORMATION_EX SystemHandles;
- PSYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handle;
- POLLYDBG_EX_INFO Info = g_Info;
- if (!Info->Modules.AdvEnumProcesses)
- return Info->Modules.StubEnumProcesses(ProcessId, BufferSize, Needed);
- BufferCount = BufferSize / sizeof(*ProcessId);
- SystemHandles = QuerySystemHandles();
- if (SystemHandles == NULL)
- return FALSE;
- MlHandleTable PidTable;
- if (PidTable.Create() == NULL)
- {
- ReleaseSystemInformation(SystemHandles);
- return FALSE;
- }
- SizeNeeded = 0;
- Handle = SystemHandles->Handles;
- for (ULONG_PTR HandleCount = SystemHandles->NumberOfHandles; HandleCount; ++Handle, --HandleCount)
- {
- HANDLE Process;
- NTSTATUS st;
- PROCESS_IMAGE_FILE_NAME2 ImageName;
- WCHAR proc[MAX_NTPATH];
- if (PidTable.Lookup(Handle->UniqueProcessId) != NULL)
- continue;
- PidTable.Insert(Handle->UniqueProcessId);
- if (BufferCount != 0)
- {
- --BufferCount;
- *ProcessId++ = Handle->UniqueProcessId;
- }
- SizeNeeded += sizeof(*ProcessId);
- }
- if (Needed != NULL)
- *Needed = SizeNeeded;
- ReleaseSystemInformation(SystemHandles);
- return TRUE;
- }
复制代码 |
|