Corrected additional object manager issues pointed by Philip Susi

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
This commit is contained in:
David Welch 1999-12-22 14:48:30 +00:00
parent 1667a4589a
commit dbd051cad4
29 changed files with 929 additions and 574 deletions

View 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

View 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)

View 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)

View 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;
}

View 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,

View 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;

View file

@ -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

View file

@ -203,349 +203,354 @@
#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 (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_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 (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_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_RESOURCE_LANG_NOT_FOUND (0xC0000259)
#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 */

View 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

View 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

View 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

View 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));
}

View 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 *****************************************************************/

View 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);
}

View 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" );
}

View 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;
PHYSICAL_ADDRESS p;
p.QuadPart = 0;
DPRINT("MmGetPhysicalAddress(vaddr %x)\n", vaddr);
p.QuadPart = 0;
p.u.LowPart = PAGE_MASK(*MmGetPageEntry(vaddr));
p.u.HighPart = 0;
DPRINT("MmGetPhysicalAddress(vaddr %x)\n", vaddr);
return p;
p.u.LowPart = PAGE_MASK(*MmGetPageEntry(vaddr));
p.u.HighPart = 0;
return p;
}

View 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);
}

View 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

View 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)
{

View 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)

View 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);

View 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);

View file

@ -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 */

View 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>
DWORD
CSR_CreateProcess (
PLPC_MESSAGE pLpcMessage
)
#include "api.h"
/* FUNCTIONS *****************************************************************/
NTSTATUS CsrCreateProcess (PCSRSS_PROCESS_DATA ProcessData,
PCSRSS_API_REQUEST LpcMessage)
{
return LPC_ERROR_CALL_NOT_IMPLEMENTED;
return(STATUS_NOT_IMPLEMENTED);
}
DWORD
CSR_TerminateProcess(
PLPC_MESSAGE pLpcMessage
)
NTSTATUS CsrTerminateProcess(PCSRSS_PROCESS_DATA ProcessData,
PCSRSS_API_REQUEST LpcMessage)
{
return LPC_ERROR_CALL_NOT_IMPLEMENTED;
return(STATUS_NOT_IMPLEMENTED);
}
NTSTATUS CsrConnectProcess(CSRSS_PROCESS_DATA ProcessData,
PCSRSS_API_REQUEST Request)
{
HANDLE ConsoleHandle;
ConsoleHandle = ((PULONG)Request.MessageData)[0];
ProcessData.Console = CsrReferenceConsoleByHandle(ConsoleHandle);
return(STATUS_SUCCESS);
}
/* EOF */

View file

@ -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);
}
}
}

View 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 */

View 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;
}

View 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)

View file

@ -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);
}