summaryrefslogtreecommitdiff
path: root/library/Process-windows.cpp
diff options
context:
space:
mode:
authorPetr Mrázek2011-06-20 01:12:07 +0200
committerPetr Mrázek2011-06-20 01:12:07 +0200
commitf2b91d32690988241c3311d62bab780803682906 (patch)
treefac5f73d763ceea966dd035f0f8489999ca62676 /library/Process-windows.cpp
parente0fb8f7c81785030fc532fecd4863c6b0cbb36be (diff)
downloaddfhack-f2b91d32690988241c3311d62bab780803682906.tar.gz
dfhack-f2b91d32690988241c3311d62bab780803682906.tar.bz2
dfhack-f2b91d32690988241c3311d62bab780803682906.tar.xz
Making ready for adding plugins. Fixes all over the place, more removal of obsolete parts.
Diffstat (limited to 'library/Process-windows.cpp')
-rw-r--r--library/Process-windows.cpp61
1 files changed, 60 insertions, 1 deletions
diff --git a/library/Process-windows.cpp b/library/Process-windows.cpp
index a54a0c75..4aa3adc9 100644
--- a/library/Process-windows.cpp
+++ b/library/Process-windows.cpp
@@ -23,7 +23,66 @@ distribution.
*/
#include "Internal.h"
-#include "PlatformInternal.h"
+
+#define _WIN32_WINNT 0x0501 // needed for INPUT struct
+#define WINVER 0x0501 // OpenThread(), PSAPI, Toolhelp32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winnt.h>
+#include <psapi.h>
+#include <tlhelp32.h>
+
+typedef LONG NTSTATUS;
+#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
+
+// FIXME: it is uncertain how these map to 64bit
+typedef struct _DEBUG_BUFFER
+{
+ HANDLE SectionHandle;
+ PVOID SectionBase;
+ PVOID RemoteSectionBase;
+ ULONG SectionBaseDelta;
+ HANDLE EventPairHandle;
+ ULONG Unknown[2];
+ HANDLE RemoteThreadHandle;
+ ULONG InfoClassMask;
+ ULONG SizeOfInfo;
+ ULONG AllocatedSize;
+ ULONG SectionSize;
+ PVOID ModuleInformation;
+ PVOID BackTraceInformation;
+ PVOID HeapInformation;
+ PVOID LockInformation;
+ PVOID Reserved[8];
+} DEBUG_BUFFER, *PDEBUG_BUFFER;
+
+typedef struct _DEBUG_HEAP_INFORMATION
+{
+ ULONG Base; // 0×00
+ ULONG Flags; // 0×04
+ USHORT Granularity; // 0×08
+ USHORT Unknown; // 0x0A
+ ULONG Allocated; // 0x0C
+ ULONG Committed; // 0×10
+ ULONG TagCount; // 0×14
+ ULONG BlockCount; // 0×18
+ ULONG Reserved[7]; // 0x1C
+ PVOID Tags; // 0×38
+ PVOID Blocks; // 0x3C
+} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
+
+// RtlQueryProcessDebugInformation.DebugInfoClassMask constants
+#define PDI_MODULES 0x01
+#define PDI_BACKTRACE 0x02
+#define PDI_HEAPS 0x04
+#define PDI_HEAP_TAGS 0x08
+#define PDI_HEAP_BLOCKS 0x10
+#define PDI_LOCKS 0x20
+
+extern "C" __declspec(dllimport) NTSTATUS __stdcall RtlQueryProcessDebugInformation( IN ULONG ProcessId, IN ULONG DebugInfoClassMask, IN OUT PDEBUG_BUFFER DebugBuffer);
+extern "C" __declspec(dllimport) PDEBUG_BUFFER __stdcall RtlCreateQueryDebugBuffer( IN ULONG Size, IN BOOLEAN EventPair);
+extern "C" __declspec(dllimport) NTSTATUS __stdcall RtlDestroyQueryDebugBuffer( IN PDEBUG_BUFFER DebugBuffer);
+
#include <cstring>
#include <cstdio>
#include <cstdlib>