Modified: trunk/reactos/include/ndk/ldrtypes.h
Modified: trunk/reactos/include/ndk/ntndk.h
Modified: trunk/reactos/include/ndk/rtlfuncs.h
Modified: trunk/reactos/include/ndk/rtltypes.h
Added: trunk/reactos/include/ndk/umfuncs.h
Modified: trunk/reactos/lib/kernel32/k32.h
Modified: trunk/reactos/lib/ntdll/inc/ntdll.h
Modified: trunk/reactos/subsys/csrss/init.c
--- trunk/reactos/include/ndk/ldrtypes.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/include/ndk/ldrtypes.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -19,6 +19,15 @@
#define RESOURCE_LANGUAGE_LEVEL 2
#define RESOURCE_DATA_LEVEL 3
+/* FIXME: USE CORRRECT LDR_ FLAGS */
+#define IMAGE_DLL 0x00000004
+#define LOAD_IN_PROGRESS 0x00001000
+#define UNLOAD_IN_PROGRESS 0x00002000
+#define ENTRY_PROCESSED 0x00004000
+#define DONT_CALL_FOR_THREAD 0x00040000
+#define PROCESS_ATTACH_CALLED 0x00080000
+#define IMAGE_NOT_AT_BASE 0x00200000
+
/* ENUMERATIONS **************************************************************/
/* TYPES *********************************************************************/
@@ -34,8 +43,26 @@
PVOID EntryInProgress;
} PEB_LDR_DATA, *PPEB_LDR_DATA;
-/* FIXME: Update with _LDR_DATA_TABLE_ENTRY and LDR_ flags */
-//typedef struct _LDR_MODULE
+typedef struct _LDR_DATA_TABLE_ENTRY
+{
+ LIST_ENTRY InLoadOrderModuleList;
+ LIST_ENTRY InMemoryOrderModuleList;
+ LIST_ENTRY InInitializationOrderModuleList;
+ PVOID DllBase;
+ PVOID EntryPoint;
+ ULONG SizeOfImage;
+ UNICODE_STRING FullDllName;
+ UNICODE_STRING BaseDllName;
+ ULONG Flags;
+ SHORT LoadCount; /* FIXME: HACK!!! FIX ASAP */
+ SHORT TlsIndex; /* FIXME: HACK!!! FIX ASAP */
+ LIST_ENTRY HashLinks;
+ PVOID SectionPointer;
+ ULONG CheckSum;
+ ULONG TimeDateStamp;
+ PVOID LoadedImports;
+ PVOID EntryPointActivationContext;
+} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
typedef struct _LDR_RESOURCE_INFO
{
--- trunk/reactos/include/ndk/ntndk.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/include/ndk/ntndk.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -34,6 +34,9 @@
#else
/* User-Mode NDK */
#include "umtypes.h" /* Native Types in DDK/IFS but not in PSDK */
+ #ifdef READY_FOR_NEW_NTDLL /* This hack will be removed in the next commit */
+ #include "umfuncs.h" /* User-Mode NT Library Functions */
+ #endif
#endif
/* Shared NDK */
--- trunk/reactos/include/ndk/rtlfuncs.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/include/ndk/rtlfuncs.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -204,22 +204,17 @@
}
/*
- * Debug Functions
+ * Error and Exception Functions
*/
-
-ULONG
-CDECL
-DbgPrint(
- IN PCH Format,
- IN ...
+PVOID
+STDCALL
+RtlAddVectoredExceptionHandler(
+ IN ULONG FirstHandler,
+ IN PRTL_VECTORED_EXCEPTION_HANDLER VectoredHandler
);
VOID
STDCALL
-DbgBreakPoint(VOID);
-
-VOID
-STDCALL
RtlAssert(
PVOID FailedAssertion,
PVOID FileName,
@@ -227,6 +222,14 @@
PCHAR Message
);
+PVOID
+STDCALL
+RtlEncodePointer(IN PVOID Pointer);
+
+PVOID
+STDCALL
+RtlDecodePointer(IN PVOID Pointer);
+
ULONG
STDCALL
RtlNtStatusToDosError(IN NTSTATUS Status);
@@ -271,6 +274,13 @@
IN PRTL_HEAP_DEFINITION Definition OPTIONAL
);
+DWORD
+STDCALL
+RtlCompactHeap(
+ HANDLE heap,
+ DWORD flags
+);
+
HANDLE
STDCALL
RtlDestroyHeap(HANDLE hheap);
@@ -283,6 +293,13 @@
IN PVOID P
);
+ULONG
+STDCALL
+RtlGetProcessHeaps(
+ ULONG HeapCount,
+ HANDLE *HeapArray
+);
+
PVOID
STDCALL
RtlReAllocateHeap(
@@ -1138,7 +1155,9 @@
/*
* Process Management Functions
- */
+ */
+/* FIXME: Some of these will be split up into enviro/path functions */
+
VOID
STDCALL
RtlAcquirePebLock(VOID);
@@ -1224,6 +1243,41 @@
PULONG Length
);
+BOOLEAN
+STDCALL
+RtlDoesFileExists_U(PWSTR FileName);
+
+ULONG
+STDCALL
+RtlDetermineDosPathNameType_U(PCWSTR Path);
+
+ULONG
+STDCALL
+RtlDosSearchPath_U(
+ WCHAR *sp,
+ WCHAR *name,
+ WCHAR *ext,
+ ULONG buf_sz,
+ WCHAR *buffer,
+ WCHAR **shortname
+);
+
+ULONG
+STDCALL
+RtlGetCurrentDirectory_U(
+ ULONG MaximumLength,
+ PWSTR Buffer
+);
+
+ULONG
+STDCALL
+RtlGetFullPathName_U(
+ const WCHAR *dosname,
+ ULONG size,
+ WCHAR *buf,
+ WCHAR **shortname
+);
+
PRTL_USER_PROCESS_PARAMETERS
STDCALL
RtlNormalizeProcessParams(
@@ -1240,6 +1294,10 @@
NTSTATUS
STDCALL
+RtlSetCurrentDirectory_U(PUNICODE_STRING name);
+
+NTSTATUS
+STDCALL
RtlSetEnvironmentVariable(
PWSTR *Environment,
PUNICODE_STRING Name,
@@ -1267,6 +1325,13 @@
PRTL_CRITICAL_SECTION CriticalSection
);
+NTSTATUS
+STDCALL
+RtlInitializeCriticalSectionAndSpinCount(
+ PRTL_CRITICAL_SECTION CriticalSection,
+ ULONG SpinCount
+);
+
NTSTATUS
STDCALL
RtlLeaveCriticalSection(
@@ -1309,6 +1374,28 @@
);
/*
+ * Debug Info Functions
+ */
+PDEBUG_BUFFER
+STDCALL
+RtlCreateQueryDebugBuffer(
+ IN ULONG Size,
+ IN BOOLEAN EventPair
+);
+
+NTSTATUS
+STDCALL
+RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
+
+NTSTATUS
+STDCALL
+RtlQueryProcessDebugInformation(
+ IN ULONG ProcessId,
+ IN ULONG DebugInfoClassMask,
+ IN OUT PDEBUG_BUFFER DebugBuffer
+);
+
+/*
* Bitmap Functions
*/
BOOLEAN
@@ -1368,19 +1455,115 @@
);
/*
- * PE Functions
+ * Timer Functions
*/
-NTSTATUS
+NTSTATUS
STDCALL
-LdrVerifyImageMatchesChecksum(
- IN HANDLE FileHandle,
- ULONG Unknown1,
- ULONG Unknown2,
- ULONG Unknown3
+RtlCreateTimer(
+ HANDLE TimerQueue,
+ PHANDLE phNewTimer,
+ WAITORTIMERCALLBACKFUNC Callback,
+ PVOID Parameter,
+ DWORD DueTime,
+ DWORD Period,
+ ULONG Flags
);
NTSTATUS
STDCALL
+RtlCreateTimerQueue(PHANDLE TimerQueue);
+
+NTSTATUS
+STDCALL
+RtlDeleteTimer(
+ HANDLE TimerQueue,
+ HANDLE Timer,
+ HANDLE CompletionEvent
+);
+
+NTSTATUS
+STDCALL
+RtlUpdateTimer(
+ HANDLE TimerQueue,
+ HANDLE Timer,
+ ULONG DueTime,
+ ULONG Period
+);
+
+NTSTATUS
+STDCALL
+RtlDeleteTimerQueueEx(
+ HANDLE TimerQueue,
+ HANDLE CompletionEvent
+);
+
+NTSTATUS
+STDCALL
+RtlDeleteTimerQueue(HANDLE TimerQueue);
+
+/*
+ * Debug Functions
+ */
+ULONG
+CDECL
+DbgPrint(
+ IN PCH Format,
+ IN ...
+);
+
+VOID
+STDCALL
+DbgBreakPoint(VOID);
+
+/*
+ * Handle Table Functions
+ */
+PRTL_HANDLE
+STDCALL
+RtlAllocateHandle (
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN OUT PULONG Index
+);
+
+VOID
+STDCALL
+RtlDestroyHandleTable (IN PRTL_HANDLE_TABLE HandleTable);
+
+BOOLEAN
+STDCALL
+RtlFreeHandle (
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN PRTL_HANDLE Handle
+);
+
+VOID
+STDCALL
+RtlInitializeHandleTable (
+ IN ULONG TableSize,
+ IN ULONG HandleSize,
+ IN PRTL_HANDLE_TABLE HandleTable
+);
+
+BOOLEAN
+STDCALL
+RtlIsValidHandle (
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN PRTL_HANDLE Handle
+);
+
+BOOLEAN
+STDCALL
+RtlIsValidIndexHandle (
+ IN PRTL_HANDLE_TABLE HandleTable,
+ IN OUT PRTL_HANDLE *Handle,
+ IN ULONG Index
+);
+
+/*
+ * PE Functions
+ */
+NTSTATUS
+STDCALL
RtlFindMessage(
IN PVOID BaseAddress,
IN ULONG Type,
@@ -1388,6 +1571,10 @@
IN ULONG MessageId,
OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
);
+
+ULONG
+STDCALL
+RtlGetNtGlobalFlags(VOID);
PVOID
STDCALL
--- trunk/reactos/include/ndk/rtltypes.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/include/ndk/rtltypes.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -43,6 +43,13 @@
#define RTL_RANGE_SHARED 0x01
#define RTL_RANGE_CONFLICT 0x02
+/* 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 */
/* ENUMERATIONS **************************************************************/
typedef enum
@@ -53,6 +60,18 @@
ExceptionCollidedUnwind
} EXCEPTION_DISPOSITION;
+typedef enum
+{
+ INVALID_PATH = 0,
+ UNC_PATH, /* "//foo" */
+ ABSOLUTE_DRIVE_PATH, /* "c:/foo" */
+ RELATIVE_DRIVE_PATH, /* "c:foo" */
+ ABSOLUTE_PATH, /* "/foo" */
+ RELATIVE_PATH, /* "foo" */
+ DEVICE_PATH, /* "//./foo" */
+ UNC_DOT_PATH /* "//." */
+} DOS_PATHNAME_TYPE;
+
/* FUNCTION TYPES ************************************************************/
typedef NTSTATUS
(*PHEAP_ENUMERATION_ROUTINE)(
@@ -68,6 +87,10 @@
PVOID
);
+typedef LONG (STDCALL *PRTL_VECTORED_EXCEPTION_HANDLER)(
+ PEXCEPTION_POINTERS ExceptionPointers
+);
+
typedef DWORD (STDCALL *PTHREAD_START_ROUTINE)(
LPVOID Parameter
);
@@ -91,6 +114,98 @@
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
+{
+ ULONG Reserved[2];
+ PVOID Base;
+ ULONG Size;
+ ULONG Flags;
+ USHORT Index;
+ USHORT Unknown;
+ USHORT LoadCount;
+ USHORT ModuleNameOffset;
+ CHAR ImageName[256];
+} DEBUG_MODULE_INFORMATION, *PDEBUG_MODULE_INFORMATION;
+typedef struct _DEBUG_HEAP_INFORMATION
+{
+ PVOID Base;
+ ULONG Flags;
+ USHORT Granularity;
+ USHORT Unknown;
+ ULONG Allocated;
+ ULONG Committed;
+ ULONG TagCount;
+ ULONG BlockCount;
+ ULONG Reserved[7];
+ PVOID Tags;
+ PVOID Blocks;
+} DEBUG_HEAP_INFORMATION, *PDEBUG_HEAP_INFORMATION;
+typedef struct _DEBUG_LOCK_INFORMATION
+{
+ PVOID Address;
+ USHORT Type;
+ USHORT CreatorBackTraceIndex;
+ ULONG OwnerThreadId;
+ ULONG ActiveCount;
+ ULONG ContentionCount;
+ ULONG EntryCount;
+ ULONG RecursionCount;
+ ULONG NumberOfSharedWaiters;
+ ULONG NumberOfExclusiveWaiters;
+} DEBUG_LOCK_INFORMATION, *PDEBUG_LOCK_INFORMATION;
+typedef struct _RTL_HANDLE
+{
+ struct _RTL_HANDLE *Next; /* pointer to next free handle */
+} RTL_HANDLE, *PRTL_HANDLE;
+
+typedef struct _RTL_HANDLE_TABLE
+{
+ ULONG TableSize; /* maximum number of handles */
+ ULONG HandleSize; /* size of handle in bytes */
+ PRTL_HANDLE Handles; /* pointer to handle array */
+ PRTL_HANDLE Limit; /* limit of pointers */
+ PRTL_HANDLE FirstFree; /* pointer to first free handle */
+ PRTL_HANDLE LastUsed; /* pointer to last allocated handle */
+} RTL_HANDLE_TABLE, *PRTL_HANDLE_TABLE;
+#ifdef READY_FOR_NEW_NTDLL
+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 */
+#endif
+
typedef struct _EXCEPTION_REGISTRATION
{
struct _EXCEPTION_REGISTRATION* prev;
@@ -138,6 +253,19 @@
PRTL_RANGE Range
);
+typedef struct _RTL_RESOURCE
+{
+ RTL_CRITICAL_SECTION Lock;
+ HANDLE SharedSemaphore;
+ ULONG SharedWaiters;
+ HANDLE ExclusiveSemaphore;
+ ULONG ExclusiveWaiters;
+ LONG NumberActive;
+ HANDLE OwningThread;
+ ULONG TimeoutBoost; /* ?? */
+ PVOID DebugInfo; /* ?? */
+} RTL_RESOURCE, *PRTL_RESOURCE;
+
typedef struct _RANGE_LIST_ITERATOR
{
PLIST_ENTRY RangeListHead;
--- trunk/reactos/include/ndk/umfuncs.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/include/ndk/umfuncs.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -0,0 +1,218 @@
+/*
+ * PROJECT: ReactOS Native Headers
+ * FILE: include/ndk/umfuncs.h
+ * PURPOSE: Prototypes for NT Library Functions
+ * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
+ */
+#ifndef _UMFUNCS_H
+#define _UMFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+#include "ldrtypes.h"
+#include "lpctypes.h"
+#include <csrss/csrss.h> /* FIXME: Temporary */
+
+/* PROTOTYPES ****************************************************************/
+
+/*
+ * CSR Functions
+ */
+NTSTATUS
+STDCALL
+CsrClientConnectToServer(VOID);
+
+NTSTATUS
+STDCALL
+CsrClientCallServer(
+ PCSRSS_API_REQUEST Request,
+ PCSRSS_API_REPLY Reply OPTIONAL,
+ ULONG Length,
+ ULONG ReplyLength
+);
+
+NTSTATUS
+STDCALL
+CsrIdentifyAlertableThread(VOID);
+
+NTSTATUS
+STDCALL
+CsrNewThread(VOID);
+
+NTSTATUS
+STDCALL
+CsrSetPriorityClass(
+ HANDLE Process,
+ PULONG PriorityClass
+);
+
+VOID
+STDCALL
+CsrProbeForRead(
+ IN CONST PVOID Address,
+ IN ULONG Length,
+ IN ULONG Alignment
+);
+
+VOID
+STDCALL
+CsrProbeForWrite(
+ IN CONST PVOID Address,
+ IN ULONG Length,
+ IN ULONG Alignment
+);
+
+NTSTATUS
+STDCALL
+CsrCaptureParameterBuffer(
+ PVOID ParameterBuffer,
+ ULONG ParameterBufferSize,
+ PVOID* ClientAddress,
+ PVOID* ServerAddress
+);
+
+NTSTATUS
+STDCALL
+CsrReleaseParameterBuffer(PVOID ClientAddress);
+
+/*
+ * Debug Functions
+ */
+ULONG
+CDECL
+DbgPrint(
+ IN PCH Format,
+ IN ...
+);
+
+VOID
+STDCALL
+DbgBreakPoint(VOID);
+
+NTSTATUS
+STDCALL
+DbgSsInitialize(
+ HANDLE ReplyPort,
+ ULONG Unknown1,
+ ULONG Unknown2,
+ ULONG Unknown3
+);
+
+NTSTATUS
+STDCALL
+DbgUiConnectToDbg(VOID);
+
+NTSTATUS
+STDCALL
+DbgUiContinue(
+ PCLIENT_ID ClientId,
+ ULONG ContinueStatus
+);
+
+NTSTATUS
+STDCALL
+DbgUiWaitStateChange(
+ ULONG Unknown1,
+ ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+DbgUiRemoteBreakin(VOID);
+
+NTSTATUS
+STDCALL
+DbgUiIssueRemoteBreakin(HANDLE Process);
+
+/*
+ * Loader Functions
+ */
+NTSTATUS
+STDCALL
+LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress);
+
+NTSTATUS
+STDCALL
+LdrGetDllHandle(
+ IN PWCHAR Path OPTIONAL,
+ IN ULONG Unknown2,
+ IN PUNICODE_STRING DllName,
+ OUT PVOID *BaseAddress
+);
+
+NTSTATUS
+STDCALL
+LdrFindEntryForAddress(
+ IN PVOID Address,
+ OUT PLDR_DATA_TABLE_ENTRY *Module
+);
+
+NTSTATUS
+STDCALL
+LdrGetProcedureAddress(
+ IN PVOID BaseAddress,
+ IN PANSI_STRING Name,
+ IN ULONG Ordinal,
+ OUT PVOID *ProcedureAddress
+);
+
+VOID
+STDCALL
+LdrInitializeThunk(
+ ULONG Unknown1,
+ ULONG Unknown2,
+ ULONG Unknown3,
+ ULONG Unknown4
+);
+
+NTSTATUS
+STDCALL
+LdrLoadDll(
+ IN PWSTR SearchPath OPTIONAL,
+ IN ULONG LoadFlags,
+ IN PUNICODE_STRING Name,
+ OUT PVOID *BaseAddress OPTIONAL
+);
+
+PIMAGE_BASE_RELOCATION
+STDCALL
+LdrProcessRelocationBlock(
+ IN PVOID Address,
+ IN USHORT Count,
+ IN PUSHORT TypeOffset,
+ IN ULONG_PTR Delta
+);
+
+NTSTATUS
+STDCALL
+LdrQueryImageFileExecutionOptions(
+ IN PUNICODE_STRING SubKey,
+ IN PCWSTR ValueName,
+ IN ULONG ValueSize,
+ OUT PVOID Buffer,
+ IN ULONG BufferSize,
+ OUT PULONG RetunedLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+LdrShutdownProcess(VOID);
+
+NTSTATUS
+STDCALL
+LdrShutdownThread(VOID);
+
+NTSTATUS
+STDCALL
+LdrUnloadDll(IN PVOID BaseAddress);
+
+NTSTATUS
+STDCALL
+LdrVerifyImageMatchesChecksum(
+ IN HANDLE FileHandle,
+ ULONG Unknown1,
+ ULONG Unknown2,
+ ULONG Unknown3
+);
+
+#endif
+/* EOF */
--- trunk/reactos/lib/kernel32/k32.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/lib/kernel32/k32.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -23,7 +23,6 @@
/* FIXME: Clean this sh*t up */
#include <ntdll/base.h>
-#include <ntdll/rtl.h>
#include <ntdll/dbg.h>
#include <ntdll/csr.h>
#include <ntdll/ldr.h>
--- trunk/reactos/lib/ntdll/inc/ntdll.h 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/lib/ntdll/inc/ntdll.h 2005-06-21 02:08:42 UTC (rev 16199)
@@ -13,13 +13,18 @@
#define NTOS_MODE_USER
#include <ndk/ntndk.h>
+/* NTDLL Headers FIXME: These will be gone imminently */
+#include <ntdll/ntdll.h>
+#include <ntdll/ldr.h>
+#include <ntdll/csr.h>
+
+/* Internal NTDLL */
+#include "ntdllp.h"
+
+/* CSRSS Header */
+#include <csrss/csrss.h>
+
/* Helper Macros */
#include <reactos/helper.h>
-/* NTDLL Public Headers. FIXME: Combine/clean these after NDK */
-#include <ntdll/csr.h>
-#include <ntdll/rtl.h>
-#include <ntdll/ldr.h>
-#include <ntdll/ntdll.h>
-
/* EOF */
--- trunk/reactos/subsys/csrss/init.c 2005-06-21 00:23:09 UTC (rev 16198)
+++ trunk/reactos/subsys/csrss/init.c 2005-06-21 02:08:42 UTC (rev 16199)
@@ -14,7 +14,6 @@
#define NTOS_MODE_USER
#include <ndk/ntndk.h>
#include <ntdll/csr.h>
-#include <ntdll/rtl.h>
#include <ntdll/ldr.h>
#include <rosrtl/string.h>
#include <sm/helper.h>