Corrected additional object manager issues pointed by Philip Susi
authorDavid Welch <welch@cwcom.net>
Wed, 22 Dec 1999 14:48:30 +0000 (14:48 +0000)
committerDavid Welch <welch@cwcom.net>
Wed, 22 Dec 1999 14:48:30 +0000 (14:48 +0000)
Began added console i/o code to csrss (not working yet)
Corrected long standing page fault bug (not zeroing allocated page)

svn path=/trunk/; revision=898

29 files changed:
reactos/INSTALL
reactos/Makefile
reactos/NEWS
reactos/drivers/dd/ide/ide.c
reactos/drivers/fs/vfat/blockdev.c
reactos/drivers/fs/vfat/iface.c
reactos/include/csrss/csrss.h [new file with mode: 0644]
reactos/include/ddk/status.h
reactos/install.sh
reactos/lib/ntdll/def/ntdll.def
reactos/lib/ntdll/def/ntdll.edf
reactos/ntoskrnl/io/create.c
reactos/ntoskrnl/io/fs.c
reactos/ntoskrnl/ke/wait.c
reactos/ntoskrnl/ldr/loader.c
reactos/ntoskrnl/mm/i386/page.c
reactos/ntoskrnl/mm/section.c
reactos/ntoskrnl/ob/handle.c
reactos/ntoskrnl/ob/object.c
reactos/ntoskrnl/ps/create.c
reactos/ntoskrnl/ps/process.c
reactos/subsys/csrss/api.h
reactos/subsys/csrss/api/conio.c [new file with mode: 0644]
reactos/subsys/csrss/api/process.c
reactos/subsys/csrss/api/wapi.c [new file with mode: 0644]
reactos/subsys/csrss/csrss.c
reactos/subsys/csrss/init.c
reactos/subsys/csrss/makefile
reactos/subsys/csrss/print.c [new file with mode: 0644]

index ceefb01..7a6d881 100644 (file)
@@ -5,9 +5,9 @@ mingw32 cross compiler running on unix.
 
 2. Building
 
-To build from Windows run 'make -fmakefile.dos'. To build from unix, edit
-rules.mak and change the PREFIX variable to the correct value for your
-cross-compiler, then run 'make'.
+To build from Windows run make. To build from unix, edit rules.mak and change 
+the PREFIX variable to the correct value for your cross-compiler, then run 
+'make'.
 
 3. Installation
 
@@ -17,9 +17,13 @@ structure like the following
 
 make directories C:\reactos,C:\reactos\system,C:\reactos\system\drivers
 
-Copy apps/shell/shell.exe to C:\reactos\system
-Copy services/dd/keyboard/keyboard.sys to C:\reactos\system\drivers
-Copy services/dd/blue/blue.sys to C:\reactos\system\drivers
+Copy apps/shell/shell.exe to C:\reactos\system32
+Copy subsys/smss/smss.exe to C:\reactos\system32
+Copy services/dd/keyboard/keyboard.sys to C:\reactos\system32\drivers
+Copy services/dd/blue/blue.sys to C:\reactos\system32\drivers
+Copy lib/ntdll/ntdll.dll to C:\reactos\system32
+Copy lib/kernel32/kernel32.dll to C:\reactos\system32
+Copy lib/crtdll/crtdll.dll to C:\reactos\system32
 
 The system can only be started from DOS. Copy the following files,
 services/dd/ide/ide.sys, services/fs/vfat/vfatfsd.sys and
index d2b0a37..ac6b279 100644 (file)
@@ -41,7 +41,7 @@ FS_DRIVERS = vfat
 # FS_DRIVERS = minix ext2 template
 KERNEL_SERVICES = $(DEVICE_DRIVERS) $(FS_DRIVERS)
 
-APPS = args hello shell test cat bench apc shm lpc thread
+APPS = args hello shell test cat bench apc shm lpc thread event
 # APPS = cmd
 
 all: buildno $(COMPONENTS) $(DLLS) $(SUBSYS) $(LOADERS) $(KERNEL_SERVICES) $(APPS)
index deadae1..65a0f1e 100644 (file)
@@ -1,7 +1,6 @@
 0.0.14:      Converted to PE format
              All system libraries are now dlls
              
-
 0.0.13:      Mostly bugfixes (I think)
 
 0.0.12:      Added support for multiple processes (not really tested)
