#include <k32.h>
+#include <tlhelp32.h>
+
#define NDEBUG
#include "../include/debug.h"
/* INTERNAL FUNCTIONS *********************************************************/
static VOID
-TH32FreeAllocatedResources(PDEBUG_BUFFER HeapDebug,
- PDEBUG_BUFFER ModuleDebug,
+TH32FreeAllocatedResources(PRTL_DEBUG_BUFFER HeapDebug,
+ PRTL_DEBUG_BUFFER ModuleDebug,
PVOID ProcThrdInfo,
ULONG ProcThrdInfoSize)
{
static NTSTATUS
TH32CreateSnapshot(DWORD dwFlags,
DWORD th32ProcessID,
- PDEBUG_BUFFER *HeapDebug,
- PDEBUG_BUFFER *ModuleDebug,
+ PRTL_DEBUG_BUFFER *HeapDebug,
+ PRTL_DEBUG_BUFFER *ModuleDebug,
PVOID *ProcThrdInfo,
ULONG *ProcThrdInfoSize)
{
if(*HeapDebug != NULL)
{
Status = RtlQueryProcessDebugInformation(th32ProcessID,
- PDI_HEAPS,
+ RTL_DEBUG_QUERY_HEAPS,
*HeapDebug);
}
else
if(*ModuleDebug != NULL)
{
Status = RtlQueryProcessDebugInformation(th32ProcessID,
- PDI_MODULES,
+ RTL_DEBUG_QUERY_MODULES,
*ModuleDebug);
}
else
static NTSTATUS
TH32CreateSnapshotSectionInitialize(DWORD dwFlags,
DWORD th32ProcessID,
- PDEBUG_BUFFER HeapDebug,
- PDEBUG_BUFFER ModuleDebug,
+ PRTL_DEBUG_BUFFER HeapDebug,
+ PRTL_DEBUG_BUFFER ModuleDebug,
PVOID ProcThrdInfo,
HANDLE *SectionHandle)
{
ULONG ViewSize, i;
ULONG nProcesses = 0, nThreads = 0, nHeaps = 0, nModules = 0;
ULONG RequiredSnapshotSize = sizeof(TH32SNAPSHOT);
- PHEAP_INFORMATION hi = NULL;
- PMODULE_INFORMATION mi = NULL;
+ PRTL_PROCESS_HEAPS hi = NULL;
+ PRTL_PROCESS_MODULES mi = NULL;
NTSTATUS Status = STATUS_SUCCESS;
/*
*/
if(dwFlags & TH32CS_SNAPHEAPLIST)
{
- hi = (PHEAP_INFORMATION)HeapDebug->HeapInformation;
+ hi = (PRTL_PROCESS_HEAPS)HeapDebug->HeapInformation;
nHeaps = hi->HeapCount;
RequiredSnapshotSize += nHeaps * sizeof(HEAPLIST32);
}
*/
if(dwFlags & TH32CS_SNAPMODULE)
{
- mi = (PMODULE_INFORMATION)ModuleDebug->ModuleInformation;
+ mi = (PRTL_PROCESS_MODULES)ModuleDebug->ModuleInformation;
nModules = mi->ModuleCount;
RequiredSnapshotSize += nModules * sizeof(MODULEENTRY32W);
}
if(dwFlags & (TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD))
{
ULONG ProcOffset = 0;
-
+
ProcessInfo = (PSYSTEM_PROCESS_INFORMATION)ProcThrdInfo;
do
{
ModuleListEntry->modBaseAddr = (BYTE*)mi->ModuleEntry[i].Base;
ModuleListEntry->modBaseSize = mi->ModuleEntry[i].Size;
ModuleListEntry->hModule = (HMODULE)mi->ModuleEntry[i].Base;
-
+
MultiByteToWideChar(CP_ACP,
0,
&mi->ModuleEntry[i].ImageName[mi->ModuleEntry[i].ModuleNameOffset],
-1,
ModuleListEntry->szModule,
sizeof(ModuleListEntry->szModule) / sizeof(ModuleListEntry->szModule[0]));
-
+
MultiByteToWideChar(CP_ACP,
0,
mi->ModuleEntry[i].ImageName,
if(dwFlags & TH32CS_SNAPPROCESS)
{
ULONG ProcOffset = 0;
-
+
Snapshot->ProcessListCount = nProcesses;
Snapshot->ProcessListOffset = DataOffset;
ProcessListEntry = (LPPROCESSENTRY32W)OffsetToPtr(Snapshot, DataOffset);
do
{
ProcessInfo = (PSYSTEM_PROCESS_INFORMATION)((ULONG_PTR)ProcessInfo + ProcOffset);
-
+
ProcessListEntry->dwSize = sizeof(PROCESSENTRY32W);
ProcessListEntry->cntUsage = 0; /* no longer used */
ProcessListEntry->th32ProcessID = (ULONG)ProcessInfo->UniqueProcessId;
{
lstrcpyW(ProcessListEntry->szExeFile, L"[System Process]");
}
-
+
ProcessListEntry++;
ProcOffset = ProcessInfo->NextEntryOffset;
if(dwFlags & TH32CS_SNAPTHREAD)
{
ULONG ProcOffset = 0;
-
+
Snapshot->ThreadListCount = nThreads;
Snapshot->ThreadListOffset = DataOffset;
ThreadListEntry = (LPTHREADENTRY32)OffsetToPtr(Snapshot, DataOffset);
{
PSYSTEM_THREAD_INFORMATION ThreadInfo;
ULONG n;
-
+
ProcessInfo = (PSYSTEM_PROCESS_INFORMATION)((ULONG_PTR)ProcessInfo + ProcOffset);
ThreadInfo = (PSYSTEM_THREAD_INFORMATION)(ProcessInfo + 1);
STDCALL
CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID)
{
- PDEBUG_BUFFER HeapDebug, ModuleDebug;
+ PRTL_DEBUG_BUFFER HeapDebug, ModuleDebug;
PVOID ProcThrdInfo;
ULONG ProcThrdInfoSize;
NTSTATUS Status;