#define _RTLTYPES_H
/* DEPENDENCIES **************************************************************/
-#include "excpt.h"
-
-/* EXPORTED DATA *************************************************************/
+#include "pstypes.h"
/* CONSTANTS *****************************************************************/
#define MAXIMUM_LEADBYTES 12
#define PEB_BASE (0x7FFDF000)
+#define EXCEPTION_CHAIN_END ((PEXCEPTION_REGISTRATION_RECORD)-1)
#define EXCEPTION_CONTINUE_SEARCH 0
#define EXCEPTION_EXECUTE_HANDLER 1
#define VER_CONDITION_MASK 7
#define VER_NUM_BITS_PER_CONDITION_MASK 3
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
+
+#ifdef NTOS_MODE_USER
/* RTL String Hash Algorithms */
#define HASH_STRING_ALGORITHM_DEFAULT 0
#define HASH_STRING_ALGORITHM_X65599 1
#define HASH_STRING_ALGORITHM_INVALID 0xffffffff
-#ifdef NTOS_MODE_USER
+/* RtlDuplicateString settings */
+#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
+#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
+
+/* For Size conversion macros */
+#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
+#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
+#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
+
+#define MAX_ATOM_LEN 255 /* TCHARS not including nullterm */
+
/* List Macros */
static __inline
VOID
sizeof(__SOURCE_STRING__), \
(__SOURCE_STRING__) \
}
+
+#define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
+ ((L1)->LowPart == (L2)->LowPart))
#endif
/* FIXME: Rename these */
/* RTL Atom Flags */
#define RTL_ATOM_IS_PINNED 0x1
+/* EXPORTED DATA *************************************************************/
+#ifdef NTOS_MODE_USER
+extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG;
+extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG;
+#endif
+
/* ENUMERATIONS **************************************************************/
+#ifdef NTOS_MODE_USER
typedef enum _TABLE_SEARCH_RESULT
{
TableEmptyTree,
GenericGreaterThan,
GenericEqual
} RTL_GENERIC_COMPARE_RESULTS;
+#endif
typedef enum
{
} DOS_PATHNAME_TYPE;
/* FUNCTION TYPES ************************************************************/
+#ifndef NTOS_MODE_USER
+typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID, BOOLEAN);
+
+#else
+
+typedef EXCEPTION_DISPOSITION
+(NTAPI *PEXCEPTION_ROUTINE)(
+ IN struct _EXCEPTION_RECORD *ExceptionRecord,
+ IN PVOID EstablisherFrame,
+ IN OUT struct _CONTEXT *ContextRecord,
+ IN OUT PVOID DispatcherContext
+);
+
+#endif
+
struct _RTL_AVL_TABLE;
struct _RTL_GENERIC_TABLE;
struct _RTL_RANGE;
IN PVOID UserParam
);
-typedef EXCEPTION_DISPOSITION
-(*PEXCEPTION_HANDLER)(
- struct _EXCEPTION_RECORD*,
- PVOID,
- struct _CONTEXT*,
- PVOID
-);
-
typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER)(
PEXCEPTION_POINTERS ExceptionPointers
);
-typedef DWORD (NTAPI *PTHREAD_START_ROUTINE)(
- LPVOID Parameter
+typedef ULONG (NTAPI *PTHREAD_START_ROUTINE)(
+ PVOID Parameter
);
typedef VOID
typedef PVOID
(NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (
struct _RTL_GENERIC_TABLE *Table,
- LONG ByteSize
+ CLONG ByteSize
);
typedef VOID
PVOID Buffer
);
-typedef VOID
+typedef PVOID
(NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (
struct _RTL_AVL_TABLE *Table,
- LONG ByteSize
+ CLONG ByteSize
);
typedef VOID
IN OUT PSIZE_T CommitSize
);
+#ifdef NTOS_MODE_USER
typedef BOOLEAN
(NTAPI *PRTL_CONFLICT_RANGE_CALLBACK) (
PVOID Context,
struct _RTL_RANGE *Range
);
+#endif
+
/* TYPES *********************************************************************/
#ifdef NTOS_MODE_USER
} TIME_FIELDS, *PTIME_FIELDS;
#endif
+typedef EXCEPTION_DISPOSITION
+(*PEXCEPTION_HANDLER)(
+ struct _EXCEPTION_RECORD*,
+ PVOID,
+ struct _CONTEXT*,
+ PVOID
+);
+
typedef struct _ACE
{
ACE_HEADER Header;
} MODULE_INFORMATION, *PMODULE_INFORMATION;
/* END REVIEW AREA */
-#ifdef _INC_EXCPT
-typedef struct _EXCEPTION_REGISTRATION
+typedef struct _EXCEPTION_REGISTRATION_RECORD
{
- struct _EXCEPTION_REGISTRATION *prev;
- PEXCEPTION_HANDLER handler;
-} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;
-#endif
-
-typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD;
-typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
+ struct _EXCEPTION_REGISTRATION_RECORD *Next;
+ PEXCEPTION_HANDLER Handler;
+} EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD;
typedef struct _CURDIR
{
UNICODE_STRING DosPath;
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
+#ifndef NTOS_MODE_USER
+typedef struct _RTL_CRITICAL_SECTION_DEBUG
+{
+ USHORT Type;
+ USHORT CreatorBackTraceIndex;
+ struct _RTL_CRITICAL_SECTION *CriticalSection;
+ LIST_ENTRY ProcessLocksList;
+ ULONG EntryCount;
+ ULONG ContentionCount;
+ ULONG Spare[2];
+} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG;
+
+typedef struct _RTL_CRITICAL_SECTION
+{
+ PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+ LONG LockCount;
+ LONG RecursionCount;
+ HANDLE OwningThread;
+ HANDLE LockSemaphore;
+ ULONG_PTR SpinCount;
+} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+#endif
+
+#ifdef NTOS_MODE_USER
typedef struct _RTL_RANGE_LIST
{
LIST_ENTRY ListHead;
UCHAR Flags; /* RTL_RANGE_... flags */
} RTL_RANGE, *PRTL_RANGE;
+typedef struct _RANGE_LIST_ITERATOR
+{
+ PLIST_ENTRY RangeListHead;
+ PLIST_ENTRY MergedHead;
+ PVOID Current;
+ ULONG Stamp;
+} RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR;
+
+#endif
+
typedef struct _RTL_RESOURCE
{
RTL_CRITICAL_SECTION Lock;
PVOID DebugInfo; /* ?? */
} RTL_RESOURCE, *PRTL_RESOURCE;
-typedef struct _RANGE_LIST_ITERATOR
-{
- PLIST_ENTRY RangeListHead;
- PLIST_ENTRY MergedHead;
- PVOID Current;
- ULONG Stamp;
-} RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR;
-
typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
{
USHORT Length;
PRTL_ATOM_TABLE_ENTRY Buckets[1];
} RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
-/* Let Kernel Drivers use this */
-#if !defined(_WINBASE_H) && !defined(_WINBASE_)
- typedef struct _SYSTEMTIME
- {
- WORD wYear;
- WORD wMonth;
- WORD wDayOfWeek;
- WORD wDay;
- WORD wHour;
- WORD wMinute;
- WORD wSecond;
- WORD wMilliseconds;
- } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
-
- typedef struct _TIME_ZONE_INFORMATION
- {
- LONG Bias;
- WCHAR StandardName[32];
- SYSTEMTIME StandardDate;
- LONG StandardBias;
- WCHAR DaylightName[32];
- SYSTEMTIME DaylightDate;
- LONG DaylightBias;
- } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
-
- typedef enum _ACL_INFORMATION_CLASS
- {
- AclRevisionInformation = 1,
- AclSizeInformation
- } ACL_INFORMATION_CLASS;
-
- #define TIME_ZONE_ID_UNKNOWN 0
- #define TIME_ZONE_ID_STANDARD 1
- #define TIME_ZONE_ID_DAYLIGHT 2
- #define TIME_ZONE_ID_INVALID 0xFFFFFFFF
+#ifndef NTOS_MODE_USER
+
+typedef struct _SYSTEMTIME
+{
+ USHORT wYear;
+ USHORT wMonth;
+ USHORT wDayOfWeek;
+ USHORT wDay;
+ USHORT wHour;
+ USHORT wMinute;
+ USHORT wSecond;
+ USHORT wMilliseconds;
+} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+
+typedef struct _TIME_ZONE_INFORMATION
+{
+ LONG Bias;
+ WCHAR StandardName[32];
+ SYSTEMTIME StandardDate;
+ LONG StandardBias;
+ WCHAR DaylightName[32];
+ SYSTEMTIME DaylightDate;
+ LONG DaylightBias;
+} TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
+
+typedef enum _ACL_INFORMATION_CLASS
+{
+ AclRevisionInformation = 1,
+ AclSizeInformation
+} ACL_INFORMATION_CLASS;
+
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
#endif
#endif