index a76e3f9..7a1d6f8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ide.c,v 1.23 1999/12/04 20:58:36 ea Exp $
+/* $Id: ide.c,v 1.24 1999/12/22 14:48:27 dwelch Exp $
  *
  *  IDE.C - IDE Disk driver 
  *     written by Rex Jolliff
@@ -1230,7 +1230,8 @@ DPRINT("AdjOffset:%ld:%ld + Length:%ld = AdjExtent:%ld:%ld\n",
   InsertKeyLI = RtlLargeIntegerShiftRight(IrpStack->Parameters.Read.ByteOffset, 9); 
   IrpInsertKey = InsertKeyLI.u.LowPart;
   IoStartPacket(DeviceExtension->DeviceObject, Irp, &IrpInsertKey, NULL);
-
+   
+   DPRINT("Returning STATUS_PENDING\n");
   return  STATUS_PENDING;
 }
 
index b71d113..6795c4b 100644 (file)
@@ -66,7 +66,9 @@ BOOLEAN VFATReadSectors(IN PDEVICE_OBJECT pDeviceObject,
                           irp);
 
     DPRINT("Waiting for IO Operation...\n");
-    if (status == STATUS_PENDING) {
+    if (status == STATUS_PENDING) 
+     {
+       DPRINT("Operation pending\n");
         KeWaitForSingleObject(&event,
                               Suspended,
                               KernelMode,
index 1428bae..4a2c8b4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: iface.c,v 1.39 1999/12/11 21:14:49 dwelch Exp $
+/* $Id: iface.c,v 1.40 1999/12/22 14:48:28 dwelch Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -49,7 +49,8 @@ BOOLEAN FsdHasFileSystem(PDEVICE_OBJECT DeviceToMount)
    Boot = ExAllocatePool(NonPagedPool,512);
 
    VFATReadSectors(DeviceToMount, 0, 1, (UCHAR *)Boot);
-
+   
+   DPRINT("Boot->SysType %.5s\n", Boot->SysType);
    if (strncmp(Boot->SysType,"FAT12",5)==0 ||
        strncmp(Boot->SysType,"FAT16",5)==0 ||
        strncmp(((struct _BootSector32 *)(Boot))->SysType,"FAT32",5)==0)
@@ -174,6 +175,7 @@ NTSTATUS FsdFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
 
    if (FsdHasFileSystem(DeviceToMount))
      {
+       DPRINT("VFAT: Recognized volume\n");
        Status = FsdMount(DeviceToMount);
      }
    else
@@ -181,7 +183,6 @@ NTSTATUS FsdFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
         DPRINT("VFAT: Unrecognized Volume\n");
        Status = STATUS_UNRECOGNIZED_VOLUME;
      }
-   DPRINT("VFAT File system successfully mounted\n");
 
    Irp->IoStatus.Status = Status;
    Irp->IoStatus.Information = 0;
diff --git a/reactos/include/csrss/csrss.h b/reactos/include/csrss/csrss.h
new file mode 100644 (file)
index 0000000..e2d4bba
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef __INCLUDE_CSRSS_CSRSS_H
+#define __INCLUDE_CSRSS_CSRSS_H
+
+#define CSRSS_CREATE_PROCESS            (0x1)
+#define CSRSS_TERMINATE_PROCESS         (0x2)
+#define CSRSS_WRITE_CONSOLE             (0x3)
+#define CSRSS_READ_CONSOLE              (0x4)
+#define CSRSS_ALLOC_CONSO               (0x5)
+#define CSRSS_FREE_CONSOLE              (0x6)
+#define CSRSS_CONNECT_PROCESS           (0x7)
+
+typedef struct
+{
+   ULONG Type;
+   BYTE Data[0x12C];
+} CSRSS_API_REQUEST, *PCSRSS_API_REQUEST;
+
+typedef struct
+{
+   NTSTATUS Status;
+   ULONG Count;
+   HANDLE Handle;
+} CSRSS_API_REPLY, *PCSRSS_API_REPLY;
+
+#endif
index 62689f2..882297b 100644 (file)
 #define STATUS_SEMAPHORE_LIMIT_EXCEEDED        (0xc0000047)
 #define STATUS_PORT_ALREADY_SET                (0xc0000048)
 
-enum
-{
- STATUS_SECTION_NOT_IMAGE,
- STATUS_SUSPEND_COUNT_EXCEEDED,
- STATUS_THREAD_IS_TERMINATING,
- STATUS_BAD_WORKING_SET_LIMIT,
- STATUS_INCOMPATIBLE_FILE_MAP,
- STATUS_SECTION_PROTECTION,
- STATUS_EAS_NOT_SUPPORTED,
- STATUS_EA_TOO_LARGE,
- STATUS_NONEXISTENT_EA_ENTRY,
- STATUS_NO_EAS_ON_FILE,
- STATUS_EA_CORRUPT_ERROR,
- STATUS_FILE_LOCK_CONFLICT,
- STATUS_LOCK_NOT_GRANTED,
- STATUS_DELETE_PENDING,
- STATUS_CTL_FILE_NOT_SUPPORTED,
- STATUS_UNKNOWN_REVISION,
- STATUS_REVISION_MISMATCH,
- STATUS_INVALID_OWNER,
- STATUS_INVALID_PRIMARY_GROUP,
- STATUS_NO_IMPERSONATION_TOKEN,
- STATUS_CANT_DISABLE_MANDATORY,
- STATUS_NO_LOGON_SERVERS,
- STATUS_NO_SUCH_LOGON_SESSION,
- STATUS_NO_SUCH_PRIVILEGE,
- STATUS_PRIVILEGE_NOT_HELD,
- STATUS_INVALID_ACCOUNT_NAME,
- STATUS_USER_EXISTS,
- STATUS_NO_SUCH_USER,
- STATUS_GROUP_EXISTS,
- STATUS_NO_SUCH_GROUP,
- STATUS_MEMBER_IN_GROUP,
- STATUS_MEMBER_NOT_IN_GROUP,
- STATUS_LAST_ADMIN,
- STATUS_WRONG_PASSWORD,
- STATUS_ILL_FORMED_PASSWORD,
- STATUS_PASSWORD_RESTRICTION,
- STATUS_LOGON_FAILURE,
- STATUS_ACCOUNT_RESTRICTION,
- STATUS_INVALID_LOGON_HOURS,
- STATUS_INVALID_WORKSTATION,
- STATUS_PASSWORD_EXPIRED,
- STATUS_ACCOUNT_DISABLED,
- STATUS_NONE_MAPPED,
- STATUS_TOO_MANY_LUIDS_REQUESTED,
- STATUS_LUIDS_EXHAUSTED,
- STATUS_INVALID_SUB_AUTHORITY,
- STATUS_INVALID_ACL,
- STATUS_INVALID_SID,
- STATUS_INVALID_SECURITY_DESCR,
- STATUS_PROCEDURE_NOT_FOUND,
- STATUS_INVALID_IMAGE_FORMAT,
- STATUS_NO_TOKEN,
- STATUS_BAD_INHERITANCE_ACL,
- STATUS_RANGE_NOT_LOCKED,
- STATUS_DISK_FULL,
- STATUS_SERVER_DISABLED,
- STATUS_SERVER_NOT_DISABLED,
- STATUS_TOO_MANY_GUIDS_REQUESTED,
- STATUS_GUIDS_EXHAUSTED,
- STATUS_INVALID_ID_AUTHORITY,
- STATUS_AGENTS_EXHAUSTED,
- STATUS_INVALID_VOLUME_LABEL,
- STATUS_SECTION_NOT_EXTENDED,
- STATUS_NOT_MAPPED_DATA,
- STATUS_RESOURCE_DATA_NOT_FOUND,
- STATUS_RESOURCE_TYPE_NOT_FOUND,
- STATUS_RESOURCE_NAME_NOT_FOUND,
- STATUS_ARRAY_BOUNDS_EXCEEDED,
- STATUS_FLOAT_DENORMAL_OPERAND,
- STATUS_FLOAT_DIVIDE_BY_ZERO,
- STATUS_FLOAT_INEXACT_RESULT,
- STATUS_FLOAT_INVALID_OPERATION,
- STATUS_FLOAT_OVERFLOW,
- STATUS_FLOAT_STACK_CHECK,
- STATUS_FLOAT_UNDERFLOW,
- STATUS_INTEGER_DIVIDE_BY_ZERO,
- STATUS_INTEGER_OVERFLOW,
- STATUS_PRIVILEGED_INSTRUCTION,
- STATUS_TOO_MANY_PAGING_FILES,
- STATUS_FILE_INVALID,
- STATUS_ALLOTTED_SPACE_EXCEEDED,
- STATUS_INSUFFICIENT_RESOURCES,
- STATUS_DFS_EXIT_PATH_FOUND,
- STATUS_DEVICE_DATA_ERROR,
- STATUS_DEVICE_NOT_CONNECTED,
- STATUS_DEVICE_POWER_FAILURE,
- STATUS_FREE_VM_NOT_AT_BASE,
- STATUS_MEMORY_NOT_ALLOCATED,
- STATUS_WORKING_SET_QUOTA,
- STATUS_MEDIA_WRITE_PROTECTED,
- STATUS_DEVICE_NOT_READY,
- STATUS_INVALID_GROUP_ATTRIBUTES,
- STATUS_BAD_IMPERSONATION_LEVEL,
- STATUS_CANT_OPEN_ANONYMOUS,
- STATUS_BAD_VALIDATION_CLASS,
- STATUS_BAD_TOKEN_TYPE,
- STATUS_BAD_MASTER_BOOT_RECORD,
- STATUS_INSTRUCTION_MISALIGNMENT,
- STATUS_INSTANCE_NOT_AVAILABLE,
- STATUS_PIPE_NOT_AVAILABLE,
- STATUS_INVALID_PIPE_STATE,
- STATUS_PIPE_BUSY,
- STATUS_ILLEGAL_FUNCTION,
- STATUS_PIPE_DISCONNECTED,
- STATUS_PIPE_CLOSING,
- STATUS_PIPE_CONNECTED,
- STATUS_PIPE_LISTENING,
- STATUS_INVALID_READ_MODE,
- STATUS_IO_TIMEOUT,
- STATUS_FILE_FORCED_CLOSED,
- STATUS_PROFILING_NOT_STARTED,
- STATUS_PROFILING_NOT_STOPPED,
- STATUS_COULD_NOT_INTERPRET,
- STATUS_FILE_IS_A_DIRECTORY,
- STATUS_NOT_SUPPORTED,
- STATUS_REMOTE_NOT_LISTENING,
- STATUS_DUPLICATE_NAME,
- STATUS_BAD_NETWORK_PATH,
- STATUS_NETWORK_BUSY,
- STATUS_DEVICE_DOES_NOT_EXIST,
- STATUS_TOO_MANY_COMMANDS,
- STATUS_ADAPTER_HARDWARE_ERROR,
- STATUS_INVALID_NETWORK_RESPONSE,
- STATUS_UNEXPECTED_NETWORK_ERROR,
- STATUS_BAD_REMOTE_ADAPTER,
- STATUS_PRINT_QUEUE_FULL,
- STATUS_NO_SPOOL_SPACE,
- STATUS_PRINT_CANCELLED,
- STATUS_NETWORK_NAME_DELETED,
- STATUS_NETWORK_ACCESS_DENIED,
- STATUS_BAD_DEVICE_TYPE,
- STATUS_BAD_NETWORK_NAME,
- STATUS_TOO_MANY_NAMES,
- STATUS_TOO_MANY_SESSIONS,
- STATUS_SHARING_PAUSED,
- STATUS_REQUEST_NOT_ACCEPTED,
- STATUS_REDIRECTOR_PAUSED,
- STATUS_NET_WRITE_FAULT,
- STATUS_PROFILING_AT_LIMIT,
- STATUS_NOT_SAME_DEVICE,
- STATUS_FILE_RENAMED,
- STATUS_VIRTUAL_CIRCUIT_CLOSED,
- STATUS_NO_SECURITY_ON_OBJECT,
- STATUS_CANT_WAIT,
- STATUS_PIPE_EMPTY,
- STATUS_CANT_ACCESS_DOMAIN_INFO,
- STATUS_CANT_TERMINATE_SELF,
- STATUS_INVALID_SERVER_STATE,
- STATUS_INVALID_DOMAIN_STATE,
- STATUS_INVALID_DOMAIN_ROLE,
- STATUS_NO_SUCH_DOMAIN,
- STATUS_DOMAIN_EXISTS,
- STATUS_DOMAIN_LIMIT_EXCEEDED,
- STATUS_OPLOCK_NOT_GRANTED,
- STATUS_INVALID_OPLOCK_PROTOCOL,
- STATUS_INTERNAL_DB_CORRUPTION,
- STATUS_INTERNAL_ERROR,
- STATUS_GENERIC_NOT_MAPPED,
- STATUS_BAD_DESCRIPTOR_FORMAT,
- STATUS_INVALID_USER_BUFFER,
- STATUS_UNEXPECTED_IO_ERROR,
- STATUS_UNEXPECTED_MM_CREATE_ERR,
- STATUS_UNEXPECTED_MM_MAP_ERROR,
- STATUS_UNEXPECTED_MM_EXTEND_ERR,
- STATUS_NOT_LOGON_PROCESS,
- STATUS_LOGON_SESSION_EXISTS,
- STATUS_INVALID_PARAMETER_1,
- STATUS_INVALID_PARAMETER_2,
- STATUS_INVALID_PARAMETER_3,
- STATUS_INVALID_PARAMETER_4,
- STATUS_INVALID_PARAMETER_5,
- STATUS_INVALID_PARAMETER_6,
- STATUS_INVALID_PARAMETER_7,
- STATUS_INVALID_PARAMETER_8,
- STATUS_INVALID_PARAMETER_9,
- STATUS_INVALID_PARAMETER_10,
- STATUS_INVALID_PARAMETER_11,
- STATUS_INVALID_PARAMETER_12,
- STATUS_REDIRECTOR_NOT_STARTED,
- STATUS_REDIRECTOR_STARTED,
- STATUS_STACK_OVERFLOW,
- STATUS_NO_SUCH_PACKAGE,
- STATUS_BAD_FUNCTION_TABLE,
- STATUS_VARIABLE_NOT_FOUND,
- STATUS_DIRECTORY_NOT_EMPTY,
- STATUS_FILE_CORRUPT_ERROR,
- STATUS_NOT_A_DIRECTORY,
- STATUS_BAD_LOGON_SESSION_STATE,
- STATUS_LOGON_SESSION_COLLISION,
- STATUS_NAME_TOO_LONG,
- STATUS_FILES_OPEN,
- STATUS_CONNECTION_IN_USE,
- STATUS_MESSAGE_NOT_FOUND,
- STATUS_PROCESS_IS_TERMINATING,
- STATUS_INVALID_LOGON_TYPE,
- STATUS_NO_GUID_TRANSLATION,
- STATUS_CANNOT_IMPERSONATE,
- STATUS_IMAGE_ALREADY_LOADED,
- STATUS_ABIOS_NOT_PRESENT,
- STATUS_ABIOS_LID_NOT_EXIST,
- STATUS_ABIOS_LID_ALREADY_OWNED,
- STATUS_ABIOS_NOT_LID_OWNER,
- STATUS_ABIOS_INVALID_COMMAND,
- STATUS_ABIOS_INVALID_LID,
- STATUS_ABIOS_SELECTOR_NOT_AVAILABLE,
- STATUS_ABIOS_INVALID_SELECTOR,
- STATUS_NO_LDT,
- STATUS_INVALID_LDT_SIZE,
- STATUS_INVALID_LDT_OFFSET,
- STATUS_INVALID_LDT_DESCRIPTOR,
- STATUS_INVALID_IMAGE_NE_FORMAT,
- STATUS_RXACT_INVALID_STATE,
- STATUS_RXACT_COMMIT_FAILURE,
- STATUS_MAPPED_FILE_SIZE_ZERO,
- STATUS_TOO_MANY_OPENED_FILES,
- STATUS_CANCELLED,
- STATUS_CANNOT_DELETE,
- STATUS_INVALID_COMPUTER_NAME,
- STATUS_FILE_DELETED,
- STATUS_SPECIAL_ACCOUNT,
- STATUS_SPECIAL_GROUP,
- STATUS_SPECIAL_USER,
- STATUS_MEMBERS_PRIMARY_GROUP,
- STATUS_FILE_CLOSED,
- STATUS_TOO_MANY_THREADS,
- STATUS_THREAD_NOT_IN_PROCESS,
- STATUS_TOKEN_ALREADY_IN_USE,
- STATUS_PAGEFILE_QUOTA_EXCEEDED,
- STATUS_COMMITMENT_LIMIT,
- STATUS_INVALID_IMAGE_LE_FORMAT,
- STATUS_INVALID_IMAGE_NOT_MZ,
- STATUS_INVALID_IMAGE_PROTECT,
- STATUS_INVALID_IMAGE_WIN_16,
- STATUS_LOGON_SERVER_CONFLICT,
- STATUS_TIME_DIFFERENCE_AT_DC,
- STATUS_SYNCHRONIZATION_REQUIRED,
- STATUS_DLL_NOT_FOUND,
- STATUS_OPEN_FAILED,
- STATUS_IO_PRIVILEGE_FAILED,
- STATUS_ORDINAL_NOT_FOUND,
- STATUS_ENTRYPOINT_NOT_FOUND,
- STATUS_CONTROL_C_EXIT,
- STATUS_LOCAL_DISCONNECT,
- STATUS_REMOTE_DISCONNECT,
- STATUS_REMOTE_RESOURCES,
- STATUS_LINK_FAILED,
- STATUS_LINK_TIMEOUT,
- STATUS_INVALID_CONNECTION,
- STATUS_INVALID_ADDRESS,
- STATUS_DLL_INIT_FAILED,
- STATUS_MISSING_SYSTEMFILE,
- STATUS_UNHANDLED_EXCEPTION,
- STATUS_APP_INIT_FAILURE,
- STATUS_PAGEFILE_CREATE_FAILED,
- STATUS_NO_PAGEFILE,
- STATUS_INVALID_LEVEL,
- STATUS_WRONG_PASSWORD_CORE,
- STATUS_ILLEGAL_FLOAT_CONTEXT,
- STATUS_PIPE_BROKEN,
- STATUS_REGISTRY_CORRUPT,
- STATUS_REGISTRY_IO_FAILED,
- STATUS_NO_EVENT_PAIR,
- STATUS_UNRECOGNIZED_VOLUME,
- STATUS_SERIAL_NO_DEVICE_INITED,
- STATUS_NO_SUCH_ALIAS,
- STATUS_MEMBER_NOT_IN_ALIAS,
- STATUS_MEMBER_IN_ALIAS,
- STATUS_ALIAS_EXISTS,
- STATUS_LOGON_NOT_GRANTED,
- STATUS_TOO_MANY_SECRETS,
- STATUS_SECRET_TOO_LONG,
- STATUS_INTERNAL_DB_ERROR,
- STATUS_FULLSCREEN_MODE,
- STATUS_TOO_MANY_CONTEXT_IDS,
- STATUS_LOGON_TYPE_NOT_GRANTED,
- STATUS_NOT_REGISTRY_FILE,
- STATUS_NT_CROSS_ENCRYPTION_REQUIRED,
- STATUS_DOMAIN_CTRLR_CONFIG_ERROR,
- STATUS_FT_MISSING_MEMBER,
- STATUS_ILL_FORMED_SERVICE_ENTRY,
- STATUS_ILLEGAL_CHARACTER,
- STATUS_UNMAPPABLE_CHARACTER,
- STATUS_UNDEFINED_CHARACTER,
- STATUS_FLOPPY_VOLUME,
- STATUS_FLOPPY_ID_MARK_NOT_FOUND,
- STATUS_FLOPPY_WRONG_CYLINDER,
- STATUS_FLOPPY_UNKNOWN_ERROR,
- STATUS_FLOPPY_BAD_REGISTERS,
- STATUS_DISK_RECALIBRATE_FAILED,
- STATUS_DISK_OPERATION_FAILED,
- STATUS_DISK_RESET_FAILED,
- STATUS_SHARED_IRQ_BUSY,
- STATUS_FT_ORPHANING,
- STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT,
-     };
+#define STATUS_SECTION_NOT_IMAGE               (0xc0000049)
+#define STATUS_SUSPEND_COUNT_EXCEEDED          (0xc000004a)
+#define STATUS_THREAD_IS_TERMINATING           (0xc000004b)
+#define STATUS_BAD_WORKING_SET_LIMIT           (0xc000004c)
+#define STATUS_INCOMPATIBLE_FILE_MAP           (0xc000004d)
+#define STATUS_SECTION_PROTECTION              (0xc000004e)
+#define STATUS_EAS_NOT_SUPPORTED               (0xc000004f)
+#define STATUS_EA_TOO_LARGE                    (0xc0000050)
+#define STATUS_NONEXISTENT_EA_ENTRY            (0xc0000051)
+#define STATUS_NO_EAS_ON_FILE                  (0xc0000052)
+#define STATUS_EA_CORRUPT_ERROR                (0xc0000053)
+#define STATUS_FILE_LOCK_CONFLICT              (0xc0000054)
+#define STATUS_LOCK_NOT_GRANTED                (0xc0000055)
+#define STATUS_DELETE_PENDING                  (0xc0000056)
+#define STATUS_CTL_FILE_NOT_SUPPORTED          (0xc0000057)
+#define STATUS_UNKNOWN_REVISION                (0xc0000058)
+#define STATUS_REVISION_MISMATCH               (0xc0000059)
+#define STATUS_INVALID_OWNER                   (0xc000005a)
+#define STATUS_INVALID_PRIMARY_GROUP           (0xc000005b)
+#define STATUS_NO_IMPERSONATION_TOKEN          (0xc000005c)
+#define STATUS_CANT_DISABLE_MANDATORY          (0xc000005d)
+#define STATUS_NO_LOGON_SERVERS                (0xc000005e)
+#define STATUS_NO_SUCH_LOGON_SESSION           (0xc000005f)
+#define STATUS_NO_SUCH_PRIVILEGE               (0xc0000060)
+#define STATUS_PRIVILEGE_NOT_HELD              (0xc0000061)
+#define STATUS_INVALID_ACCOUNT_NAME            (0xc0000062)
+#define STATUS_USER_EXISTS                     (0xc0000063)
+#define STATUS_NO_SUCH_USER                    (0xc0000064)
+#define STATUS_GROUP_EXISTS                    (0xc0000065)
+#define STATUS_NO_SUCH_GROUP                   (0xc0000066)
+#define STATUS_MEMBER_IN_GROUP                 (0xc0000067)
+#define STATUS_MEMBER_NOT_IN_GROUP             (0xc0000068)
+#define STATUS_LAST_ADMIN                      (0xc0000069)
+#define STATUS_WRONG_PASSWORD                  (0xc000006a)
+#define STATUS_ILL_FORMED_PASSWORD             (0xc000006b)
+#define STATUS_PASSWORD_RESTRICTION            (0xc000006c)
+#define STATUS_LOGON_FAILURE                   (0xc000006d)
+#define STATUS_ACCOUNT_RESTRICTION             (0xc000006e)
+#define STATUS_INVALID_LOGON_HOURS             (0xc000006f)
+#define STATUS_INVALID_WORKSTATION             (0xc0000070)
+#define STATUS_PASSWORD_EXPIRED                (0xc0000071)
+#define STATUS_ACCOUNT_DISABLED                (0xc0000072)
+#define STATUS_NONE_MAPPED                     (0xc0000073)
+#define STATUS_TOO_MANY_LUIDS_REQUESTED        (0xc0000074)
+#define STATUS_LUIDS_EXHAUSTED                 (0xc0000075)
+#define STATUS_INVALID_SUB_AUTHORITY           (0xc0000076)
+#define STATUS_INVALID_ACL                     (0xc0000077)
+#define STATUS_INVALID_SID                     (0xc0000078)
+#define STATUS_INVALID_SECURITY_DESCR          (0xc0000079)
+#define STATUS_PROCEDURE_NOT_FOUND             (0xc000007a)
+#define STATUS_INVALID_IMAGE_FORMAT            (0xc000007b)
+#define STATUS_NO_TOKEN                        (0xc000007c)
+#define STATUS_BAD_INHERITANCE_ACL             (0xc000007d)
+#define STATUS_RANGE_NOT_LOCKED                (0xc000007e)
+#define STATUS_DISK_FULL                       (0xc000007f)
+#define STATUS_SERVER_DISABLED                 (0xc0000080)
+#define STATUS_SERVER_NOT_DISABLED             (0xc0000081)
+#define STATUS_TOO_MANY_GUIDS_REQUESTED        (0xc0000082)
+#define STATUS_GUIDS_EXHAUSTED                 (0xc0000083)
+#define STATUS_INVALID_ID_AUTHORITY            (0xc0000084)
+#define STATUS_AGENTS_EXHAUSTED                (0xc0000085)
+#define STATUS_INVALID_VOLUME_LABEL            (0xc0000086)
+#define STATUS_SECTION_NOT_EXTENDED            (0xc0000087)
+#define STATUS_NOT_MAPPED_DATA                 (0xc0000088)
+#define STATUS_RESOURCE_DATA_NOT_FOUND         (0xc0000089)
+#define STATUS_RESOURCE_TYPE_NOT_FOUND         (0xc000008a)
+#define STATUS_RESOURCE_NAME_NOT_FOUND         (0xc000008b)
+#define STATUS_ARRAY_BOUNDS_EXCEEDED           (0xc000008c)
+#define STATUS_FLOAT_DENORMAL_OPERAND          (0xc000008d)
+#define STATUS_FLOAT_DIVIDE_BY_ZERO            (0xc000008e)
+#define STATUS_FLOAT_INEXACT_RESULT            (0xc000008f)
+#define STATUS_FLOAT_INVALID_OPERATION         (0xc0000090)
+#define STATUS_FLOAT_OVERFLOW                  (0xc0000091)
+#define STATUS_FLOAT_STACK_CHECK               (0xc0000092)
+#define STATUS_FLOAT_UNDERFLOW                 (0xc0000093)
+#define STATUS_INTEGER_DIVIDE_BY_ZERO          (0xc0000094)
+#define STATUS_INTEGER_OVERFLOW                (0xc0000095)
+#define STATUS_PRIVILEGED_INSTRUCTION          (0xc0000096)
+#define STATUS_TOO_MANY_PAGING_FILES           (0xc0000097)
+#define STATUS_FILE_INVALID                    (0xc0000098)
+#define STATUS_ALLOTTED_SPACE_EXCEEDED         (0xc0000099)
+#define STATUS_INSUFFICIENT_RESOURCES          (0xc000009a)
+#define STATUS_DFS_EXIT_PATH_FOUND             (0xc000009b)
+#define STATUS_DEVICE_DATA_ERROR               (0xc000009c)
+#define STATUS_DEVICE_NOT_CONNECTED            (0xc000009d)
+#define STATUS_DEVICE_POWER_FAILURE            (0xc000009e)
+#define STATUS_FREE_VM_NOT_AT_BASE             (0xc000009f)
+#define STATUS_MEMORY_NOT_ALLOCATED            (0xc0000100)
+#define STATUS_WORKING_SET_QUOTA               (0xc0000101)
+#define STATUS_MEDIA_WRITE_PROTECTED           (0xc0000102)
+#define STATUS_DEVICE_NOT_READY                (0xc0000103)
+#define STATUS_INVALID_GROUP_ATTRIBUTES        (0xc0000104)
+#define STATUS_BAD_IMPERSONATION_LEVEL         (0xc0000105)
+#define STATUS_CANT_OPEN_ANONYMOUS             (0xc0000106)
+#define STATUS_BAD_VALIDATION_CLASS            (0xc0000107)
+#define STATUS_BAD_TOKEN_TYPE                  (0xc0000108)
+#define STATUS_BAD_MASTER_BOOT_RECORD          (0xc0000109)
+#define STATUS_INSTRUCTION_MISALIGNMENT        (0xc000010a)
+#define STATUS_INSTANCE_NOT_AVAILABLE          (0xc000010b)
+#define STATUS_PIPE_NOT_AVAILABLE              (0xc000010c)
+#define STATUS_INVALID_PIPE_STATE              (0xc000010d)
+#define STATUS_PIPE_BUSY                       (0xc000010e)
+#define STATUS_ILLEGAL_FUNCTION                (0xc000010f)
+#define STATUS_PIPE_DISCONNECTED               (0xc0000110)
+#define STATUS_PIPE_CLOSING                    (0xc0000111)
+#define STATUS_PIPE_CONNECTED                  (0xc0000112)
+#define STATUS_PIPE_LISTENING                  (0xc0000113)
+#define STATUS_INVALID_READ_MODE               (0xc0000114)
+#define STATUS_IO_TIMEOUT                      (0xc0000115)
+#define STATUS_FILE_FORCED_CLOSED              (0xc0000116)
+#define STATUS_PROFILING_NOT_STARTED           (0xc0000117)
+#define STATUS_PROFILING_NOT_STOPPED           (0xc0000118)
+#define STATUS_COULD_NOT_INTERPRET             (0xc0000119)
+#define STATUS_FILE_IS_A_DIRECTORY             (0xc000011a)
+#define STATUS_NOT_SUPPORTED                   (0xc000011b)
+#define STATUS_REMOTE_NOT_LISTENING            (0xc000011c)
+#define STATUS_DUPLICATE_NAME                  (0xc000011d)
+#define STATUS_BAD_NETWORK_PATH                (0xc000011e)
+#define STATUS_NETWORK_BUSY                    (0xc000011f)
+#define STATUS_DEVICE_DOES_NOT_EXIST           (0xc0000120)
+#define STATUS_TOO_MANY_COMMANDS               (0xc0000121)
+#define STATUS_ADAPTER_HARDWARE_ERROR          (0xc0000122)
+#define STATUS_INVALID_NETWORK_RESPONSE        (0xc0000123)
+#define STATUS_UNEXPECTED_NETWORK_ERROR        (0xc0000124)
+#define STATUS_BAD_REMOTE_ADAPTER              (0xc0000125)
+#define STATUS_PRINT_QUEUE_FULL                (0xc0000126)
+#define STATUS_NO_SPOOL_SPACE                  (0xc0000127)
+#define STATUS_PRINT_CANCELLED                 (0xc0000128)
+#define STATUS_NETWORK_NAME_DELETED            (0xc0000129)
+#define STATUS_NETWORK_ACCESS_DENIED           (0xc000012a)
+#define STATUS_BAD_DEVICE_TYPE                 (0xc000012b)
+#define STATUS_BAD_NETWORK_NAME                (0xc000012c)
+#define STATUS_TOO_MANY_NAMES                  (0xc000012d)
+#define STATUS_TOO_MANY_SESSIONS               (0xc000012e)
+#define STATUS_SHARING_PAUSED                  (0xc000012f)
+#define STATUS_REQUEST_NOT_ACCEPTED            (0xc0000130)
+#define STATUS_REDIRECTOR_PAUSED               (0xc0000131)
+#define STATUS_NET_WRITE_FAULT                 (0xc0000132)
+#define STATUS_PROFILING_AT_LIMIT              (0xc0000133)
+#define STATUS_NOT_SAME_DEVICE                 (0xc0000134)
+#define STATUS_FILE_RENAMED                    (0xc0000135)
+#define STATUS_VIRTUAL_CIRCUIT_CLOSED          (0xc0000136)
+#define STATUS_NO_SECURITY_ON_OBJECT           (0xc0000137)
+#define STATUS_CANT_WAIT                       (0xc0000138)
+#define STATUS_PIPE_EMPTY                      (0xc0000139)
+#define STATUS_CANT_ACCESS_DOMAIN_INFO         (0xc000013a)
+#define STATUS_CANT_TERMINATE_SELF             (0xc000013b)
+#define STATUS_INVALID_SERVER_STATE            (0xc000013c)
+#define STATUS_INVALID_DOMAIN_STATE            (0xc000013d)
+#define STATUS_INVALID_DOMAIN_ROLE             (0xc000013e)
+#define STATUS_NO_SUCH_DOMAIN                  (0xc000013f)
+#define STATUS_DOMAIN_EXISTS                   (0xc0000140)
+#define STATUS_DOMAIN_LIMIT_EXCEEDED           (0xc0000141)
+#define STATUS_OPLOCK_NOT_GRANTED              (0xc0000142)
+#define STATUS_INVALID_OPLOCK_PROTOCOL         (0xc0000143)
+#define STATUS_INTERNAL_DB_CORRUPTION          (0xc0000144)
+#define STATUS_INTERNAL_ERROR                  (0xc0000145)
+#define STATUS_GENERIC_NOT_MAPPED              (0xc0000146)
+#define STATUS_BAD_DESCRIPTOR_FORMAT           (0xc0000147)
+#define STATUS_INVALID_USER_BUFFER             (0xc0000148)
+#define STATUS_UNEXPECTED_IO_ERROR             (0xc0000149)
+#define STATUS_UNEXPECTED_MM_CREATE_ERR        (0xc000014a)
+#define STATUS_UNEXPECTED_MM_MAP_ERROR         (0xc000014b)
+#define STATUS_UNEXPECTED_MM_EXTEND_ERR        (0xc000014c)
+#define STATUS_NOT_LOGON_PROCESS               (0xc000014d)
+#define STATUS_LOGON_SESSION_EXISTS            (0xc000014e)
+#define STATUS_INVALID_PARAMETER_1             (0xc000014f)
+#define STATUS_INVALID_PARAMETER_2             (0xc0000150)
+#define STATUS_INVALID_PARAMETER_3             (0xc0000151)
+#define STATUS_INVALID_PARAMETER_4             (0xc0000152)
+#define STATUS_INVALID_PARAMETER_5             (0xc0000153)
+#define STATUS_INVALID_PARAMETER_6             (0xc0000154)
+#define STATUS_INVALID_PARAMETER_7             (0xc0000155)
+#define STATUS_INVALID_PARAMETER_8             (0xc0000156)
+#define STATUS_INVALID_PARAMETER_9             (0xc0000157)
+#define STATUS_INVALID_PARAMETER_10            (0xc0000158)
+#define STATUS_INVALID_PARAMETER_11            (0xc0000159)
+#define STATUS_INVALID_PARAMETER_12            (0xc000015a)
+#define STATUS_REDIRECTOR_NOT_STARTED          (0xc000015b)
+#define STATUS_REDIRECTOR_STARTED              (0xc000015c)
+#define STATUS_STACK_OVERFLOW                  (0xc000015d)
+#define STATUS_NO_SUCH_PACKAGE                 (0xc000015e)
+#define STATUS_BAD_FUNCTION_TABLE              (0xc000015f)
+#define STATUS_VARIABLE_NOT_FOUND              (0xc0000160)
+#define STATUS_DIRECTORY_NOT_EMPTY             (0xc0000161)
+#define STATUS_FILE_CORRUPT_ERROR              (0xc0000162)
+#define STATUS_NOT_A_DIRECTORY                 (0xc0000163)
+#define STATUS_BAD_LOGON_SESSION_STATE         (0xc0000164)
+#define STATUS_LOGON_SESSION_COLLISION         (0xc0000165)
+#define STATUS_NAME_TOO_LONG                   (0xc0000166)
+#define STATUS_FILES_OPEN                      (0xc0000167)
+#define STATUS_CONNECTION_IN_USE               (0xc0000168)
+#define STATUS_MESSAGE_NOT_FOUND               (0xc0000169)
+#define STATUS_PROCESS_IS_TERMINATING          (0xc000016a)
+#define STATUS_INVALID_LOGON_TYPE              (0xc000016b)
+#define STATUS_NO_GUID_TRANSLATION             (0xc000016c)
+#define STATUS_CANNOT_IMPERSONATE              (0xc000016d)
+#define STATUS_IMAGE_ALREADY_LOADED            (0xc000016e)
+#define STATUS_ABIOS_NOT_PRESENT               (0xc000016f)
+#define STATUS_ABIOS_LID_NOT_EXIST             (0xc0000170)
+#define STATUS_ABIOS_LID_ALREADY_OWNED         (0xc0000171)
+#define STATUS_ABIOS_NOT_LID_OWNER             (0xc0000172)
+#define STATUS_ABIOS_INVALID_COMMAND           (0xc0000173)
+#define STATUS_ABIOS_INVALID_LID               (0xc0000174)
+#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE    (0xc0000175)
+#define STATUS_ABIOS_INVALID_SELECTOR          (0xc0000176)
+#define STATUS_NO_LDT                          (0xc0000177)
+#define STATUS_INVALID_LDT_SIZE                (0xc0000178)
+#define STATUS_INVALID_LDT_OFFSET              (0xc0000179)
+#define STATUS_INVALID_LDT_DESCRIPTOR          (0xc000017a)
+#define STATUS_INVALID_IMAGE_NE_FORMAT         (0xc000017b)
+#define STATUS_RXACT_INVALID_STATE             (0xc000017c)
+#define STATUS_RXACT_COMMIT_FAILURE            (0xc000017d)
+#define STATUS_MAPPED_FILE_SIZE_ZERO           (0xc000017e)
+#define STATUS_TOO_MANY_OPENED_FILES           (0xc000017f)
+#define STATUS_CANCELLED                       (0xc0000180)
+#define STATUS_CANNOT_DELETE                   (0xc0000181)
+#define STATUS_INVALID_COMPUTER_NAME           (0xc0000182)
+#define STATUS_FILE_DELETED                    (0xc0000183) 
+#define STATUS_SPECIAL_ACCOUNT                 (0xc0000184)
+#define STATUS_SPECIAL_GROUP                   (0xc0000185)
+#define STATUS_SPECIAL_USER                    (0xc0000186)
+#define STATUS_MEMBERS_PRIMARY_GROUP           (0xc0000187)
+#define STATUS_FILE_CLOSED                     (0xc0000188)
+#define STATUS_TOO_MANY_THREADS                (0xc0000189)
+#define STATUS_THREAD_NOT_IN_PROCESS           (0xc000018a)
+#define STATUS_TOKEN_ALREADY_IN_USE            (0xc000018b)
+#define STATUS_PAGEFILE_QUOTA_EXCEEDED         (0xc000018c)
+#define STATUS_COMMITMENT_LIMIT                (0xc000018d)
+#define STATUS_INVALID_IMAGE_LE_FORMAT         (0xc000018e)
+#define STATUS_INVALID_IMAGE_NOT_MZ            (0xc000018f)
+#define STATUS_INVALID_IMAGE_PROTECT           (0xc0000190)
+#define STATUS_INVALID_IMAGE_WIN_16            (0xc0000191)
+#define STATUS_LOGON_SERVER_CONFLICT           (0xc0000192)
+#define STATUS_TIME_DIFFERENCE_AT_DC           (0xc0000193) 
+#define STATUS_SYNCHRONIZATION_REQUIRED        (0xc0000194)
+#define STATUS_DLL_NOT_FOUND                   (0xc0000195)
+#define STATUS_OPEN_FAILED                     (0xc0000196)
+#define STATUS_IO_PRIVILEGE_FAILED             (0xc0000197)
+#define STATUS_ORDINAL_NOT_FOUND               (0xc0000198)
+#define STATUS_ENTRYPOINT_NOT_FOUND            (0xc0000199)
+#define STATUS_CONTROL_C_EXIT                  (0xc000019a)
+#define STATUS_LOCAL_DISCONNECT                (0xc000019b)
+#define STATUS_REMOTE_DISCONNECT               (0xc000019c)
+#define STATUS_REMOTE_RESOURCES                (0xc000019d)
+#define STATUS_LINK_FAILED                     (0xc000019e)
+#define STATUS_LINK_TIMEOUT                    (0xc000019f)
+#define STATUS_INVALID_CONNECTION              (0xc0000200)
+#define STATUS_INVALID_ADDRESS                 (0xc0000201)
+#define STATUS_DLL_INIT_FAILED                 (0xc0000202)
+#define STATUS_MISSING_SYSTEMFILE              (0xc0000203)
+#define STATUS_UNHANDLED_EXCEPTION             (0xc0000204)
+#define STATUS_APP_INIT_FAILURE                (0xc0000205)
+#define STATUS_PAGEFILE_CREATE_FAILED          (0xc0000206)
+#define STATUS_NO_PAGEFILE                     (0xc0000207)
+#define STATUS_INVALID_LEVEL                   (0xc0000208)
+#define STATUS_WRONG_PASSWORD_CORE             (0xc0000209)
+#define STATUS_ILLEGAL_FLOAT_CONTEXT           (0xc000020a)
+#define STATUS_PIPE_BROKEN                     (0xc000020b)
+#define STATUS_REGISTRY_CORRUPT                (0xc000020c)
+#define STATUS_REGISTRY_IO_FAILED              (0xc000020d)
+#define STATUS_NO_EVENT_PAIR                   (0xc000020e)
+#define STATUS_UNRECOGNIZED_VOLUME             (0xc000020f)
+#define STATUS_SERIAL_NO_DEVICE_INITED         (0xc0000210)
+#define STATUS_NO_SUCH_ALIAS                   (0xc0000211) 
+#define STATUS_MEMBER_NOT_IN_ALIAS             (0xc0000212) 
+#define STATUS_MEMBER_IN_ALIAS                 (0xc0000213)
+#define STATUS_ALIAS_EXISTS                    (0xc0000214)
+#define STATUS_LOGON_NOT_GRANTED               (0xc0000215)
+#define STATUS_TOO_MANY_SECRETS                (0xc0000216)
+#define STATUS_SECRET_TOO_LONG                 (0xc0000217)
+#define STATUS_INTERNAL_DB_ERROR               (0xc0000218)
+#define STATUS_FULLSCREEN_MODE                 (0xc0000219)
+#define STATUS_TOO_MANY_CONTEXT_IDS            (0xc000021a)
+#define STATUS_LOGON_TYPE_NOT_GRANTED          (0xc000021b)
+#define STATUS_NOT_REGISTRY_FILE               (0xc000021c)
+#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED    (0xc000021d)
+#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR       (0xc000021e)
+#define STATUS_FT_MISSING_MEMBER               (0xc000021f)
+#define STATUS_ILL_FORMED_SERVICE_ENTRY        (0xc0000220)
+#define STATUS_ILLEGAL_CHARACTER               (0xc0000221)
+#define STATUS_UNMAPPABLE_CHARACTER            (0xc0000222)
+#define STATUS_UNDEFINED_CHARACTER             (0xc0000223)
+#define STATUS_FLOPPY_VOLUME                   (0xc0000224)
+#define STATUS_FLOPPY_ID_MARK_NOT_FOUND        (0xc0000225)
+#define STATUS_FLOPPY_WRONG_CYLINDER           (0xc0000226)
+#define STATUS_FLOPPY_UNKNOWN_ERROR            (0xc0000227)
+#define STATUS_FLOPPY_BAD_REGISTERS            (0xc0000228)
+#define STATUS_DISK_RECALIBRATE_FAILED         (0xc0000229)
+#define STATUS_DISK_OPERATION_FAILED           (0xc000022a)
+#define STATUS_DISK_RESET_FAILED               (0xc000022b)
+#define STATUS_SHARED_IRQ_BUSY                 (0xc000022c)
+#define STATUS_FT_ORPHANING                    (0xc000022d)
+#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT     (0xc000022e)
+
+#define STATUS_PARTITION_FAILURE                     (0xC000022f)
+#define STATUS_INVALID_BLOCK_LENGTH                  (0xC0000230)
+#define STATUS_DEVICE_NOT_PARTITIONED                (0xC0000231)
+#define STATUS_UNABLE_TO_LOCK_MEDIA                  (0xC0000232)
+#define STATUS_UNABLE_TO_UNLOAD_MEDIA                (0xC0000233)
+#define STATUS_EOM_OVERFLOW                          (0xC0000234)
+#define STATUS_NO_MEDIA                              (0xC0000235)
+
+#define STATUS_NO_SUCH_MEMBER                        (0xC0000236)
+#define STATUS_INVALID_MEMBER                        (0xC0000237)
+#define STATUS_KEY_DELETED                           (0xC0000238)
+#define STATUS_NO_LOG_SPACE                          (0xC0000239)
+#define STATUS_TOO_MANY_SIDS                         (0xC000023a)
+#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED          (0xC000023b)
+#define STATUS_KEY_HAS_CHILDREN                      (0xC000023c)
+#define STATUS_CHILD_MUST_BE_VOLATILE                (0xC000023d)
+#define STATUS_DEVICE_CONFIGURATION_ERROR            (0xC000023e)
+#define STATUS_DRIVER_INTERNAL_ERROR                 (0xC000023f)
+#define STATUS_INVALID_DEVICE_STATE                  (0xC0000240)
+#define STATUS_IO_DEVICE_ERROR                       (0xC0000241)
+#define STATUS_DEVICE_PROTOCOL_ERROR                 (0xC0000242)
+#define STATUS_BACKUP_CONTROLLER                     (0xC0000243)
+#define STATUS_LOG_FILE_FULL                         (0xC0000244)
+#define STATUS_TOO_LATE                              (0xC0000245)
+#define STATUS_NO_TRUST_LSA_SECRET                   (0xC0000246)
+#define STATUS_NO_TRUST_SAM_ACCOUNT                  (0xC0000247)
+#define STATUS_TRUSTED_DOMAIN_FAILURE                (0xC0000248)
+#define STATUS_TRUSTED_RELATIONSHIP_FAILURE          (0xC0000249)
+#define STATUS_EVENTLOG_FILE_CORRUPT                 (0xC000024a)
+#define STATUS_EVENTLOG_CANT_START                   (0xC000024b)
+#define STATUS_TRUST_FAILURE                         (0xC000024c)
+#define STATUS_MUTANT_LIMIT_EXCEEDED                 (0xC000024d)
+#define STATUS_NETLOGON_NOT_STARTED                  (0xC000024e)
+#define STATUS_ACCOUNT_EXPIRED                       (0xC000024f)
+#define STATUS_POSSIBLE_DEADLOCK                     (0xC0000250)
+#define STATUS_NETWORK_CREDENTIAL_CONFLICT           (0xC0000251)
+#define STATUS_REMOTE_SESSION_LIMIT                  (0xC0000252)
+#define STATUS_EVENTLOG_FILE_CHANGED                 (0xC0000253)
+#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT     (0xC0000254)
+#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT     (0xC0000255)
+#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT          (0xC0000256)
+#define STATUS_DOMAIN_TRUST_INCONSISTENT             (0xC0000257)
+#define STATUS_FS_DRIVER_REQUIRED                    (0xC0000258)
 
-#define STATUS_PARTITION_FAILURE                     (0xC0000172)
-#define STATUS_INVALID_BLOCK_LENGTH                  (0xC0000173)
-#define STATUS_DEVICE_NOT_PARTITIONED                (0xC0000174)
-#define STATUS_UNABLE_TO_LOCK_MEDIA                  (0xC0000175)
-#define STATUS_UNABLE_TO_UNLOAD_MEDIA                (0xC0000176)
-#define STATUS_EOM_OVERFLOW                          (0xC0000177)
-#define STATUS_NO_MEDIA                              (0xC0000178)
+#define STATUS_RESOURCE_LANG_NOT_FOUND               (0xC0000259)
 
-#define STATUS_NO_SUCH_MEMBER                        (0xC000017A)
-#define STATUS_INVALID_MEMBER                        (0xC000017B)
-#define STATUS_KEY_DELETED                           (0xC000017C)
-#define STATUS_NO_LOG_SPACE                          (0xC000017D)
-#define STATUS_TOO_MANY_SIDS                         (0xC000017E)
-#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED          (0xC000017F)
-#define STATUS_KEY_HAS_CHILDREN                      (0xC0000180)
-#define STATUS_CHILD_MUST_BE_VOLATILE                (0xC0000181)
-#define STATUS_DEVICE_CONFIGURATION_ERROR            (0xC0000182)
-#define STATUS_DRIVER_INTERNAL_ERROR                 (0xC0000183)
-#define STATUS_INVALID_DEVICE_STATE                  (0xC0000184)
-#define STATUS_IO_DEVICE_ERROR                       (0xC0000185)
-#define STATUS_DEVICE_PROTOCOL_ERROR                 (0xC0000186)
-#define STATUS_BACKUP_CONTROLLER                     (0xC0000187)
-#define STATUS_LOG_FILE_FULL                         (0xC0000188)
-#define STATUS_TOO_LATE                              (0xC0000189)
-#define STATUS_NO_TRUST_LSA_SECRET                   (0xC000018A)
-#define STATUS_NO_TRUST_SAM_ACCOUNT                  (0xC000018B)
-#define STATUS_TRUSTED_DOMAIN_FAILURE                (0xC000018C)
-#define STATUS_TRUSTED_RELATIONSHIP_FAILURE          (0xC000018D)
-#define STATUS_EVENTLOG_FILE_CORRUPT                 (0xC000018E)
-#define STATUS_EVENTLOG_CANT_START                   (0xC000018F)
-#define STATUS_TRUST_FAILURE                         (0xC0000190)
-#define STATUS_MUTANT_LIMIT_EXCEEDED                 (0xC0000191)
-#define STATUS_NETLOGON_NOT_STARTED                  (0xC0000192)
-#define STATUS_ACCOUNT_EXPIRED                       (0xC0000193)
-#define STATUS_POSSIBLE_DEADLOCK                     (0xC0000194)
-#define STATUS_NETWORK_CREDENTIAL_CONFLICT           (0xC0000195)
-#define STATUS_REMOTE_SESSION_LIMIT                  (0xC0000196)
-#define STATUS_EVENTLOG_FILE_CHANGED                 (0xC0000197)
-#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT     (0xC0000198)
-#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT     (0xC0000199)
-#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT          (0xC000019A)
-#define STATUS_DOMAIN_TRUST_INCONSISTENT             (0xC000019B)
-#define STATUS_FS_DRIVER_REQUIRED                    (0xC000019C)
+#define STATUS_FS_QUERY_REQUIRED                     (0xC1000001)
+#define STATUS_HANDLE_NOT_WAITABLE                   (0xC1000002)
+#define STATUS_OBJECT_FILE_MISMATCH                  (0xC1000003)
+#define STATUS_INVALID_PARAMETER_MAX                 (0xC1000004)
+#define STATUS_CONFLICTING_ADDRESS                   (0xC1000005)
+#define STATUS_NO_MEDIA_IN_DRIVE                     (0xC1000006)
 
-#define STATUS_RESOURCE_LANG_NOT_FOUND               (0xC0000204)
 
 enum
 {
@@ -582,15 +587,6 @@ enum
 
  RPC_NT_SS_IN_NULL_CONTEXT=0xC0030004,
 
-     /*
-      * Reactos codes
-      */
-     STATUS_FS_QUERY_REQUIRED,
-   STATUS_HANDLE_NOT_WAITABLE,//FIXME
-   STATUS_OBJECT_FILE_MISMATCH,//FIXME
-   STATUS_INVALID_PARAMETER_MAX,//FIXME
-   STATUS_CONFLICTING_ADDRESS,//FIXME : ADDRESSES ?
-   STATUS_NO_MEDIA_IN_DRIVE,//FIXME : no_media or no_media_in_device ?
 };
 
 #endif /* __INCLUDE_DDK_STATUS_H */
