diff options
| author | Petr Mrázek | 2011-06-20 01:12:07 +0200 |
|---|---|---|
| committer | Petr Mrázek | 2011-06-20 01:12:07 +0200 |
| commit | f2b91d32690988241c3311d62bab780803682906 (patch) | |
| tree | fac5f73d763ceea966dd035f0f8489999ca62676 /library/Process-windows.cpp | |
| parent | e0fb8f7c81785030fc532fecd4863c6b0cbb36be (diff) | |
| download | dfhack-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.cpp | 61 |
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> |
