- Update relevant source files to new names.
svn path=/trunk/; revision=19375
/* DEPENDENCIES **************************************************************/
#include <cfg.h>
-/* FIXME: this needs be implemented in the w32api ddk */
#if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
#include <ntimage.h>
#endif
- Object Directory + implementation doesn't match NT (Alex) [obtypes.h]\r
\r
Priority 3:\r
- - Some RTL Structures need review (Alex) [rtltypes.h]\r
+ - FIXED: Some RTL Structures need review (Alex) [rtltypes.h]\r
- Pushlock support is needed to fix EPROCESS (Alex) [pstypes.h]\r
- MADDRESS_SPACE must be converted into the NT Type (Alex) [pstypes.h, mmtypes.h]\r
\r
* Debug Info Functions
*/
NTSYSAPI
-PDEBUG_BUFFER
+PRTL_DEBUG_BUFFER
NTAPI
RtlCreateQueryDebugBuffer(
IN ULONG Size,
NTSYSAPI
NTSTATUS
NTAPI
-RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
+RtlDestroyQueryDebugBuffer(IN PRTL_DEBUG_BUFFER DebugBuffer);
NTSYSAPI
NTSTATUS
RtlQueryProcessDebugInformation(
IN ULONG ProcessId,
IN ULONG DebugInfoClassMask,
- IN OUT PDEBUG_BUFFER DebugBuffer
+ IN OUT PRTL_DEBUG_BUFFER DebugBuffer
);
/*
#define EXCEPTION_UNWINDING 0x02
#define EXCEPTION_EXIT_UNWIND 0x04
#define EXCEPTION_STACK_INVALID 0x8
-#define EXCEPTION_NESTED_CALL 0x10
+#define EXCEPTION_NESTED_CALL 0x10F
#define EXCEPTION_TARGET_UNWIND 0x20
#define EXCEPTION_COLLIDED_UNWIND 0x20
((L1)->LowPart == (L2)->LowPart))
#endif
-/* FIXME: Rename these */
-#define PDI_MODULES 0x01 /* The loaded modules of the process */
-#define PDI_BACKTRACE 0x02 /* The heap stack back traces */
-#define PDI_HEAPS 0x04 /* The heaps of the process */
-#define PDI_HEAP_TAGS 0x08 /* The heap tags */
-#define PDI_HEAP_BLOCKS 0x10 /* The heap blocks */
-#define PDI_LOCKS 0x20 /* The locks created by the process */
+/* RTL Debug Queries */
+#define RTL_DEBUG_QUERY_MODULES 0x01
+#define RTL_DEBUG_QUERY_BACKTRACES 0x02
+#define RTL_DEBUG_QUERY_HEAPS 0x04
+#define RTL_DEBUG_QUERY_HEAP_TAGS 0x08
+#define RTL_DEBUG_QUERY_HEAP_BLOCKS 0x10
+#define RTL_DEBUG_QUERY_LOCKS 0x20
/* RTL Handle Flags */
#define RTL_HANDLE_VALID 0x1
} RTL_GENERIC_COMPARE_RESULTS;
#endif
-typedef enum
+typedef enum _RTL_PATH_TYPE
{
INVALID_PATH = 0,
UNC_PATH, /* "//foo" */
RELATIVE_PATH, /* "foo" */
DEVICE_PATH, /* "//./foo" */
UNC_DOT_PATH /* "//." */
-} DOS_PATHNAME_TYPE;
+} RTL_PATH_TYPE;
/* FUNCTION TYPES ************************************************************/
#ifndef NTOS_MODE_USER
typedef struct _COMPRESSED_DATA_INFO
{
- USHORT CompressionFormatAndEngine;
- UCHAR CompressionUnitShift;
- UCHAR ChunkShift;
- UCHAR ClusterShift;
- UCHAR Reserved;
- USHORT NumberOfChunks;
- ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
+ USHORT CompressionFormatAndEngine;
+ UCHAR CompressionUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+ UCHAR Reserved;
+ USHORT NumberOfChunks;
+ ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
typedef struct _GENERATE_NAME_CONTEXT
{
- USHORT Checksum;
+ USHORT Checksum;
BOOLEAN CheckSumInserted;
- UCHAR NameLength;
- WCHAR NameBuffer[8];
- ULONG ExtensionLength;
- WCHAR ExtensionBuffer[4];
- ULONG LastIndexValue;
+ UCHAR NameLength;
+ WCHAR NameBuffer[8];
+ ULONG ExtensionLength;
+ WCHAR ExtensionBuffer[4];
+ ULONG LastIndexValue;
} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
typedef struct _RTL_SPLAY_LINKS
ACCESS_MASK AccessMask;
} ACE, *PACE;
-/* FIXME: Review definitions and give these guys a better name */
-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_MODULE_INFORMATION
+typedef struct _RTL_PROCESS_MODULE_INFORMATION
{
ULONG Reserved[2];
PVOID Base;
USHORT LoadCount;
USHORT ModuleNameOffset;
CHAR ImageName[256];
-} DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
+} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
-typedef struct _DEBUG_HEAP_INFORMATION
+typedef struct _RTL_PROCESS_MODULES
+{
+ ULONG ModuleCount;
+ RTL_PROCESS_MODULE_INFORMATION ModuleEntry[1];
+} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;
+
+typedef struct _RTL_PROCESS_HEAP_INFORMATION
{
PVOID Base;
ULONG Flags;
ULONG Reserved[7];
PVOID Tags;
PVOID Blocks;
-} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
+} RTL_PROCESS_HEAP_INFORMATION, *PRTL_PROCESS_HEAP_INFORMATION;
-typedef struct _DEBUG_LOCK_INFORMATION
+typedef struct _RTL_PROCESS_HEAPS
+{
+ ULONG HeapCount;
+ RTL_PROCESS_HEAP_INFORMATION HeapEntry[1];
+} RTL_PROCESS_HEAPS, *PRTL_PROCESS_HEAPS;
+
+typedef struct _RTL_PROCESS_LOCK_INFORMATION
{
PVOID Address;
USHORT Type;
ULONG RecursionCount;
ULONG NumberOfSharedWaiters;
ULONG NumberOfExclusiveWaiters;
-} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
+} RTL_PROCESS_LOCK_INFORMATION, *PRTL_PROCESS_LOCK_INFORMATION;
+
+typedef struct _RTL_PROCESS_LOCKS
+{
+ ULONG LockCount;
+ RTL_PROCESS_LOCK_INFORMATION LockEntry[1];
+} RTL_PROCESS_LOCKS, *PRTL_PROCESS_LOCKS;
+
+typedef struct _RTL_PROCESS_BACKTRACE_INFORMATION
+{
+ /* FIXME */
+ ULONG Unknown;
+} RTL_PROCESS_BACKTRACE_INFORMATION, *PRTL_PROCESS_BACKTRACE_INFORMATION;
+
+typedef struct _RTL_PROCESS_BACKTRACES
+{
+ ULONG BackTraceCount;
+ RTL_PROCESS_BACKTRACE_INFORMATION BackTraceEntry[1];
+} RTL_PROCESS_BACKTRACES, *PRTL_PROCESS_BACKTRACES;
+
+typedef struct _RTL_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;
+ PRTL_PROCESS_MODULES ModuleInformation;
+ PRTL_PROCESS_BACKTRACES BackTraceInformation;
+ PRTL_PROCESS_HEAPS HeapInformation;
+ PRTL_PROCESS_LOCKS LockInformation;
+ PVOID Reserved[8];
+} RTL_DEBUG_BUFFER, *PRTL_DEBUG_BUFFER;
typedef struct _RTL_HANDLE_TABLE_ENTRY
{
PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles;
} RTL_HANDLE_TABLE, *PRTL_HANDLE_TABLE;
-typedef struct _LOCK_INFORMATION
-{
- ULONG LockCount;
- DEBUG_LOCK_INFORMATION LockEntry[1];
-} LOCK_INFORMATION, *PLOCK_INFORMATION;
-
-typedef struct _HEAP_INFORMATION
-{
- ULONG HeapCount;
- DEBUG_HEAP_INFORMATION HeapEntry[1];
-} HEAP_INFORMATION, *PHEAP_INFORMATION;
-
-typedef struct _MODULE_INFORMATION
-{
- ULONG ModuleCount;
- DEBUG_MODULE_INFORMATION ModuleEntry[1];
-} MODULE_INFORMATION, *PMODULE_INFORMATION;
-/* END REVIEW AREA */
-
typedef struct _EXCEPTION_REGISTRATION_RECORD
{
struct _EXCEPTION_REGISTRATION_RECORD *Next;
ULONG ExclusiveWaiters;
LONG NumberActive;
HANDLE OwningThread;
- ULONG TimeoutBoost; /* ?? */
- PVOID DebugInfo; /* ?? */
+ ULONG TimeoutBoost;
+ PVOID DebugInfo;
} RTL_RESOURCE, *PRTL_RESOURCE;
typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
{
USHORT HeaderSize;
USHORT CodePage;
- USHORT MaximumCharacterSize; /* SBCS = 1, DBCS = 2 */
+ USHORT MaximumCharacterSize;
USHORT DefaultChar;
USHORT UniDefaultChar;
USHORT TransDefaultChar;
NTSTATUS
NTAPI
LdrQueryProcessModuleInformation(
- IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
+ IN PRTL_PROCESS_MODULES ModuleInformation OPTIONAL,
IN ULONG Size OPTIONAL,
OUT PULONG ReturnedSize
);
/* 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);
}
STDCALL
CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID)
{
- PDEBUG_BUFFER HeapDebug, ModuleDebug;
+ PRTL_DEBUG_BUFFER HeapDebug, ModuleDebug;
PVOID ProcThrdInfo;
ULONG ProcThrdInfoSize;
NTSTATUS Status;
* @implemented
*/
NTSTATUS NTAPI
-LdrQueryProcessModuleInformation(IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
+LdrQueryProcessModuleInformation(IN PRTL_PROCESS_MODULES ModuleInformation OPTIONAL,
IN ULONG Size OPTIONAL,
OUT PULONG ReturnedSize)
{
PLIST_ENTRY ModuleListHead;
PLIST_ENTRY Entry;
PLDR_DATA_TABLE_ENTRY Module;
- PDEBUG_MODULE_INFORMATION ModulePtr = NULL;
+ PRTL_PROCESS_MODULE_INFORMATION ModulePtr = NULL;
NTSTATUS Status = STATUS_SUCCESS;
ULONG UsedSize = sizeof(ULONG);
ANSI_STRING AnsiString;
ModulePtr++;
ModuleInformation->ModuleCount++;
}
- UsedSize += sizeof(DEBUG_MODULE_INFORMATION);
+ UsedSize += sizeof(RTL_PROCESS_MODULE_INFORMATION);
Entry = Entry->Flink;
}
/*
* @unimplemented
*/
-PDEBUG_BUFFER NTAPI
+PRTL_DEBUG_BUFFER NTAPI
RtlCreateQueryDebugBuffer(IN ULONG Size,
IN BOOLEAN EventPair)
{
NTSTATUS Status;
- PDEBUG_BUFFER Buf = NULL;
+ PRTL_DEBUG_BUFFER Buf = NULL;
ULONG SectionSize = 100 * PAGE_SIZE;
Status = NtAllocateVirtualMemory( NtCurrentProcess(),
* @unimplemented
*/
NTSTATUS NTAPI
-RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER Buf)
+RtlDestroyQueryDebugBuffer(IN PRTL_DEBUG_BUFFER Buf)
{
NTSTATUS Status = STATUS_SUCCESS;
*/
NTSTATUS NTAPI
RtlpQueryRemoteProcessModules(HANDLE ProcessHandle,
- IN PMODULE_INFORMATION ModuleInformation OPTIONAL,
+ IN PRTL_PROCESS_MODULES ModuleInformation OPTIONAL,
IN ULONG Size OPTIONAL,
OUT PULONG ReturnedSize)
{
PLIST_ENTRY pleListHead;
PLIST_ENTRY pleCurEntry;
- PDEBUG_MODULE_INFORMATION ModulePtr = NULL;
+ PRTL_PROCESS_MODULE_INFORMATION ModulePtr = NULL;
NTSTATUS Status = STATUS_SUCCESS;
ULONG UsedSize = sizeof(ULONG);
ANSI_STRING AnsiString;
ModulePtr++;
ModuleInformation->ModuleCount++;
}
- UsedSize += sizeof(DEBUG_MODULE_INFORMATION);
+ UsedSize += sizeof(RTL_PROCESS_MODULE_INFORMATION);
/* address of the next module in the list */
pleCurEntry = lmModule.InLoadOrderModuleList.Flink;
NTSTATUS NTAPI
RtlQueryProcessDebugInformation(IN ULONG ProcessId,
IN ULONG DebugInfoMask,
- IN OUT PDEBUG_BUFFER Buf)
+ IN OUT PRTL_DEBUG_BUFFER Buf)
{
NTSTATUS Status = STATUS_SUCCESS;
ULONG Pid = (ULONG) NtCurrentTeb()->Cid.UniqueProcess;
Buf->InfoClassMask = DebugInfoMask;
- Buf->SizeOfInfo = sizeof(DEBUG_BUFFER);
+ Buf->SizeOfInfo = sizeof(RTL_DEBUG_BUFFER);
DPRINT("QueryProcessDebugInformation Start\n");
else
if (Pid == ProcessId)
{
- if (DebugInfoMask & PDI_MODULES)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_MODULES)
{
- PMODULE_INFORMATION Mp;
+ PRTL_PROCESS_MODULES Mp;
ULONG ReturnSize = 0;
ULONG MSize;
- Mp = (PMODULE_INFORMATION)(Buf + Buf->SizeOfInfo);
+ Mp = (PRTL_PROCESS_MODULES)(Buf + Buf->SizeOfInfo);
/* I like this better than the do & while loop. */
Status = LdrQueryProcessModuleInformation( NULL,
return Status;
}
- MSize = Mp->ModuleCount * (sizeof(MODULE_INFORMATION) + 8);
+ MSize = Mp->ModuleCount * (sizeof(RTL_PROCESS_MODULES) + 8);
Buf->ModuleInformation = Mp;
Buf->SizeOfInfo = Buf->SizeOfInfo + MSize;
}
- if (DebugInfoMask & PDI_HEAPS)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_HEAPS)
{
- PHEAP_INFORMATION Hp;
+ PRTL_PROCESS_HEAPS Hp;
ULONG HSize;
- Hp = (PHEAP_INFORMATION)(Buf + Buf->SizeOfInfo);
- HSize = sizeof(HEAP_INFORMATION);
- if (DebugInfoMask & PDI_HEAP_TAGS)
+ Hp = (PRTL_PROCESS_HEAPS)(Buf + Buf->SizeOfInfo);
+ HSize = sizeof(RTL_PROCESS_HEAPS);
+ if (DebugInfoMask & RTL_DEBUG_QUERY_HEAP_TAGS)
{
}
- if (DebugInfoMask & PDI_HEAP_BLOCKS)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_HEAP_BLOCKS)
{
}
Buf->HeapInformation = Hp;
}
- if (DebugInfoMask & PDI_LOCKS)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_LOCKS)
{
- PLOCK_INFORMATION Lp;
+ PRTL_PROCESS_LOCKS Lp;
ULONG LSize;
- Lp = (PLOCK_INFORMATION)(Buf + Buf->SizeOfInfo);
- LSize = sizeof(LOCK_INFORMATION);
+ Lp = (PRTL_PROCESS_LOCKS)(Buf + Buf->SizeOfInfo);
+ LSize = sizeof(RTL_PROCESS_LOCKS);
Buf->LockInformation = Lp;
Buf->SizeOfInfo = Buf->SizeOfInfo + LSize;
}
return Status;
}
- if (DebugInfoMask & PDI_MODULES)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_MODULES)
{
- PMODULE_INFORMATION Mp;
+ PRTL_PROCESS_MODULES Mp;
ULONG ReturnSize = 0;
ULONG MSize;
- Mp = (PMODULE_INFORMATION)(Buf + Buf->SizeOfInfo);
+ Mp = (PRTL_PROCESS_MODULES)(Buf + Buf->SizeOfInfo);
Status = RtlpQueryRemoteProcessModules( hProcess,
NULL,
return Status;
}
- MSize = Mp->ModuleCount * (sizeof(MODULE_INFORMATION) + 8);
+ MSize = Mp->ModuleCount * (sizeof(RTL_PROCESS_MODULES) + 8);
Buf->ModuleInformation = Mp;
Buf->SizeOfInfo = Buf->SizeOfInfo + MSize;
}
- if (DebugInfoMask & PDI_HEAPS)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_HEAPS)
{
- PHEAP_INFORMATION Hp;
+ PRTL_PROCESS_HEAPS Hp;
ULONG HSize;
- Hp = (PHEAP_INFORMATION)(Buf + Buf->SizeOfInfo);
- HSize = sizeof(HEAP_INFORMATION);
- if (DebugInfoMask & PDI_HEAP_TAGS)
+ Hp = (PRTL_PROCESS_HEAPS)(Buf + Buf->SizeOfInfo);
+ HSize = sizeof(RTL_PROCESS_HEAPS);
+ if (DebugInfoMask & RTL_DEBUG_QUERY_HEAP_TAGS)
{
}
- if (DebugInfoMask & PDI_HEAP_BLOCKS)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_HEAP_BLOCKS)
{
}
Buf->HeapInformation = Hp;
}
- if (DebugInfoMask & PDI_LOCKS)
+ if (DebugInfoMask & RTL_DEBUG_QUERY_LOCKS)
{
- PLOCK_INFORMATION Lp;
+ PRTL_PROCESS_LOCKS Lp;
ULONG LSize;
- Lp = (PLOCK_INFORMATION)(Buf + Buf->SizeOfInfo);
- LSize = sizeof(LOCK_INFORMATION);
+ Lp = (PRTL_PROCESS_LOCKS)(Buf + Buf->SizeOfInfo);
+ LSize = sizeof(RTL_PROCESS_LOCKS);
Buf->LockInformation = Lp;
Buf->SizeOfInfo = Buf->SizeOfInfo + LSize;
}
ULONG size)
{
ULONG reqsize = 0, mark = 0, dep = 0, deplen;
- DOS_PATHNAME_TYPE type;
+ RTL_PATH_TYPE type;
LPWSTR ins_str = NULL;
LPCWSTR ptr;
const UNICODE_STRING* cd;