index 38fa94b..3e1c6ce 100644 (file)
@@ -2,6 +2,7 @@ mkdir -p $1/reactos
 mkdir -p $1/reactos/system32
 mkdir -p $1/reactos/system32/drivers
 mkdir -p $1/reactos/bin
+cp loaders/dos/loadros.com $1
 cp ntoskrnl/ntoskrnl.exe $1
 cp services/fs/vfat/vfatfs.sys $1
 cp services/dd/ide/ide.sys $1
@@ -25,3 +26,4 @@ cp apps/shm/shmclt.exe $1/reactos/bin
 cp apps/lpc/lpcsrv.exe $1/reactos/bin
 cp apps/lpc/lpcclt.exe $1/reactos/bin
 cp apps/thread/thread.exe $1/reactos/bin
+cp apps/event/event.exe $1/reactos/bin
index c872d3d..af4edfe 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: ntdll.def,v 1.30 1999/12/18 10:16:11 ea Exp $
+; $Id: ntdll.def,v 1.31 1999/12/22 14:48:23 dwelch Exp $
 ;
 ; ReactOS Operating System
 ;
@@ -450,6 +450,8 @@ RtlCompareString@12
 RtlCompareUnicodeString@12
 RtlConvertLongToLargeInteger@4
 RtlConvertUlongToLargeInteger@4
+;RtlCopyMemory@12
+RtlCopyMemory
 RtlCopyString@8
 RtlCopyUnicodeString@8
 RtlDeNormalizeProcessParams@4
index 04759a1..3006098 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: ntdll.edf,v 1.20 1999/12/18 10:16:11 ea Exp $
+; $Id: ntdll.edf,v 1.21 1999/12/22 14:48:23 dwelch Exp $
 ;
 ; ReactOS Operating System
 ;
@@ -594,3 +594,4 @@ LdrMapNTDllForProcess
 LdrUnloadDll
 LdrAccessResource
 LdrFindResource_U
+;RtlCopyMemory=RtlCopyMemory@12
index aa5f458..558f10d 100644 (file)
@@ -41,6 +41,7 @@ NTSTATUS IopCreateFile(PVOID ObjectBody,
    
    if (DeviceObject == NULL)
      {
+       DPRINT("DeviceObject was NULL\n");
        return(STATUS_SUCCESS);
      }
    
@@ -74,13 +75,18 @@ NTSTATUS IopCreateFile(PVOID ObjectBody,
        if (DeviceObject->DeviceType != FILE_DEVICE_FILE_SYSTEM &&
            DeviceObject->DeviceType != FILE_DEVICE_DISK)
          {
+            DPRINT("Device was wrong type\n");
             return(STATUS_UNSUCCESSFUL);
          }
        if (!(DeviceObject->Vpb->Flags & VPB_MOUNTED))
          {
+            DPRINT("Trying to mount storage device\n");
             Status = IoTryToMountStorageDevice(DeviceObject);
-            if (Status!=STATUS_SUCCESS)
+            DPRINT("Status %x\n", Status);
+            if (!NT_SUCCESS(Status))
               {
+                 DPRINT("Failed to mount storage device (statux %x)\n",
+                        Status);
                  return(Status);
               }
             DeviceObject = IoGetAttachedDevice(DeviceObject);
@@ -89,6 +95,7 @@ NTSTATUS IopCreateFile(PVOID ObjectBody,
      }
    DPRINT("FileObject->FileName.Buffer %w\n",FileObject->FileName.Buffer);
    FileObject->DeviceObject = DeviceObject;
+   DPRINT("FileObject %x DeviceObject %x\n", FileObject, DeviceObject);
    FileObject->Vpb = DeviceObject->Vpb;
    FileObject->Type = InternalFileType;
      
@@ -204,6 +211,8 @@ NtCreateFile (
       
    KeInitializeEvent(&Event, NotificationEvent, FALSE);
    
+   DPRINT("FileObject %x\n", FileObject);
+   DPRINT("FileObject->DeviceObject %x\n", FileObject->DeviceObject);
    Irp = IoAllocateIrp(FileObject->DeviceObject->StackSize, FALSE);
    if (Irp==NULL)
      {
@@ -240,16 +249,12 @@ NtCreateFile (
 }
 
 
-NTSTATUS
-STDCALL
-NtOpenFile (
-       PHANDLE                 FileHandle,
-       ACCESS_MASK             DesiredAccess,
-       POBJECT_ATTRIBUTES      ObjectAttributes,
-       PIO_STATUS_BLOCK        IoStatusBlock,
-       ULONG                   ShareAccess,
-       ULONG                   OpenOptions
-       )
+NTSTATUS STDCALL NtOpenFile(PHANDLE                    FileHandle,
+                           ACCESS_MASK         DesiredAccess,
+                           POBJECT_ATTRIBUTES  ObjectAttributes,
+                           PIO_STATUS_BLOCK    IoStatusBlock,
+                           ULONG                       ShareAccess,
+                           ULONG                       OpenOptions)
 /*
  * FUNCTION: Opens a file (simpler than ZwCreateFile)
  * ARGUMENTS:
@@ -264,18 +269,17 @@ NtOpenFile (
  * NOTE: Undocumented
  */
 {
-   return(ZwCreateFile(
-               FileHandle,
-               DesiredAccess,
-               ObjectAttributes,
-               IoStatusBlock,
-               NULL,
-               0,
-               ShareAccess,
-               FILE_OPEN,
-               OpenOptions,
-               NULL,
-               0));
+   return(ZwCreateFile(FileHandle,
+                      DesiredAccess,
+                      ObjectAttributes,
+                      IoStatusBlock,
+                      NULL,
+                      0,
+                      ShareAccess,
+                      FILE_OPEN,
+                      OpenOptions,
+                      NULL,
+                      0));
 }
 
 
index 47abf9c..3988797 100644 (file)
@@ -26,8 +26,8 @@ typedef struct
 
 /* GLOBALS ******************************************************************/
 
-static KSPIN_LOCK FileSystemListLock = {0,};
-static LIST_ENTRY FileSystemListHead = {NULL,NULL};
+static KSPIN_LOCK FileSystemListLock;
+static LIST_ENTRY FileSystemListHead;
 
 /* FUNCTIONS *****************************************************************/
 
index 3b1e31e..0e8fd54 100644 (file)
@@ -314,7 +314,7 @@ BOOLEAN KeDispatcherObjectWake(DISPATCHER_HEADER* hdr)
       case InternalMutexType:
        return(KeDispatcherObjectWakeOne(hdr));
      }
-   DPRINT("Dispatcher object %x has unknown type\n",hdr);
+   DbgPrint("Dispatcher object %x has unknown type %d\n", hdr, hdr->Type);
    KeBugCheck(0);
    return(FALSE);
 }
index 4feaf2a..cde5c84 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: loader.c,v 1.40 1999/12/13 22:04:37 dwelch Exp $
+/* $Id: loader.c,v 1.41 1999/12/22 14:48:24 dwelch Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -190,6 +190,7 @@ static VOID LdrLoadAutoConfigDriver (LPWSTR RelativeDriverName)
      {
        DbgPrint("driver load failed, status;%d(%x)\n", Status, Status);
        DbgPrintErrorMessage(Status);
+       KeBugCheck(0);
      }
 }
 
@@ -208,11 +209,11 @@ LdrLoadAutoConfigDrivers (VOID)
         /*
          * VideoPort driver
          */
-        LdrLoadAutoConfigDriver( L"vidport.sys" );
+//        LdrLoadAutoConfigDriver( L"vidport.sys" );
         /*
          * VGA Miniport driver
          */
-        LdrLoadAutoConfigDriver( L"vgamp.sys" );
+//        LdrLoadAutoConfigDriver( L"vgamp.sys" );
 }
 
 
index dd3da5d..dc96434 100644 (file)
@@ -95,8 +95,9 @@ NTSTATUS MmCopyMmInfo(PEPROCESS Src, PEPROCESS Dest)
      {
        PageDirectory[i] = CurrentPageDirectory[i];
      }
-   DPRINT("Addr %x\n",0xf0000000 / (4*1024*1024));
-   PageDirectory[0xf0000000 / (4*1024*1024)] = (ULONG)PhysPageDirectory | 0x7;
+   DPRINT("Addr %x\n",PAGETABLE_MAP / (4*1024*1024));
+   PageDirectory[PAGETABLE_MAP / (4*1024*1024)] = 
+     (ULONG)PhysPageDirectory | 0x7;
    
    ExUnmapPage(PageDirectory);
    
@@ -170,7 +171,7 @@ VOID MmDeletePageEntry(PEPROCESS Process, PVOID Address, BOOL FreePage)
          }     
        return;
      }
-   page_tlb = ADDR_TO_PTE(Address);   
+   page_tlb = ADDR_TO_PTE(Address);
    if (FreePage && PAGE_MASK(*page_tlb) != 0)
      {
        if (PAGE_MASK(*page_tlb) >= 0x400000)
@@ -208,6 +209,7 @@ PULONG MmGetPageEntry(PVOID PAddress)
    if ((*page_dir) == 0)
      {
        (*page_dir) = ((ULONG)MmAllocPage()) | 0x7;
+       memset((PVOID)PAGE_ROUND_DOWN(ADDR_TO_PTE(Address)), 0, PAGESIZE);
        FLUSH_TLB;
      }
    page_tlb = ADDR_TO_PTE(Address);
@@ -229,7 +231,10 @@ VOID MmSetPage(PEPROCESS Process,
    PEPROCESS CurrentProcess = PsGetCurrentProcess();
    ULONG Attributes = 0;
    
-   if (PAGE_ROUND_DOWN(Address) == 0x77631000)
+   if (PAGE_ROUND_DOWN(Address) == 0x77630000 ||
+       PAGE_ROUND_DOWN(Address) == 0x77631000 ||
+       PAGE_ROUND_DOWN(Address) == 0x77632000 ||
+       PAGE_ROUND_DOWN(Address) == 0x77633000)
      {
        DPRINT1("MmSetPage(Process %x, Address %x, flProtect %x, "
                "PhysicalAddress %x)\n",Process,Address,flProtect,
@@ -285,14 +290,14 @@ PHYSICAL_ADDRESS MmGetPhysicalAddress(PVOID vaddr)
  * FUNCTION: Returns the physical address corresponding to a virtual address
  */
 {
-  PHYSICAL_ADDRESS p;
-
-  p.QuadPart = 0;
+   PHYSICAL_ADDRESS p;
 
-  DPRINT("MmGetPhysicalAddress(vaddr %x)\n", vaddr);
+   p.QuadPart = 0;
+   
+   DPRINT("MmGetPhysicalAddress(vaddr %x)\n", vaddr);
    
-  p.u.LowPart = PAGE_MASK(*MmGetPageEntry(vaddr));
-  p.u.HighPart = 0;
+   p.u.LowPart = PAGE_MASK(*MmGetPageEntry(vaddr));
+   p.u.HighPart = 0;
    
-  return p;
+   return p;
 }
index d731381..ab23346 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: section.c,v 1.19 1999/12/20 02:14:39 dwelch Exp $
+/* $Id: section.c,v 1.20 1999/12/22 14:48:25 dwelch Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -218,8 +218,9 @@ NTSTATUS STDCALL NtCreateSection (OUT PHANDLE SectionHandle,
      {
        Section->FileObject = NULL;
      }
-   
+      
    DPRINT("NtCreateSection() = STATUS_SUCCESS\n");
+   ObDereferenceObject(Section);
    return(STATUS_SUCCESS);
 }
 
@@ -425,7 +426,6 @@ NTSTATUS STDCALL NtMapViewOfSection(HANDLE SectionHandle,
    
    DPRINT("*BaseAddress %x\n",*BaseAddress);
    ObDereferenceObject(Process);   
-   ObDereferenceObject(Section);
    
    return(STATUS_SUCCESS);
 }
@@ -440,6 +440,7 @@ NTSTATUS MmUnmapViewOfSection(PEPROCESS Process,
    KeAcquireSpinLock(&Section->ViewListLock, &oldIrql);
    RemoveEntryList(&MemoryArea->Data.SectionData.ViewListEntry);
    KeReleaseSpinLock(&Section->ViewListLock, oldIrql);
+   ObDereferenceObject(Section);
    
    return(STATUS_SUCCESS);
 }
index 1946ceb..9ae9916 100644 (file)
@@ -1,5 +1,4 @@
-
-/* $Id: handle.c,v 1.15 1999/12/20 02:14:40 dwelch Exp $
+/* $Id: handle.c,v 1.16 1999/12/22 14:48:25 dwelch Exp $
  *
  * COPYRIGHT:          See COPYING in the top level directory
  * PROJECT:            ReactOS kernel
index 75c5c04..1fb1477 100644 (file)
@@ -30,7 +30,15 @@ VOID ObInitializeObject(POBJECT_HEADER ObjectHeader,
    ObjectHeader->HandleCount = 0;
    ObjectHeader->RefCount = 1;
    ObjectHeader->ObjectType = Type;
-   ObjectHeader->Permanent = FALSE;
+   if (ObjectAttributes != NULL &&
+       ObjectAttributes->Attributes & OBJ_PERMANENT)
+     {
+       ObjectHeader->Permanent = TRUE;
+     }
+   else
+     {
+       ObjectHeader->Permanent = FALSE;
+     }
    RtlInitUnicodeString(&(ObjectHeader->Name),NULL);
    if (Handle != NULL)
      {
index 0e2d692..1652ece 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: create.c,v 1.4 1999/12/20 02:14:40 dwelch Exp $
+/* $Id: create.c,v 1.5 1999/12/22 14:48:26 dwelch Exp $
  *
  * COPYRIGHT:              See COPYING in the top level directory
  * PROJECT:                ReactOS kernel
@@ -73,7 +73,7 @@ VOID PiDeleteThread(PVOID ObjectBody)
 {
    KIRQL oldIrql;
    
-   DPRINT1("PiDeleteThread(ObjectBody %x)\n",ObjectBody);
+   DPRINT("PiDeleteThread(ObjectBody %x)\n",ObjectBody);
    
    KeAcquireSpinLock(&PiThreadListLock, &oldIrql);
    ObDereferenceObject(((PETHREAD)ObjectBody)->ThreadsProcess);
@@ -82,7 +82,7 @@ VOID PiDeleteThread(PVOID ObjectBody)
    RemoveEntryList(&((PETHREAD)ObjectBody)->Tcb.ThreadListEntry);
    HalReleaseTask((PETHREAD)ObjectBody);
    KeReleaseSpinLock(&PiThreadListLock, oldIrql);
-   DPRINT1("PiDeleteThread() finished\n");
+   DPRINT("PiDeleteThread() finished\n");
 }
 
 VOID PiCloseThread(PVOID ObjectBody, ULONG HandleCount)
index 38901f9..3c8f1f3 100644 (file)
@@ -131,7 +131,7 @@ VOID PiDeleteProcess(PVOID ObjectBody)
 {
    KIRQL oldIrql;
    
-   DPRINT1("PiDeleteProcess(ObjectBody %x)\n",ObjectBody);
+   DPRINT("PiDeleteProcess(ObjectBody %x)\n",ObjectBody);
    
    KeAcquireSpinLock(&PsProcessListLock, &oldIrql);
    RemoveEntryList(&((PEPROCESS)ObjectBody)->Pcb.ProcessListEntry);
index bcd7106..8a7d8ea 100644 (file)
@@ -1,14 +1,50 @@
 #include <ddk/ntddk.h>
 
-DWORD
-CSR_CreateProcess (
-       PLPC_MESSAGE    pLpcMessage
-       );
+#include <csrss/csrss.h>
 
-DWORD
-CSR_TerminateProcess(
-       PLPC_MESSAGE    pLpcMessage
-       );
+typedef struct
+{
+   BOOL TopLevel;
+   HANDLE ActiveEvent;
+   BYTE Screen[80*25*2];
+   ULONG ReferenceCount;
+   HANDLE LockMutant;
+   ULONG CurrentX;
+   ULONG CurrentY;
+} CSRSS_CONSOLE, *PCSRSS_CONSOLE;
 
+typedef struct
+{
+   PCSRSS_CONSOLE Console;
+} CSRSS_PROCESS_DATA, *PCSRSS_PROCESS_DATA;
 
-/* EOF */
+NTSTATUS CsrCreateProcess (PCSRSS_PROCESS_DATA ProcessData,
+                          PCSRSS_API_REQUEST LpcMessage);
+
+NTSTATUS CsrTerminateProcess(PCSRSS_PROCESS_DATA ProcessData,
+                            PCSRSS_API_REQUEST LpcMessage);
+
+NTSTATUS CsrWriteConsole(PCSRSS_PROCESS_DATA ProcessData,
+                        PCSRSS_API_REQUEST LpcMessage, 
+                        PULONG CharCount);
+
+NTSTATUS CsrAllocConsole(PCSRSS_PROCESS_DATA ProcessData,
+                        PCSRSS_API_REQUEST LpcMessage, 
+                        PHANDLE ReturnedHandle);
+
+NTSTATUS CsrFreeConsole(PCSRSS_PROCESS_DATA ProcessData,
+                       PCSRSS_API_REQUEST LpcMessage);
+
+NTSTATUS CsrReadConsole(PCSRSS_PROCESS_DATA ProcessData,
+                       PCSRSS_API_REQUEST LpcMessage, 
+                       PULONG CharCount);
+
+NTSTATUS CsrConnectProcess(PCSRSS_PROCESS_DATA ProcessData,
+                          PCSRSS_API_REQUEST Request);
+
+/* print.c */
+VOID DisplayString(LPCWSTR lpwString);
+VOID PrintString (char* fmt, ...);
+
+/* api/wapi.c */
+VOID Thread_Api(PVOID PortHandle);
diff --git a/reactos/subsys/csrss/api/conio.c b/reactos/subsys/csrss/api/conio.c
new file mode 100644 (file)
index 0000000..421bac2
--- /dev/null
@@ -0,0 +1,91 @@
+/* $Id: conio.c,v 1.1 1999/12/22 14:48:30 dwelch Exp $
+ *
+ * reactos/subsys/csrss/api/conio.c
+ *
+ * Console I/O functions
+ *
+ * ReactOS Operating System
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <ddk/ntddk.h>
+
+#include "csrss.h"
+#include "api.h"
+
+/* GLOBALS *******************************************************************/
+
+static HANDLE ConsoleDevice;
+static HANDLE KeyboardDevice;
+
+/* FUNCTIONS *****************************************************************/
+
+NTSTATUS CsrWriteConsole(PCSRSS_CONIO_PROCESS ProcessData,
+                        PCSRSS_REQUEST Message, 
+                        PULONG CharCount)
+{
+   NTSTATUS Status;
+   
+   if (ProcessData->Console == NULL)
+     {
+       return(STATUS_UNSUCCESSFUL);
+     }
+   
+   Status = NtWaitForSingleObject(ProcessData->Console->LockMutant,
+                                 TRUE,
+                                 NULL);
+   if (!NT_SUCCESS(Status))
+     {
+       return(Status);
+     }
+   if (Status == STATUS_ALERTED ||
+       Status == STATUS_USER_APC)
+     {
+       return(Status);
+     }
+   
+   if (TopLevel == TRUE)
+     {
+       Status = NtReleaseMutant(ProcessData->Console->LockMutant, NULL);
+       if (!NT_SUCCESS(Status))
+         {
+            return(Status);
+         }
+       
+       return(Status);
+     }
+   else
+     {
+       Status = NtReleaseMutant(ProcessData->Console->LockMutant, NULL);
+       if (!NT_SUCCESS(Status))
+         {
+            return(Status);
+         }
+       
+       return(Status);
+     }
+}
+
+PCSRSS_CONIO_PROCESS CsrAllocConioProcess(VOID)
+{
+   PCSRSS_CONIO_PROCESS ProcessData;
+   
+   ThreadData = RtlAllocHeap(NULL, HEAP_ZERO_MEMORY, 
+                            sizeof(PROCESS_CONIO_THREAD));
+   if (ThreadData == NULL)
+     {
+       return(NULL);
+     }
+   ProcessData->Console = NULL;
+   return(ProcessData);
+}
+
+VOID CsrFreeConioProcess(PCSRSS_CONIO_PROCESS ProcessData)
+{
+   RtlFreeHeap(NULL, 0, ProcessData);
+}
+
+
+
+/* EOF */
index 1835d01..d9b194b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: process.c,v 1.2 1999/07/17 23:10:30 ea Exp $
+/* $Id: process.c,v 1.3 1999/12/22 14:48:30 dwelch Exp $
  *
  * reactos/subsys/csrss/api/process.c
  *
@@ -6,25 +6,39 @@
  *
  * ReactOS Operating System
  */
-#define PROTO_LPC
+
+/* INCLUDES ******************************************************************/
+
 #include <ddk/ntddk.h>
 
+#include <csrss/csrss.h>
+
+#include "api.h"
 
-DWORD
-CSR_CreateProcess (
-       PLPC_MESSAGE    pLpcMessage
-       )
+/* FUNCTIONS *****************************************************************/
+
+NTSTATUS CsrCreateProcess (PCSRSS_PROCESS_DATA ProcessData,
+                          PCSRSS_API_REQUEST LpcMessage)
 {
-       return LPC_ERROR_CALL_NOT_IMPLEMENTED;
+   return(STATUS_NOT_IMPLEMENTED);
 }
 
+NTSTATUS CsrTerminateProcess(PCSRSS_PROCESS_DATA ProcessData,
+                            PCSRSS_API_REQUEST LpcMessage)
+{
+   return(STATUS_NOT_IMPLEMENTED);
+}
 
-DWORD
-CSR_TerminateProcess(
-       PLPC_MESSAGE    pLpcMessage
-       )
+NTSTATUS CsrConnectProcess(CSRSS_PROCESS_DATA ProcessData,
+                          PCSRSS_API_REQUEST Request)
 {
-       return LPC_ERROR_CALL_NOT_IMPLEMENTED;
+   HANDLE ConsoleHandle;
+   
+   ConsoleHandle = ((PULONG)Request.MessageData)[0];
+   
+   ProcessData.Console = CsrReferenceConsoleByHandle(ConsoleHandle);
+   
+   return(STATUS_SUCCESS);
 }
 
 /* EOF */
diff --git a/reactos/subsys/csrss/api/wapi.c b/reactos/subsys/csrss/api/wapi.c
new file mode 100644 (file)
index 0000000..b8d8a3f
--- /dev/null
@@ -0,0 +1,148 @@
+/* $Id: wapi.c,v 1.1 1999/12/22 14:48:30 dwelch Exp $
+ * 
+ * reactos/subsys/csrss/init.c
+ *
+ * Initialize the CSRSS subsystem server process.
+ *
+ * ReactOS Operating System
+ *
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <ddk/ntddk.h>
+#include <ntdll/rtl.h>
+#include <csrss/csrss.h>
+
+#include "api.h"
+
+/* FUNCTIONS *****************************************************************/
+
+static void Thread_Api2(HANDLE ServerPort)
+{
+   NTSTATUS Status;
+   PLPCMESSAGE LpcReply;
+   LPCMESSAGE LpcRequest;
+   PCSRSS_API_REQUEST Request;
+   CSRSS_API_REPLY Reply;
+   CSRSS_PROCESS_DATA ProcessData;
+   
+   LpcReply = NULL;
+   
+   for (;;)
+     {
+       Status = NtReplyWaitReceivePort(ServerPort,
+                                       0,
+                                       LpcReply,
+                                       &LpcRequest);
+       if (!NT_SUCCESS(Status))
+         {
+            DisplayString(L"NtReplyWaitReceivePort failed\n");
+         }
+       
+       Request = (PCSRSS_API_REQUEST)LpcRequest.MessageData;
+       
+       DisplayString(L"Received request\n");
+       
+       switch (Request->Type)
+         {
+          case CSRSS_CREATE_PROCESS:
+            Reply.Status = CsrCreateProcess(&ProcessData, Request);
+            break;
+            
+          case CSRSS_TERMINATE_PROCESS:
+            Reply.Status = CsrTerminateProcess(&ProcessData, Request);
+            break;
+            
+          case CSRSS_WRITE_CONSOLE:
+            Reply.Status = CsrWriteConsole(&ProcessData, Request, 
+                                           &Reply.Count);
+            break;
+            
+          case CSRSS_READ_CONSOLE:
+            Reply.Status = CsrReadConsole(&ProcessData, Request, 
+                                          &Reply.Count);
+            break;
+            
+          case CSRSS_NEW_CONSOLE:
+            Reply.Status = CsrAllocConsole(&ProcessData, Request, 
+                                           &Reply.Handle);
+            break;
+            
+          case CSRSS_FREE_CONSOLE:
+            Reply.Status = CsrFreeConsole(&ProcessData, Request);
+            break;
+            
+          case CSRSS_CONNECT_PROCESS:
+            Reply.Status = CsrConnectProcess(&ProcessData, Request);
+            
+          default:
+            Reply.Status = STATUS_NOT_IMPLEMENTED;
+         }
+       
+       LpcReply = &LpcRequest;
+       RtlCopyMemory(LpcReply->MessageData, &Reply, sizeof(Reply));
+     }
+}
+
+/**********************************************************************
+ * NAME
+ *     Thread_Api
+ *
+ * DESCRIPTION
+ *     Handle connection requests from clients to the port
+ *     "\Windows\ApiPort".
+ */
+void Thread_Api(PVOID PortHandle)
+{
+   NTSTATUS Status;
+   LPCMESSAGE Request;
+   HANDLE ServerPort;
+   
+   for (;;)
+     {
+       Status = NtListenPort(PortHandle, &Request);
+       if (!NT_SUCCESS(Status))
+         {
+            DisplayString(L"NtListenPort() failed\n");
+            NtTerminateThread(NtCurrentThread(), Status);
+         }
+       
+       Status = NtAcceptConnectPort(&ServerPort,
+                                    PortHandle,
+                                    NULL,
+                                    1,
+                                    0,
+                                    NULL);
+       if (!NT_SUCCESS(Status))
+         {
+            DisplayString(L"NtAcceptConnectPort() failed\n");
+            NtTerminateThread(NtCurrentThread(), Status);
+         }
+       
+       Status = NtCompleteConnectPort(ServerPort);
+       if (!NT_SUCCESS(Status))
+         {
+            DisplayString(L"NtCompleteConnectPort() failed\n");
+            NtTerminateThread(NtCurrentThread(), Status);
+         }
+       
+       Status = RtlCreateUserThread(NtCurrentProcess(),
+                                    NULL,
+                                    FALSE,
+                                    0,
+                                    NULL,
+                                    NULL,
+                                    (PTHREAD_START_ROUTINE)Thread_Api2,
+                                    ServerPort,
+                                    NULL,
+                                    NULL);
+       if (!NT_SUCCESS(Status))
+         {
+            DisplayString(L"Unable to create server thread\n");
+            NtClose(ServerPort);
+            NtTerminateThread(NtCurrentThread(), Status);
+         }
+     }
+}
+       
index 93bd2a8..76a82e6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: csrss.c,v 1.2 1999/07/17 23:10:30 ea Exp $
+/* $Id: csrss.c,v 1.3 1999/12/22 14:48:29 dwelch Exp $
  *
  * csrss.c - Client/Server Runtime subsystem
  * 
@@ -38,46 +38,42 @@ BOOL TerminationRequestPending = FALSE;
 BOOL InitializeServer(void);
 
 
-void
-DisplayString(
-       LPCWSTR Message
-       )
+void DisplayString(LPCWSTR     Message)
 {
-       UNICODE_STRING title;
+   UNICODE_STRING title;
 
-       title.Buffer = (LPWSTR) Message;
-       title.Length = wcslen(title.Buffer) * sizeof (WCHAR);
-       title.MaximumLength = title.Length + sizeof (WCHAR);
-       NtDisplayString( & title );
+   title.Buffer = (LPWSTR) Message;
+   title.Length = wcslen(title.Buffer) * sizeof (WCHAR);
+   title.MaximumLength = title.Length + sizeof (WCHAR);
+   NtDisplayString(&title);
 }
 
 
 /* Native process' entry point */
 
-void
-NtProcessStartup( PSTARTUP_ARGUMENT StartupArgument )
+VOID NtProcessStartup(PPEB Peb)
 {
-       DisplayString( L"Client/Server Runtime Subsystem\n" );
+   DisplayString(L"Client/Server Runtime Subsystem\n");
 
-       if (TRUE == InitializeServer())
-       {
-               while (FALSE == TerminationRequestPending)
-               {
-                       /* Do nothing! Should it
-                        * be the SbApi port's
-                        * thread instead?
-                        */
-                       NtYieldExecution();
-               }
-       }
-       else
-       {
-               DisplayString( L"CSR: Subsystem initialization failed.\n" );
-               /*
-                * Tell SM we failed.
-                */
-       }
-       NtTerminateProcess( NtCurrentProcess(), 0 );
+   if (InitializeServer() == TRUE)
+     {
+       while (FALSE == TerminationRequestPending)
+         {
+            /* Do nothing! Should it
+             * be the SbApi port's
+             * thread instead?
+             */
+            NtYieldExecution();
+         }
+     }
+   else
+     {
+       DisplayString( L"CSR: Subsystem initialization failed.\n" );
+       /*
+        * Tell SM we failed.
+        */
+     }
+   NtTerminateProcess( NtCurrentProcess(), 0 );
 }
 
 /* EOF */
index 32435fc..b7c945f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: init.c,v 1.2 1999/07/17 23:10:30 ea Exp $
+/* $Id: init.c,v 1.3 1999/12/22 14:48:29 dwelch Exp $
  * 
  * reactos/subsys/csrss/init.c
  *
@@ -7,83 +7,28 @@
  * ReactOS Operating System
  *
  */
-#define PROTO_LPC
+
+/* INCLUDES ******************************************************************/
+
 #include <ddk/ntddk.h>
-#include "csrss.h"
+#include <ntdll/rtl.h>
+#include <csrss/csrss.h>
 
+#include "api.h"
 
-void Thread_Api(void*);
-void Thread_SbApi(void*);
+/* GLOBALS ******************************************************************/
 
 /*
  * Server's named ports.
  */
-struct _SERVER_PORTS
-Server =
-{
-       {INVALID_HANDLE_VALUE,Thread_Api},
-       {INVALID_HANDLE_VALUE,Thread_SbApi}
-};
-/**********************************************************************
- * NAME
- *     Thread_Api
- *
- * DESCRIPTION
- *     Handle connection requests from clients to the port
- *     "\Windows\ApiPort".
- */
-static
-void
-Thread_Api(void * pPort)
-{
-       NTSTATUS        Status;
-       HANDLE          Port;
-       HANDLE          ConnectedPort;
+static HANDLE ApiPortHandle;
 
-       Port = * (HANDLE*) pPort;
-       
-       /*
-        * Make the CSR API port listen.
-        */
-       Status = NtListenPort(
-                       Port,
-                       CSRSS_API_PORT_QUEUE_SIZE
-                       );
-       if (!NT_SUCCESS(Status))
-       {
-               /*
-                * FIXME: notify SM we could not 
-                * make the port listen.
-                */
-               return;
-       }
-       /*
-        * Wait for a client to connect
-        */
-       while (TRUE)
-       {
-               /*
-                * Wait for a connection request;
-                * the new connected port's handle
-                * is stored in ConnectedPort.
-                */
-               Status = NtAcceptConnectPort(
-                               Port,
-                               & ConnectedPort
-                               );
-               if (NT_SUCCESS(Status))
-               {
-                       if (NT_SUCCESS(NtCompleteConnectPort(ConnectedPort)))
-                       {
-                               /* dispatch call */
-                               continue;
-                       }
-                       /* error */
-               }
-       }
-}
+#if 0
+static HANDLE SbApiPortHandle;
+#endif
 
 
+#if 0
 /**********************************************************************
  * NAME
  *     Thread_SbApi
@@ -148,40 +93,51 @@ Thread_SbApi(void * pPort)
  * RETURN VALUE
  *     TRUE: Initialization OK; otherwise FALSE.
  */
-BOOL
-InitializeServer(void)
+BOOL InitializeServer(void)
 {
-       NTSTATUS                Status;
-       OBJECT_ATTRIBUTES       ObAttributes;
-
+   NTSTATUS            Status;
+   OBJECT_ATTRIBUTES   ObAttributes;
+   UNICODE_STRING PortName;
        
-       /* NEW NAMED PORT: \ApiPort */
-       Status = NtCreatePort(
-                       & Server.Api.Port,      /* New port's handle */
-                       & ObAttributes,         /* Port object's attributes */
-                       ...
-                       );
-       if (!NT_SUCCESS(Status))
-       {
-               return FALSE;
-       }
-       Status = NtCreateThread(
-                       & Server.Api.Thread,
-                       0,                      /* desired access */
-                       & ObAttributes,         /* object attributes */
-                       NtCurrentProcess(),     /* process' handle */
-                       0,                      /* client id */
-                       Thread_ApiPort,
-                       (void*) & Server.Api.Port
-                       );
-       if (!NT_SUCCESS(Status))
-       {
-               NtClose(Server.Api.Port);
-               return FALSE;
-       }
-       /* NEW NAMED PORT: \SbApiPort */
-       Status = NtCreatePort(
-                       & Server.SbApi.Port,
+   /* NEW NAMED PORT: \ApiPort */
+   RtlInitUnicodeString(&PortName, L"\\ApiPort");
+   InitializeObjectAttributes(&ObAttributes,
+                             &PortName,
+                             0,
+                             NULL,
+                             NULL);
+   Status = NtCreatePort(&ApiPortHandle,
+                        &ObAttributes,
+                        260,
+                        328,
+                        0);
+   if (!NT_SUCCESS(Status))
+     {
+       DisplayString(L"Unable to create \\ApiPort (Status %x)\n");
+       return(FALSE);
+     }
+
+   Status = RtlCreateUserThread(NtCurrentProcess(),
+                               NULL,
+                               FALSE,
+                               0,
+                               NULL,
+                               NULL,
+                               (PTHREAD_START_ROUTINE)Thread_Api,
+                               ApiPortHandle,
+                               NULL,
+                               NULL);
+   if (!NT_SUCCESS(Status))
+     {
+       DisplayString(L"Unable to create server thread\n");
+       NtClose(ApiPortHandle);
+       return FALSE;
+     }
+   
+#if 0
+   /* NEW NAMED PORT: \SbApiPort */
+   Status = NtCreatePort(
+                        &Server.SbApi.Port,
                        & ObAttributes,
                        ...
                        );
@@ -201,7 +157,9 @@ InitializeServer(void)
                NtClose(Server.SbApi.Port);
                return FALSE;
        }
-       return TRUE;
+#endif
+     
+   return TRUE;
 }
 
 
index add1bfe..bd68331 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: makefile,v 1.2 1999/08/29 13:45:07 dwelch Exp $
+# $Id: makefile,v 1.3 1999/12/22 14:48:29 dwelch Exp $
 #
 # CSRSS: Client/server runtime subsystem
 #
@@ -6,13 +6,13 @@
 #
 TARGET=csrss
 
-BASE_CFLAGS = -I../../include
+BASE_CFLAGS = -I../../include -I.
 
-OBJECTS_API = api/process.o
+OBJECTS_API = api/process.o api/wapi.o
 
 OBJECTS_SBAPI =
 
-OBJECTS_MISC = $(TARGET).o init.o lpcstub.o $(TARGET).coff 
+OBJECTS_MISC = $(TARGET).o init.o $(TARGET).coff 
 
 OBJECTS = $(OBJECTS_API) $(OBJECTS_SBAPI) $(OBJECTS_MISC)
 
diff --git a/reactos/subsys/csrss/print.c b/reactos/subsys/csrss/print.c
new file mode 100644 (file)
index 0000000..10698b8
--- /dev/null
@@ -0,0 +1,61 @@
+/* $Id: print.c,v 1.1 1999/12/22 14:48:29 dwelch Exp $
+ *
+ * smss.c - Session Manager
+ * 
+ * ReactOS Operating System
+ * 
+ * --------------------------------------------------------------------
+ *
+ * This software is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING.LIB. If not, write
+ * to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
+ * MA 02139, USA.  
+ *
+ * --------------------------------------------------------------------
+ * 
+ *     19990529 (Emanuele Aliberti)
+ *             Compiled successfully with egcs 1.1.2
+ */
+
+#include <ddk/ntddk.h>
+
+#include "csrss.h"
+
+
+VOID DisplayString(LPCWSTR lpwString)
+{
+   UNICODE_STRING us;
+   
+   RtlInitUnicodeString (&us, lpwString);
+   NtDisplayString (&us);
+}
+
+VOID PrintString (char* fmt,. ..)
+{
+   char buffer[512];
+   va_list ap;
+   UNICODE_STRING UnicodeString;
+   ANSI_STRING AnsiString;
+   ULONG i;
+   
+   va_start(ap, fmt);
+       vsprintf(buffer, fmt, ap);
+   va_end(ap);
+   
+   RtlInitAnsiString (&AnsiString, buffer);
+   RtlAnsiStringToUnicodeString (&UnicodeString,
+                                &AnsiString,
+                                TRUE);
+   NtDisplayString(&UnicodeString);
+   RtlFreeUnicodeString (&UnicodeString);
+}